0xffffffff schrieb:
Das hab ich dir oben bereits geschrieben. Während du deinen Quirks im Template umsetzt und für jede Sprache mit jeglicher Besonderheit einen weiteren Fall rein bringst, der vielleicht bei 90 % aller restlichen Sprachen irrelevant ist und du doppelt, dreifach und vierfach Code warten musst, geht das mit ICU Patterns problemlos.
0xffffffff schrieb:
Oder etwas vereinfachter...
Oder ganz einfach:
Code:
<div>
{{ translate text_xy locale=de_DE gender_of_host=user.gender num_guests=event.guestCount host=event.host guest=event.guest|first }}
</div>
o.ä.
0xffffffff schrieb:
Am Ende ist es doch reine Geschmackssache.
Nein. Du musst deinen Code mit jeder weiteren Sprache ggf. noch weiter anpassen. Ich geb in ICU Variablen mit und die Übersetzung/der Übersetzer kümmert sich drum. Typisches separation of concerns eben. Dein Template hat nicht in der Übersetzung zu pfuschen und schon gar nicht sollte es irgend ein stupides, ggf. gar nicht funktionierendes Markup für die (damit nicht sauber mögliche?) Übersetzung vorgeben.
Beispiel für eine Pluralform aus dem Polnischen mit gettext:
https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html (plik = file)
Code:
1 plik
2,3,4 pliki
5-21 pliko'w
22-24 pliki
25-31 pliko'w
Pluralformen in gettext:
Deutsch, Englisch, ... | nplurals=2; plural=n != 1 |
Polnisch | nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2 |
Arabisch | nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5 |
Machst du jetzt insgesamt sechs Fälle in deinem Template auf, damit du auch problemlos arabisch bedienen kannst? Oder substituierst du und setzt sie als Solches in eine umfassendere (nochmal mit ebenso vielen Plathaltern versehene) Übersetzung ein? Aber bei den sechs Fallunterscheidungen bleibts ja nicht, du musst ja jede Sprache bedienen können:
Mal Copy'n'Paste von der Seite:
CJK | Only one form |
Deutsch | Two forms, singular used for one only |
Brasilianisch, Französisch | Two forms, singular used for zero and one |
Lettisch | Three forms, special case for zero |
Gälisch | Three forms, special cases for one and two |
Rumänisch | Three forms, special case for numbers ending in 00 or [2-9][0-9] |
Litauisch | Three forms, special case for numbers ending in 1[2-9] |
Russisch, Kroatisch, Serbisch, Ukrainisch | Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4] |
Tschechisch, Slovakisch | Three forms, special cases for 1 and 2, 3, 4 |
Slovenisch | Four forms, special case for one and all numbers ending in 02, 03, or 04 |
Arabisch | Six forms, special cases for one, two, all numbers ending in 02, 03, … 10, all numbers ending in 11 … 99, and others |
Oh es graust mir jetzt schon und die Übersetzer freuen sich ebenso...
Sie haben erfolgreich 1 Dokumente hochgeladen.
Es ist 2019, Lösungen existieren und es ist wahrlich nicht zu viel verlangt ne ordentliche Übersetzung zu liefern, wenn man es bereits mehrsprachig anbieten will.
0xffffffff schrieb:
Letztendlich steht und fällt die Übersetzungsqualität mit den Variabeln/Informationen die ein Übersetzer nutzen kann, hier liegt m.E. häufig das größte Problem.
Genau und mit deiner Übersetzung sind ihm (dem Übersetzer) nur die Möglichkeiten gegeben, die du ihm mittels Marker zusammensetzt. Gibts dann nen weiteren "Sonderfall", der in einer Sprache berücksichtigt werden muss, musst du deine gesamte Codebase anpassen und ebenso die anderen Sprachen erneut überarbeiten, nur weil polnisch einen Sonderfall hat, den keine andere Sprache besitzt. So ist es Sache der Übersetzung.
0xffffffff schrieb:
Welche Lib dann Platzhalter ersetzt und wie dessen Syntax aussieht ändert daran doch wenig.
Platzhalter... Siehe oben.