התאמה אישית של ממשק המשתמש של האפליקציה לפי מגדר דקדוקי

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

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

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

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

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

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

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

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

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

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

הטמעת ה-API

אחרי שהמשתמש מציין את המגדר הדקדוקי שלו (לדוגמה, דרך קטע ההגדרות של האפליקציה או תהליך העבודה להגדרת משתמש), אפשר להשתמש בשיטה 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>