Personalisiere die Benutzeroberfläche deiner App mit grammatischem Geschlecht

3 Milliarden Menschen sprechen Geschlechtssprachen: Sprachen, in denen sich grammatische Kategorien wie Substantive, Verben, Adjektive und Präpositionen nach dem Geschlecht der Personen und Objekte widerspiegeln, mit denen Sie sprechen oder über die Sie sprechen. Traditionell wird in vielen geschlechtsspezifischen Sprachen das männliche grammatische Genus als Standardgenerierung oder generisches Geschlecht verwendet.

Wenn Sie Nutzer mit dem falschen grammatikalischen Geschlecht ansprechen, z. B. Frauen im männlichen grammatikalischen Geschlecht, kann sich dies negativ auf Leistung und Einstellung auswirken. Im Gegensatz dazu kann eine Benutzeroberfläche mit einer Sprache, die das grammatikalische Geschlecht des Nutzers korrekt wiedergibt, die Nutzerinteraktion verbessern und eine personalisiertere und natürlich klingende Nutzererfahrung bieten.

Damit Sie eine nutzerorientierte UI für geschlechtsspezifische Sprachen erstellen können, wird in Android 14 die Grammatical Inflection API eingeführt. Damit können Sie grammatische Geschlechter unterstützen, ohne Ihre App refaktorieren zu müssen.

Beispiel für den Flexibel des Genus

In geschlechtsspezifischen Sprachen kann das grammatische Genus nicht auf die gleiche Weise umgangen werden wie auf Englisch. Wenn Sie beispielsweise auf Englisch eine Nachricht schreiben möchten, in der der Nutzer darüber informiert wird, dass er den Dienst Ihrer Anwendung abonniert hat, könnten Sie den folgenden Satz verwenden: „Sie haben...“.

Es gibt mehrere Möglichkeiten, eine ähnliche Wortgruppe auf Französisch zu erstellen:

  • Männliche Sprechweise: „Vous êtes abonné à...“ (Englisch: "You are subscriptiond to...")
  • Weiblich gebeugte Form: „Vous êtes abonnée à...“ (Englisch: "You are subscriptiond to...")
  • Neutrale Formulierung, die Leichtigkeit vermeidet: "Abo à...activé"

Ähnlich wie bei der englischen Ausrichtung sprechen die ersten beiden Optionen direkt an den Nutzer. Ohne einen Mechanismus zur Anpassung dieser grammatikalischen Funktion des Französischen hätten Sie jedoch nur die dritte Option, die den Ton der Nachricht ändert und möglicherweise nicht dem entspricht, was Sie in Ihrer Benutzeroberfläche anzeigen möchten.

In diesen Fällen verringert die Grammatical Inflection API den Aufwand, Strings im Verhältnis zum grammatischen Geschlecht des Betrachters anzuzeigen – d. h. der Person, die die Benutzeroberfläche sieht, und nicht der Person, über die gesprochen wird. Damit Nutzern personalisierte Übersetzungen in Ihrer App angezeigt werden können, müssen Sie für die betroffenen Sprachen Übersetzungen hinzufügen, die für jedes grammatische Genus fugisch korrekt sind. Anschließend können Sie mit der GrammaticalInflectionManager API anpassen, welche Übersetzungen für die einzelnen Nutzer angezeigt werden.

In vielen Sprachen gilt das grammatische Genus neben den Menschen auch für reguläre Substantive. Im Französischen ist beispielsweise das Wort Chaise (Stuhl) feminin, während Oiseau (Vogel) männlich ist. Für andere Situationen als zum Ansprechen des Nutzers können Sie die vorhandene ICU SelectFormat API verwenden.

API implementieren

Nachdem der Nutzer sein grammatikalisches Geschlecht angegeben hat, z. B. über einen Einstellungsbereich Ihrer App oder einen Workflow zur Nutzereinrichtung, können Sie die Methode setRequestedApplicationGrammaticalGender(int) verwenden, um den Wert in der Ressourcenkonfiguration Ihrer App zu speichern.

Wenn Sie beispielsweise das bevorzugte grammatische Genus eines Nutzers auf „feminine“ setzen möchten, bitten Sie den Nutzer, das gewünschte Genus auszuwählen und dann die API aufzurufen:

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 vornehmen möchten:

<activity android:name=".TestActivity"
              android:configChanges="grammaticalGender"
              android:exported="true">
</activity>

Wenn Ihre App das Genus in der aktuellen Ressourcenkonfiguration prüfen muss, können Sie es mit der Methode getApplicationGrammaticalGender() abrufen:

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 grammatischen Gender-Qualifier direkt nach dem Sprachnamen für diese Sprachen an. In der folgenden Tabelle sind die möglichen Werte aufgeführt:

Qualifikation 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

Sie sollten in diese Ressourcendateien nur Strings aufnehmen, die grammatikalisch-geschlechtliche Beugungen unterstützen. Alle Strings müssen in der Standardressourcendatei, die andere lokalisierte Strings enthält, einen Wert haben. Diese Standardübersetzung wird angezeigt, wenn keine geschlechtsspezifische Übersetzung verfügbar ist.

In dem vorhin bereitgestellten Beispiel für Französisch wäre die neutrale Formulierung der Wert des Strings in der Datei res/values-fr/strings.xml der Standardressourcen. Die folgenden Code-Snippets zeigen, wie jede Ressourcendatei so formatiert wäre, dass alle grammatischen Varianten aus dem Beispiel im Französischen berücksichtigt werden:

Feminin

Fügen Sie den feminin gebeugten String 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>