使用语法性别对应用界面进行个性化设置

有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。

以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。

Android 14 में, लिंग के हिसाब से भाषाओं के लिए उपयोगकर्ता को ध्यान में रखकर बनाया गया यूज़र इंटरफ़ेस (यूआई) बनाने में मदद करने के लिए पेश है ग्रैमैटिकल इंफ़्लेक्शन एपीआई, जिससे लैंगिक जानकारी देने के लिए.

व्याकरण के हिसाब से लैंगिक जानकारी देने के उदाहरण

लिंग के आधार पर तय की गई भाषाओं में, व्याकरण के हिसाब से लैंगिक जानकारी को उसी तरह इस्तेमाल नहीं किया जा सकता अंग्रेज़ी में कर सकते हैं. उदाहरण के लिए, उपयोगकर्ता को यह बताने के लिए कि कोई मैसेज अंग्रेज़ी में लिखा गया हो है, तो आप एक वाक्यांश का इस्तेमाल कर सकते हैं: "आपने सदस्यता ली हुई है...".

फ़्रेंच में मिलता-जुलता वाक्यांश उपलब्ध कराने के लिए, कुछ विकल्प दिए गए हैं:

  • पुल्लिंग हाव-भाव: "Vous êtes abonné à..." (अंग्रेज़ी: "आप इसकी सदस्यता ली गई...")
  • स्त्रीलिंग से प्रभावित रूप: "Vous êtes abonnée à..." (अंग्रेज़ी: "आप इसकी सदस्यता ली गई...")
  • इस तरह के वाक्यांशों में बदलाव न किया गया हो: "Abonnement à...activé" (अंग्रेज़ी: "... की सदस्यता चालू की गई")

अंग्रेज़ी की तरह ही, पहले दो विकल्प सीधे उपयोगकर्ता से संपर्क करते हैं. हालांकि, फ़्रेंच की इस व्याकरण सुविधा के बिना किसी तरीके के, आपको सिर्फ़ तीसरा विकल्प होगा, जिससे मैसेज की टोन बदलेगी और आपके यूज़र इंटरफ़ेस में ऐसा नहीं होना चाहिए.

ऐसे मामलों में, Gagramal Inflection API का इस्तेमाल करके, डिवाइस पर कम समय में कॉन्टेंट दिखाया जा सकता है स्ट्रिंग जो दर्शक के व्याकरण के लिंग से जुड़ी होती हैं—यानी वह व्यक्ति जो यूज़र इंटरफ़ेस (यूआई) देख रही है, न कि किसके बारे में बात की जा रही है. लोगों को उनकी पसंद के हिसाब से विज्ञापन दिखाने के लिए अनुवाद करने के लिए, हर अनुवाद के लिए ऐसे अनुवाद जोड़ें जो व्याकरण के हिसाब से लिंग चुनें और फिर GrammaticalInflectionManager एपीआई की मदद से, यह तय किया जा सकता है कि कौनसे अनुवाद दिखाए जाएं एक उपयोगकर्ता के तौर पर शामिल होना चाहिए.

कई भाषाओं में, व्याकरण के हिसाब से लिंग की जानकारी, सामान्य संज्ञाओं के साथ-साथ सामान्य संज्ञाओं पर भी लागू होती है लोगों को पसंद आए. उदाहरण के लिए, फ़्रेंच में चेज़ (कुर्सी) शब्द स्त्रीलिंग है, जबकि आइसो (पक्षी) पुल्लिंग होता है. उपयोगकर्ता से संपर्क करने के अलावा, आपको मौजूदा ICU SelectFormat API का इस्तेमाल किया जा सकता है.

एपीआई को लागू करना

जब उपयोगकर्ता ने व्याकरण के हिसाब से लिंग की जानकारी दे दी हो (उदाहरण के लिए, या उपयोगकर्ता सेटअप वर्कफ़्लो के ज़रिए) लिया जाता है, तो आप को सेव करने के लिए, setRequestedApplicationGrammaticalGender(int) तरीका मान को आपके ऐप्लिकेशन के संसाधन कॉन्फ़िगरेशन में होना चाहिए.

