تخصيص واجهة مستخدم تطبيقك حسب الجنس النحوي

يتحدّث 3 مليارات شخص لغات جنسانية: وهي لغات تتغيّر فيها فئاتها النحوية، مثل الأسماء والأفعال والصفات وحروف الجر، وفقًا للجنس الذي يحدّده الشخص أو الشيء الذي تتحدث عنه. في العادة، تستخدم العديد من اللغات التي تراعي الجنس النوع النحوي الذكوري كجنس تلقائي أو عام.

يمكن أن يؤدي استخدام الجنس النحوي غير الصحيح للمستخدمين، مثل مخاطبة النساء باستخدام الجنس النحوي للذكور، إلى التأثير سلبًا في أدائهم وسلوكهم. في المقابل، يمكن أن يؤدي استخدام واجهة مستخدم تتضمّن لغة تمثل بشكلٍ صحيح الجنس النحوي للمستخدم إلى تحسين تفاعله مع التطبيق وتوفير تجربة أكثر تخصيصًا وطبيعية.

لمساعدتك في إنشاء واجهة مستخدم تركّز على المستخدم للغات التي تراعي الجنس، يوفّر نظام التشغيل 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>