3 miliardy ludzi mówi językami z płcią: językami, w których kategorie gramatyczne (np. rzeczowniki, czasowniki, przymiotniki i przyimki) odmieniają się w zależności od płci osób i rzeczy, do których się zwracamy lub o których mówimy. Tradycyjnie wiele języków z płcią gramatyczną używa męskiej formy gramatycznej jako domyślnej lub uniwersalnej.
Zwracanie się do użytkowników w niewłaściwym rodzaju gramatycznym, np. do kobiet w męskim rodzaju gramatycznym, może negatywne wpłynąć na ich wyniki i postawę. Z kolei interfejs z językiem, który poprawnie odzwierciedla płeć gramatyczną użytkownika, może zwiększyć zaangażowanie użytkowników i zapewnić bardziej spersonalizowane i naturalne wrażenia.
Android 14 pomoże Ci tworzyć interfejs zorientowany na użytkownika w przypadku języków różnych płci. wprowadza interfejs Grammatical Inflection API, który umożliwia dodanie płeć gramatyczną bez refaktoryzacji aplikacji.
Przykład odmiany gramatycznej
W językach uwzględniających płeć nie można używać gramatycznej płci w taki sam sposób, jak po angielsku. Na przykład po angielsku możesz napisać wiadomość informującą użytkownika o tym, że subskrybują usługę w Twojej aplikacji, możesz użyć jednego wyrażenia: „Subskrybujesz...”.
Aby wyświetlić podobne wyrażenie w języku francuskim, możesz użyć kilku opcji:
- Postać z tekstem męskim: „Vous êtes abonné à...” (Po angielsku: „Jesteś zasubskrybował(a)...”).
- Formuła z inspiracjami żeńskimi: „Vous êtes abonnée à...” (Po angielsku: „Jesteś zasubskrybował(a)...”).
- Neutralne sformułowanie, które pozwala uniknąć odmiany: „Abonnement à...activé” (Angielski: „Subskrypcja ... włączona”)
Podobnie jak w przypadku języka angielskiego, pierwsze 2 opcje zwracają się bezpośrednio do użytkownika. Pamiętaj jednak: bez żadnego mechanizmu uwzględniania tej funkcji gramatycznej języka francuskiego, może wybrać tylko 3 opcję, która zmienia ton przekazu mogą nie być to, co chcesz widzieć w interfejsie.
W takich przypadkach interfejs Grammatical Inflection API pozwala zmniejszyć nakład pracy
od rodzaju gramatycznej płci odbiorcy, czyli osoby, która
wyświetlanie interfejsu, a nie interfejsu użytkownika. Aby wyświetlać użytkownikom spersonalizowane treści
tłumaczeń w aplikacji, dodaj takie, które będą się wyświetlać
rodzaj gramatycznej języka, którego dotyczy problem, a następnie użyć operatora
GrammaticalInflectionManager
API do określania, które tłumaczenia są wyświetlane
do każdego użytkownika.
W wielu językach, oprócz rzeczowników regularnych, rodzaj gramatyczny odnosi się też do rodzaju gramatycznego. krzywdzenia ludzi. Na przykład po francusku słowo szezlong (krzesło) jest żeńskie, a oiseau (ptak) jest męskie. W sytuacjach innych niż zwrócenie się do użytkownika może użyć dotychczasowego interfejsu API ICU SelectFormat.
Wdrażanie interfejsu API
Gdy użytkownik określi swoją płeć gramatyczną (np.
w sekcji ustawień aplikacji lub podczas procesu konfiguracji użytkownika), możesz użyć funkcji
metody setRequestedApplicationGrammaticalGender(int)
do przechowywania
w konfiguracji zasobów aplikacji.
Jeśli na przykład chcesz ustawić preferowaną płeć gramatyczną użytkownika na żeński, należy poprosić użytkownika o wybranie preferowanej formy gramatycznej. a następnie wywołaj API:
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);
Oto przykład, jak zadeklarować zmiany konfiguracji w tagu manifestu, jeśli chcesz obsługiwać je samodzielnie:
<activity android:name=".TestActivity"
android:configChanges="grammaticalGender"
android:exported="true">
</activity>
Jeśli aplikacja musi sprawdzić płeć gramatyczną w bieżącym zasobie
konfiguracji, możesz użyć metody getApplicationGrammaticalGender()
, aby go pobrać:
Kotlin
val gIM = mContext.getSystemService(GrammaticalInflectionManager::class.java) val grammaticalGender = gIM.getApplicationGrammaticalGender()
Java
GrammaticalInflectionManager gIM = mContext.getSystemService(GrammaticalInflectionManager.class); int grammaticalGender = gIM.getApplicationGrammaticalGender();
Dodaj tłumaczenia dla języków z płcią gramatyczną
Aby dodać przetłumaczony tekst dla języków ze względu na rodzaj gramatyczny, utwórz plik zasobów alternatywnych i dołącz kwalifikator płci gramatycznej. bezpośrednio po nazwie regionu dla tych języków. Tabela poniżej przedstawia możliwe wartości:
Kwalifikator | Wartość ciągu znaków | Przykład (francuski fr ) |
---|---|---|
Żeński | feminine |
res/values-fr-feminine/strings.xml |
Męski | masculine |
res/values-fr-masculine/strings.xml |
Nijaki | neuter |
res/values-fr-neuter/strings.xml |
Należy dodawać tylko ciągi tekstowe z gramatyczną zamianą płci w te pliki zasobów. Wszystkie ciągi muszą mieć wartość w zasobie domyślnym który zawiera inne zlokalizowane ciągi znaków. To domyślne tłumaczenie to wyświetla się, gdy tłumaczenie z uwzględnieniem płci jest niedostępne.
W wcześniejszym przykładzie dla języka francuskiego neutralnym sformułowaniem byłoby
wartość ciągu w zasobach domyślnych res/values-fr/strings.xml
. Poniższe fragmenty kodu pokazują formatowanie każdego pliku zasobów
uwzględnij wszystkie odmiany gramatyczne z przykładu w języku francuskim:
Żeński
Uwzględnij ciąg znaków z formą żeńską w pliku zasobów res/values-fr-feminine/strings.xml
:
<resources> ... <string name="example_string">Vous êtes abonnée à...</string> </resources>
Męski
Uwzględnij ciąg znaków z formą męską w pliku zasobów res/values-fr-masculine/strings.xml
:
<resources> ... <string name="example_string">Vous êtes abonné à...</string> </resources>
Nijaki
Umieść domyślny ciąg znaków w pliku zasobów res/values-fr/strings.xml
:
<resources> ... <string name="example_string">Abonnement à...activé</string> </resources>