उदाहरण के लिए, अगर आपको उपयोगकर्ता की पसंद के हिसाब से लिंग की जानकारी को स्त्रीलिंग के लिए, आपको उस उपयोगकर्ता से यह चुनने के लिए कहना होगा कि वह किस लिंग के व्याकरण को पसंद करे और फिर एपीआई को कॉल करें:

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

यहां आपके ऐप्लिकेशन के कॉन्फ़िगरेशन बदलावों का एलान करने के तरीके का उदाहरण दिया गया है अगर आप उन्हें खुद हैंडल करना चाहते हैं, तो मेनिफ़ेस्ट फ़ाइल में नीचे दिया गया तरीका अपनाएं:

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

अगर आपके ऐप्लिकेशन को मौजूदा संसाधन में व्याकरण के हिसाब से लिंग की जांच करनी है कॉन्फ़िगरेशन के लिए, आप getApplicationGrammaticalGender() तरीके का इस्तेमाल कर सकते हैं इसे वापस पाने के लिए:

Kotlin

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

Java

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

लिंग के व्याकरण के हिसाब से भाषाओं के लिए अनुवाद जोड़ें

व्याकरण के हिसाब से लिंग वाली भाषाओं के लिए स्थानीय भाषा में टेक्स्ट उपलब्ध कराने के लिए, एक वैकल्पिक संसाधनों की फ़ाइल और व्याकरण के हिसाब से लिंग क्वालिफ़ायर जोड़ें उन भाषाओं के लिए स्थान-भाषा नाम के तुरंत बाद. नीचे दी गई टेबल संभावित वैल्यू को दिखाता है:

क्वालिफ़ायर स्ट्रिंग मान उदाहरण (फ़्रेंच fr)
महिला feminine res/values-fr-feminine/strings.xml
पुरुष masculine res/values-fr-masculine/strings.xml
नपुंसक लिंग neuter res/values-fr-neuter/strings.xml

आपको सिर्फ़ ऐसी स्ट्रिंग शामिल करनी चाहिए जो लिंग के व्याकरण के हिसाब से सही हों इन संसाधनों फ़ाइलों को डाउनलोड करें. डिफ़ॉल्ट संसाधन में सभी स्ट्रिंग का एक मान होना चाहिए ऐसी फ़ाइल जिसमें अन्य स्थानीय जगह के मुताबिक स्ट्रिंग शामिल हैं. यह डिफ़ॉल्ट अनुवाद है लिंग के हिसाब से अनुवाद उपलब्ध न होने पर दिखाया जाता है.

पहले फ़्रेंच के लिए दिए गए उदाहरण में, न्यूट्रल वाक्यांश का इस्तेमाल यह होगा डिफ़ॉल्ट संसाधन res/values-fr/strings.xml में स्ट्रिंग का मान फ़ाइल से लिए जाते हैं. नीचे दिए गए कोड स्निपेट दिखाते हैं कि हर रिसॉर्स फ़ाइल को किस तरह फ़ॉर्मैट किया जाएगा उदाहरण के तौर पर दिए गए व्याकरण के सभी वैरिएशन को फ़्रेंच में शामिल करने के लिए:

महिला

res/values-fr-feminine/strings.xml रिसॉर्स फ़ाइल में, स्त्रीलिंग से जुड़ी स्ट्रिंग शामिल करें:

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

पुरुष

res/values-fr-masculine/strings.xml रिसॉर्स फ़ाइल में, पुल्लिंग वाली स्ट्रिंग शामिल करें:

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

नपुंसक लिंग

res/values-fr/strings.xml संसाधन फ़ाइल में डिफ़ॉल्ट स्ट्रिंग शामिल करें:

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