What is the type of 'body'?

Is it important that the heading (“Part One: Fundamentals”) be the same element as the title page (“Fundamentals”)? If not, you could define your own function that places the heading, then places the title page:

#import "@preview/name-it:0.1.0": name-it

#let title-case(word) = {
  upper(word.slice(0, 1))
  word.slice(1)
}

#let make-title(body) = {
  set align(center + horizon)
  set text(size: 30pt)
  body
}

#let heading-and-title(body) = {
  pagebreak(weak: true)
  set align(center)
  set text(size: 12pt, weight: "regular")
  heading(body, numbering: (params) => "Part "  + title-case(name-it(params)) + ": ")
  make-title(body)
}

#outline()
#heading-and-title[Fundamentals]
#lorem(50)
== More details
#lorem(50)
#heading-and-title[Other]
#lorem(50)

This way when other parts of your document go looking for level one headings it only finds what was created by the call to heading(...) in heading-and-title().

As for counting in German, I don’t know of any Typst Universe package that does that. If you can generate the “Eins”, “Zwei”, etc… in your Python script, then you could modify heading-and-title() to accept another parameter then insert it into the numbering:

#let heading-and-title(part-num, body) = {
  pagebreak(weak: true)
  set align(center)
  set text(size: 12pt, weight: "regular")
  heading(body, numbering: (params) => "Part " + part-num + ":")
  make-title(body)
}
//Call it like this:
#heading-and-title[Zwei][Würst]