Dil bilgisi cinsiyetiyle uygulamanızın kullanıcı arayüzünü kişiselleştirme

3 milyar insan cinsiyete dayalı diller konuşuyor: İsim, fiil, sıfat ve edat gibi dil bilgisi kategorilerinin, konuştuğunuz veya bahsettiğiniz kişilerin ve nesnelerin cinsiyetine göre değiştiği diller. Cinsiyetli dillerin çoğunda, geleneksel olarak varsayılan veya genel cinsiyet olarak eril dil bilgisi cinsiyeti kullanılır.

Kullanıcılara yanlış dil bilgisi cinsiyetiyle hitap etmek (ör. kadınları eril dil bilgisi cinsiyetiyle hitap etmek) performanslarını ve tutumlarını olumsuz yönde etkileyebilir. Buna karşılık, kullanıcının dil bilgisi açısından cinsiyetini doğru yansıtan bir kullanıcı arayüzü, kullanıcı etkileşimini artırabilir ve daha kişiselleştirilmiş ve doğal bir kullanıcı deneyimi sunabilir.

Cinsiyet bilgisi içeren dillerde kullanıcı merkezli bir kullanıcı arayüzü oluşturmanıza yardımcı olmak için Android 14 Grammatal Inflection API'yi kullanıma sunan bu özellik sayesinde, uygulamanızı yeniden düzenlemeden, dilbilgisi açısından cinsiyet

Dil bilgisine dayalı cinsiyet biçimi örneği

Cinsiyet belirten dillerde dil bilgisi, cinsiyet bunu İngilizcede yapabiliriz. Örneğin, İngilizce dilinde, kullanıcıya bir açıklama uygulamanızın hizmetine abone olduklarını belirtecek olursak tek bir ifade kullanabilirsiniz: "Şu podcast'e abone oldunuz:".

Fransızca benzer bir ifade sağlamak için birkaç seçenek vardır:

  • Eril çekimli form: "Vous êtes abonné à..." (İngilizce: "Sizi, abone olundu...")
  • Dişil etki: "Vous êtes abonnée à..." (İngilizce: "...abonesiniz.")
  • Sabıkadan kaçınan, nötr ifadeler: "Abonnement à...activé" (İngilizce: "... aboneliği etkin")

İngilizcede olduğu gibi ilk iki seçenekte doğrudan kullanıcıya hitap edilir. Ancak, Fransızca'nın bu dil bilgisi özelliğini barındıracak herhangi bir mekanizma olmadan, yalnızca üçüncü seçeneğe sahiptir. Bu seçenek mesajın üslubunu değiştirir ve kullanıcı arayüzünde görüntülemek istediğiniz şey olmayabilir.

Bu durumlarda Grammatal Inflection API, reklamlarınızı görüntülemek için görüntüleyenin dilbilgisi açısından cinsiyetine göre dizeler kullanıcı arayüzünü görüntülemek. Kullanıcılara kişiselleştirilmiş reklamlar göstermek uygulamanızda ayarlı çevirileri her biri için çevrilmiş çeviriler dilbilgisi kurallarınıkullanın ve ardından Hangi çevirilerin gösterileceğini ayarlamak için GrammaticalInflectionManager API'yi kullanın her kullanıcıya otomatik olarak sunulur.

Birçok dilde dil bilgisi açısından cinsiyet, insanlara ek olarak normal isimler için de geçerlidir. Örneğin, Fransızcada chaise (sandalye) kelimesi dişil, oiseau (kuş) kelimesi ise erildir. Kullanıcıya hitap etmek dışındaki durumlarda mevcut ICU SelectFormat API'sini kullanabilir.

API'yi uygulama

Kullanıcı dil bilgisi açısından cinsiyetini belirttikten sonra (örneğin, uygulamanızın ayarlar bölümünden veya kullanıcı kurulumu iş akışında) değeri uygulamanızın kaynaklar yapılandırmasında depolamak için setRequestedApplicationGrammaticalGender(int) yöntemini kullanabilirsiniz.

Örneğin, bir kullanıcının tercih ettiği dil bilgisi cinsiyetini dişi olarak ayarlamak istiyorsanız kullanıcıdan tercih ettiği dil bilgisi cinsiyetini seçmesini ister ve ardından API'yi çağırırsınız:

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);

Uygulamanızın manifesto dosyasını yükleyin:

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

Uygulamanızın, mevcut kaynakta dil bilgisine göre cinsiyeti kontrol etmesi gerekiyorsa Bunun için getApplicationGrammaticalGender() yöntemini kullanabilirsiniz almak için:

Kotlin

val gIM = mContext.getSystemService(GrammaticalInflectionManager::class.java)
val grammaticalGender = gIM.getApplicationGrammaticalGender()

Java

GrammaticalInflectionManager gIM =
    mContext.getSystemService(GrammaticalInflectionManager.class);
int grammaticalGender = gIM.getApplicationGrammaticalGender();

Dil bilgisine uygun cinsiyet içeren diller için çeviri ekleme

Dil bilgisi açısından cinsiyete sahip diller için yerelleştirilmiş metin sağlamak istiyorsanız alternatif bir kaynak dosyası oluşturun ve dil bilgisi açısından cinsiyet belirteci, bu dillerin yerel ayar adından hemen sonra eklenmelidir. Aşağıdaki tabloda olası değerler özetlenmiştir:

Niteleyici Dize değeri Örnek (Fransızca fr)
Kadın feminine res/values-fr-feminine/strings.xml
Erkek masculine res/values-fr-masculine/strings.xml
Cinsiyetsiz neuter res/values-fr-neuter/strings.xml

Yalnızca dil bilgisi bakımından cinsiyet çekimlerini destekleyen bu kaynak dosyalarını da kullanabilirsiniz. Tüm dizeler, varsayılan kaynakta bir değere sahip olmalıdır dosyası oluşturun. Bu varsayılan çeviri, cinsiyete göre uyarlanmış çeviri mevcut olmadığında gösterilir.

Daha önce Fransızca için sağlanan örnekte nötr ifade şöyle olur: res/values-fr/strings.xml varsayılan kaynaklarındaki dize değeri dosyası olarak kaydedebilirsiniz. Aşağıdaki kod snippet'leri, her kaynak dosyasının nasıl biçimlendirileceğini gösterir kodunu ekleyin:

Kadın

Dişi çekimli dizeyi res/values-fr-feminine/strings.xml kaynak dosyasına ekleyin:

<resources>
    ...
    <string name="example_string">Vous êtes abonnée à...</string>
</resources>

Erkek

Eril çekimli dizeyi res/values-fr-masculine/strings.xml kaynak dosyasına ekleyin:

<resources>
    ...
    <string name="example_string">Vous êtes abonné à...</string>
</resources>

Cinsiyetsiz

Varsayılan dizeyi res/values-fr/strings.xml kaynakları dosyasına ekleyin:

<resources>
    ...
    <string name="example_string">Abonnement à...activé</string>
</resources>