有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。
以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。
لمساعدتك في إنشاء واجهة مستخدم تركّز على المستخدم للغات التي تراعي الجنس، يوفّر نظام التشغيل Android 14 واجهة برمجة التطبيقات Grammatical Inflection API التي تتيح لك إضافة ميزة التذكير والتأنيث بدون إعادة صياغة تطبيقك.
مثال على التصريف حسب الجنس النحوي
في اللغات التي تراعي الجنس، لا يمكن التغلب على الجنس النحوي بالطريقة نفسها التي يمكن بها التغلب عليه في اللغة الإنجليزية. على سبيل المثال، لكتابة رسالة تُعلم المستخدم بأنّه اشترك في خدمة تطبيقك، يمكنك استخدام عبارة واحدة باللغة الإنجليزية: "أنت مشترك في...".
لتقديم عبارة مماثلة باللغة الفرنسية، هناك بضعة خيارات:
- صيغة العبارة باللغة الفرنسية مع الميل إلى التأنيث: "Vous êtes abonné à..." (الإنجليزية: "أنت مشترك في...")
- صيغة المؤنث: "Vous êtes abonnée à..." (الإنجليزية: "أنت مشترك في...")
- صياغة محايدة تتجنّب الالتباس: "Abonnement à...activé" (الإنجليزية: "الاشتراك في ... مفعّل")
تمامًا كما هو الحال في اللغة الإنجليزية، يخاطب الخياران الأولان المستخدم مباشرةً. ومع ذلك، بدون أي آلية لاستيعاب هذه الميزة النحوية باللغة الفرنسية، فإنك على الخيار الثالث فقط، وهو تغيير أسلوب الرسالة قد لا يكون المحتوى الذي تريد عرضه في واجهة المستخدم لديك.
وفي هذه الحالات، تقلّل واجهة برمجة التطبيقات Grammatical Inflection API من الجهد المبذول لعرض
تناسب الجنس النحوي للمشاهد - أي الشخص الذي
عرض واجهة المستخدم، وليس مع من يتم التحدث عنه. لعرض ترجمات مخصّصة
للمستخدمين في تطبيقك، عليك إضافة ترجمات يتم فيها تغيير الصيغة لكل نوع
جنس نحوي للغات المتأثرة، ثم استخدام واجهة برمجة التطبيقات
GrammaticalInflectionManager لتعديل الترجمات التي يتم عرضها
لكل مستخدم.
وفي العديد من اللغات، ينطبق الجنس النحوي أيضًا على الأسماء العادية بالإضافة إلى للأشخاص. على سبيل المثال، في اللغة الفرنسية، تكون كلمة chaise (كرسي) مؤنّثة، في حين أنّ oiseau (طائر) تكون مذكّرة. في المواقف الأخرى بخلاف مخاطبة المستخدم، يجب عليك استخدام واجهة برمجة تطبيقات ICU SelectFormat الحالية.
تنفيذ واجهة برمجة التطبيقات
بعد أن يذكر المستخدم جنسه النحوي (على سبيل المثال، إما
من خلال قسم الإعدادات في التطبيق أو سير عمل إعداد المستخدم)، يمكنك استخدام
طريقة 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>