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 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 Flexion eines grammatischen Geschlechts

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 Satz verwenden: „Du hast...“ abonniert.

Um eine ähnliche Wortgruppe auf Französisch bereitzustellen, haben Sie mehrere Möglichkeiten:

  • Maskulinum reflektierte Form: „Vous êtes abonné à...“ (Englisch: „Du bist abonniert...“)
  • Weibliche Form: „Vous êtes abonnée à...“ (Englisch: „Du bist abonniert...“)
  • Neutrale Formulierungen, die einen Wechsel vermeiden: „Abo à...activé“ (Englisch: „Abo für ... aktiviert“)

Ähnlich wie bei Englisch sprechen die ersten beiden Optionen die Nutzenden 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 Grammatical Inflection API den Aufwand für die Zeichenfolgen relativ zum grammatischen Geschlecht des Zuschauers, d. h. der Person, und nicht, über wen gesprochen wird. Um Nutzern personalisierte Übersetzungen in deiner App fügst du Übersetzungen hinzu, die für jede Sprache beugt sind. grammatischen Genuss für die betroffenen Sprachen und verwenden Sie dann GrammaticalInflectionManager API, um festzulegen, welche Übersetzungen angezeigt werden für jeden Nutzer.

In vielen Sprachen gilt das grammatische Geschlecht auch für reguläre Substantive für Menschen. 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 mit den Einstellungen Ihrer App oder über einen Nutzereinrichtungsworkflow), können Sie Methode setRequestedApplicationGrammaticalGender(int) zum Speichern der in der Ressourcenkonfiguration Ihrer Anwendung.

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 im Manifest-Datei, 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

Um lokalisierten Text für Sprachen mit einem bestimmten Geschlecht bereitzustellen, erstellen Sie ein Alternativressourcen und fügen Sie den grammatischen Geschlechtsqualifizierer an. direkt nach dem Namen der Sprache ein. In der folgenden Tabelle beschreibt die möglichen Werte:

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 nur Strings aufnehmen, die grammatische Geschlechtswechselungen in zu diesen Ressourcendateien. Alle Strings müssen einen Wert in der Standardressource die andere lokalisierte Strings enthält. 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 feminin geneigten 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 maskulin gebeugten 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>