3 Milliarden Menschen sprechen geschlechterspezifische Sprachen: Sprachen, in denen grammatische Kategorien wie Substantive, Verben, Adjektive und Präpositionen je nach Geschlecht der Personen und Objekte, mit denen oder über die gesprochen wird, konjugiert werden. Traditionell wird in vielen Sprachen mit Geschlechtern das männliche grammatische Geschlecht als Standard- oder generisches Geschlecht verwendet.
Wenn Sie Nutzer im falschen grammatischen Geschlecht ansprechen, z. B. Frauen im maskulinen grammatischen Geschlecht, kann sich das negativ auf ihre Leistung und Einstellung auswirken. Eine Benutzeroberfläche mit einer Sprache, die das grammatische Geschlecht des Nutzers korrekt widerspiegelt, kann das Nutzer-Engagement verbessern und eine personalisiertere und natürlicher klingende Nutzererfahrung bieten.
Damit Sie eine nutzerorientierte Benutzeroberfläche für geschlechtsspezifische Sprachen entwickeln können, wurde Android 14 die Grammatical Inflection API, mit der Sie Unterstützung für generatives Geschlecht ohne Refaktorierung der App.
Beispiel für die Beugung nach grammatischem Geschlecht
In geschlechtsspezifischen Sprachen kann das grammatische Geschlecht nicht auf dieselbe Weise behandelt werden wie auf Englisch. Zum Beispiel, um den Nutzer auf Englisch Ihren App-Dienst abonniert haben, können Sie einen einzelnen Satz verwenden: „Du hast...“ abonniert.
Um eine ähnliche Wortgruppe auf Französisch bereitzustellen, haben Sie mehrere Möglichkeiten:
- Maskulin: „Vous êtes abonné à...“ (Englisch: „Du bist abonniert...“)
- Feminine Form: „Vous êtes abonnée à...“ (Englisch: „Du bist abonniert...“)
- Neutrale Formulierungen, die einen Wechsel vermeiden: „Abo à...activé“ (Englisch: „Abo für ... aktiviert“)
Ähnlich wie im Englischen sprechen die ersten beiden Optionen den Nutzer direkt an. Sie können jedoch ohne einen Mechanismus zur Anpassung an dieses grammatikalische Merkmal des Französischen zu haben, nur die dritte Option, bei der der Ton der Nachricht geändert nicht das ist, was Sie auf Ihrer Benutzeroberfläche anzeigen möchten.
In diesen Fällen reduziert die Grammatische Flexions-API den Aufwand für die Anzeige von Strings in Bezug auf das grammatische Geschlecht des Betrachters – also der Person, die sich die Benutzeroberfläche ansieht, nicht der Person, über die gesprochen wird. Wenn Sie Nutzern personalisierte Übersetzungen in Ihrer App anzeigen möchten, fügen Sie für die betroffenen Sprachen Übersetzungen hinzu, die für jedes grammatische Geschlecht konjugiert sind. Verwenden Sie dann die GrammaticalInflectionManager
API, um festzulegen, welche Übersetzungen für jeden Nutzer angezeigt werden.
In vielen Sprachen gilt das grammatische Geschlecht nicht nur für Personen, sondern auch für normale Substantive. Das Wort „Caise (Stuhl)“ im Französischen ist beispielsweise feminin, während Oiseau (Vogel) ist männlich. In anderen Situationen können Sie kann die vorhandene ICU SelectFormat API verwenden.
API implementieren
Nachdem der Nutzer sein grammatisches Geschlecht angegeben hat (z. B. über einen Bereich „Einstellungen“ in Ihrer App oder einen Workflow zur Nutzereinrichtung), können Sie den Wert mit der Methode setRequestedApplicationGrammaticalGender(int)
in der Ressourcenkonfiguration Ihrer App speichern.
Wenn Sie beispielsweise das bevorzugte grammatische Geschlecht eines Nutzers auf weiblich ist, würden Sie die Nutzenden bitten, das grammatische Geschlecht auszuwählen, das sie bevorzugen. und dann die API aufrufen:
Kotlin
// Set app's grammatical gender to feminine val gIM = mContext.getSystemService(GrammaticalInflectionManager::class.java) gIM.setRequestedApplicationGrammaticalGender( Configuration.GRAMMATICAL_GENDER_FEMININE)
Java
// Set app's grammatical gender to feminine GrammaticalInflectionManager gIM = mContext.getSystemService(GrammaticalInflectionManager.class); gIM.setRequestedApplicationGrammaticalGender( Configuration.GRAMMATICAL_GENDER_FEMININE);
Hier ist ein Beispiel dafür, wie Sie Konfigurationsänderungen in der Manifestdatei Ihrer App deklarieren, wenn Sie sie selbst verarbeiten möchten:
<activity android:name=".TestActivity"
android:configChanges="grammaticalGender"
android:exported="true">
</activity>
Ob Ihre App das grammatische Geschlecht in der aktuellen Ressource ermitteln muss
Konfiguration verwenden, können Sie die Methode getApplicationGrammaticalGender()
verwenden,
um sie abzurufen:
Kotlin
val gIM = mContext.getSystemService(GrammaticalInflectionManager::class.java) val grammaticalGender = gIM.getApplicationGrammaticalGender()
Java
GrammaticalInflectionManager gIM = mContext.getSystemService(GrammaticalInflectionManager.class); int grammaticalGender = gIM.getApplicationGrammaticalGender();
Übersetzungen für Sprachen mit grammatischem Geschlecht hinzufügen
Wenn Sie lokalisierten Text für Sprachen mit grammatischem Geschlecht bereitstellen möchten, erstellen Sie eine Datei mit alternativen Ressourcen und hängen Sie den Qualifier für das grammatische Geschlecht direkt an den Namen der Sprache an. In der folgenden Tabelle sind die möglichen Werte aufgeführt:
Qualifier | Stringwert | Beispiel (Französisch fr ) |
---|---|---|
Feminin | feminine |
res/values-fr-feminine/strings.xml |
Maskulin | masculine |
res/values-fr-masculine/strings.xml |
Neutrum | neuter |
res/values-fr-neuter/strings.xml |
Fügen Sie in diesen Ressourcendateien nur Strings ein, die die Beugung nach Geschlecht unterstützen. Alle Strings müssen in der Standardressourcendatei, die andere lokalisierte Strings enthält, einen Wert haben. Diese Standardübersetzung ist wird angezeigt, wenn keine geschlechtsspezifische Übersetzung verfügbar ist.
In dem vorherigen Beispiel für Französisch lautet die neutrale Formulierung wie folgt:
Wert des Strings in den Standardressourcen res/values-fr/strings.xml
-Datei. Die folgenden Code-Snippets zeigen, wie jede Ressourcendatei formatiert wird.
um alle grammatikalischen Variationen aus dem Beispiel auf Französisch zu berücksichtigen:
Feminin
Fügen Sie den String im Femininum in die Ressourcendatei res/values-fr-feminine/strings.xml
ein:
<resources> ... <string name="example_string">Vous êtes abonnée à...</string> </resources>
Maskulin
Fügen Sie den maskulinen String in die Ressourcendatei res/values-fr-masculine/strings.xml
ein:
<resources> ... <string name="example_string">Vous êtes abonné à...</string> </resources>
Neutrum
Fügen Sie den Standardstring in die Ressourcendatei res/values-fr/strings.xml
ein:
<resources> ... <string name="example_string">Abonnement à...activé</string> </resources>