← Konzepte

Genusübereinstimmung

Manche Sprachen flektieren Verben und Adjektive nach dem Geschlecht der Person, um die es in einem Satz geht. Im Englischen ist das meist nicht der Fall, daher ist eine Phrase, die Sie als {username} has been invited schreiben, im Englischen ein Satz, im Spanischen, Französischen oder Russischen aber zwei oder drei. Langsys übernimmt das bei der Übersetzung – genauso wie die Erzeugung der Pluralformen – und Sie übergeben nur ein Argument.

Ansehen · 0:39 Genus-Kongruenz

Was die Pipeline erzeugt

Wenn eine Zielsprache Kongruenz erfordert, schreibt Langsys den String dieser Locale in die benötigten Zweige um – ein ICU-select. Ihre Quellphrase ändert sich nie, und Sie schreiben die Zweige nie von Hand.

Das schreiben Sie nie selbst – das übernimmt die Pipeline
// Your source phrase, unchanged:
"{username} has been invited"

// What the Spanish translation becomes — note invitado / invitada:
"{username_gender, select, male {{username} ha sido invitado} \
female {{username} ha sido invitada} \
other {{username} ha sido invitado/a}}"

Zwei Konsequenzen, die man verinnerlichen sollte. Das Argument wird nach der Variablen benannt, mit der es flektiert wird, ergänzt um _gender – aus {username} wird username_gender – und die Zweige sind immer male, female, other. Außerdem erscheint es nur in den Sprachen, die es benötigen: Das fällt erst auf, wenn jemand die App in einer Sprache mit grammatischem Geschlecht lädt.

Übergabe

Übergeben Sie das Argument, sobald Sie es kennen, und die Leser erhalten den korrekt flektierten Satz:

// The argument is named after the variable it inflects, + _gender.
// Branches are always male / female / other.
t('{username} has been invited', 'Team', {
  username: user.name,
  username_gender: user.gender ?? 'other',
});

Sie kennen das Geschlecht nicht? Übergeben Sie 'other' explizit – das ist der neutrale Zweig. Was bei einem fehlenden Argument ausgegeben wird, hängt vom SDK ab; die jeweilige SDK-Seite sagt es Ihnen. Jede SDK-Seite zeigt außerdem den Aufruf in der jeweils eigenen Schreibweise.

Welche Phrasen brauchen das?

Aus deinem eigenen Code lässt sich das nicht erkennen, und das liegt in der Natur der Sache: Das Argument wird bei der Übersetzung pro Zielsprache hinzugefügt, daher gibt es weder in der Quellphrase noch in deiner Codebasis einen Hinweis darauf. Es gibt drei Möglichkeiten, es herauszufinden.

Lies den Katalog. Die Übersetzungen, die deine App abruft, sind die freigegebenen Strings, die Antwort liegt also bereits im Client. Lade den Katalog für eine von dir unterstützte Locale – jedes SDK stellt ihn bereit – und suche nach Einträgen, die , select, enthalten. So erhältst du die genauen Ausdrücke und Argumentnamen, und der Vorgang ist so günstig, dass er sich in der CI für jede ausgelieferte Locale ausführen lässt.

// The catalog your app fetches IS the promoted strings — grep it.
const wanting = Object.entries(catalog)
  .filter(([, translation]) => translation.includes(', select,'))
  .map(([phrase]) => phrase);
// → every phrase (and, from the string, every argument) this locale needs

Debug aktivieren (JavaScript-SDKs). Übergeben Sie debug: true in Ihrer Init-Konfiguration und rufen Sie die App in einer Locale mit grammatischem Geschlecht auf: Das SDK protokolliert pro Phrase, deren Übersetzung ein nicht übergebenes Argument erwartet, eine Langsys Warning und nennt das Argument. Das geschieht einmal pro Phrase und Locale und ist in der Produktion deaktiviert. Eine Besonderheit: Innerhalb der Inhaltsblock- und Phrase-Komponenten wird ein vorsorglich übergebenes _gender selbst als nicht zugeordneter Parameter gemeldet, da diese Prüfung gegen Ihren Quelltext läuft – in dem das select nie vorkommt.

Im Zweifel übergeben. Ein Wert für ein Argument, das der String nicht enthält, wird beim Rendern ignoriert. Wenn Sie also für jede personenbezogene Variable _gender mitsenden, ist das unbedenklich und deckt auch die Locales ab, die Sie sich noch nicht angesehen haben.

Eine Variable pro Phrase. Nur eine Variable kann die Übereinstimmung steuern. Ein String, in dem zwei Variablen das tun – eine Anzahl und ein Geschlecht –, bleibt unverändert, statt in verschachteltes ICU umgewandelt zu werden, und wird daher als einzelner flacher Satz übersetzt.

Dokumentation & Learning Center durchsuchen