व्याकरण के हिसाब से लिंग के आधार पर, अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक बनाना

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

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

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

व्याकरण के हिसाब से लिंग के लिए, अपने हिसाब से जेंडर चुनने का उदाहरण

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

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

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

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

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

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