3 billion people speak gendered languages: languages where grammatical categories—such as nouns, verbs, adjectives, and prepositions—inflect according to the gender of people and objects you talk to or about. Traditionally, many gendered languages use masculine grammatical gender as the default or generic gender.
Addressing users in the wrong grammatical gender, such as addressing women in masculine grammatical gender, can negatively impact their performance and attitude. In contrast, a UI with language that correctly reflects the user's grammatical gender can improve user engagement and provide a more personalized and natural-sounding user experience.
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>