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

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

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

כדי לעזור לך לפתח ממשק משתמש ממוקד-משתמש לשפות לפי מגדר, Android 14 מציגה את Grammatical Inflection API, שמאפשר להוסיף תמיכה דקדוק דקדוקי בלי להגדיר את האפליקציה מחדש.

דוגמה להטיה בהקשר של מגדר דקדוקי

בשפות לפי מגדר, לא ניתן להשתמש במגדר דקדוקי באותו אופן כמו אפשר לקבל אותו באנגלית. לדוגמה, באנגלית, לכתוב הודעה למשתמש שהם מנויים לשירות של האפליקציה שלכם, אפשר להשתמש במשפט אחד: "נרשמת כמנוי ל...".

יש כמה דרכים ליצור ביטוי דומה בצרפתית:

  • צורת זכר: "Vous êtes abonné à... " (אנגלית: "אתם נרשמת ל...)
  • צורת נקבה: 'Vous êtes abonnée à...' (אנגלית: "אתם נרשמת ל...)
  • ניסוח ניטרלי כדי למנוע הטיה: "Abonnement à...activé" (באנגלית: "המינוי ל ... מופעל")

בדומה לאנגלית, שתי האפשרויות הראשונות מפנות ישירות למשתמש. אבל, לפעמים ללא מנגנון כדי להתאים לתכונה דקדוקית של צרפתית, תהיה רק האפשרות השלישית, שמשנה את סגנון ההודעה שונה ממה שהייתם רוצים להציג בממשק המשתמש שלכם.

במקרים כאלה, ה-Grammatical Inflection API מפחית את המאמץ להציג מחרוזות ביחס למגדר הדקדוקי של הצופה - כלומר, לצפות בממשק המשתמש, לא על מי מדברים עליו. כדי להציג למשתמשים מודעות בהתאמה אישית תרגומים באפליקציה, להוסיף תרגומים עם היטל התאמה לכל אחד מהם מגדר דקדוקי בשפות המושפעות, ולאחר מכן להשתמש GrammaticalInflectionManager API להגדרת התרגומים שיוצגו לכל משתמש.

בשפות רבות, המגדר הדקדוקי חל גם על שמות עצם רגילים לאנשים. לדוגמה, בצרפתית המילה 'כיסאות' היא נקבה, אבל oiseau (ציפור) הוא זכר. במצבים אחרים מלבד פנייה למשתמש, יכול להשתמש ב-API הקיים של ICU SelectFormat.

הטמעת ה-API

אחרי שהמשתמש ציין את המגדר הדקדוקי שלו (לדוגמה, דרך קטע הגדרות באפליקציה או בתהליך עבודה של הגדרת משתמש), אפשר להשתמש ה-method setRequestedApplicationGrammaticalGender(int) כדי לאחסן את בהגדרת המשאבים של האפליקציה.

לדוגמה, אם אתם רוצים להגדיר את 'מגדר דקדוקי' המועדף של המשתמש בתור נשי, צריך לבקש מהמשתמש לבחור את המגדר הדקדוקי המועדף ולאחר מכן קוראים ל-API:

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>