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ızcada benzer bir ifade sağlamak için birkaç seçeneğiniz vardır:

  • Eril çekimli biçim: "Vous êtes abonné à..." (İngilizce: "Sizi, abone olundu...")
  • Dişil etki: "Vous êtes abonnée à..." (İngilizce: "Sizi, abone olundu...")
  • 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.

Dil bilgisiyle ilişkili cinsiyet, birçok dilde normal isimler için de geçerlidir. teslim etmeyi amaçlar. Örneğin, Fransızcada uzanma (koltuk) kelimesi kadınken, oiseau (kuş) erildir. Kullanıcıya hitap etmek dışındaki durumlarda mevcut ICU SelectFormat API'sini kullanabilir.

API'yi uygulama

Kullanıcı dil bilgisine uygun cinsiyetini belirttikten sonra (örneğin, uygulamanızın ayarlar bölümünden veya kullanıcı kurulumu iş akışı üzerinden) setRequestedApplicationGrammaticalGender(int) yöntemini kullanarak değerini belirleyebilirsiniz.

Örneğin, bir kullanıcının tercih ettiği dil bilgisi cinsiyetini bir kadın olduğunu varsayalım. Kullanıcıdan hangi dil bilgisine sahip cinsiyeti tercih ettiğini ve ardından API'yi çağırın:

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 manifest dosyanızı kendiniz işlemeyi seçebilirsiniz:

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

Cinsiyet bilgisi içeren diller için çeviri ekleme

Dil bilgisine uygun cinsiyet içeren diller için yerelleştirilmiş metin sağlamak amacıyla bir alternatif kaynaklar dosyasını ve dil bilgisine uygun cinsiyet niteleyicisini o dillerin yerel ayarının hemen sonrasına eklenir. Aşağıdaki tablo olası değerleri özetler:

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 çeviri kullanılabilir 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şil çekimli dizeyi res/values-fr-feminine/strings.xml kaynaklar 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 dahil edin:

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