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 เปิดตัว Grammatical Inflection API เพื่อช่วยให้คุณสร้าง UI ที่เน้นผู้ใช้สำหรับภาษาที่มีเพศแบบต่างๆ ได้ ซึ่งจะช่วยให้คุณเพิ่มการรองรับเพศทางไวยากรณ์ได้โดยไม่ต้องรีแฟกทอริงแอป
ตัวอย่างการผันสำหรับเพศทางไวยากรณ์
ในภาษาที่มีเพศ เพศทางไวยากรณ์จะไม่สามารถปรับเปลี่ยนได้เหมือนกับภาษาอังกฤษ เช่น เป็นภาษาอังกฤษเพื่อเขียนข้อความบอกผู้ใช้ พวกเขาสมัครใช้บริการของแอปของคุณ คุณสามารถใช้วลีเดียว เช่น "คุณสมัครรับข้อมูลจาก..."
คุณป้อนข้อความที่คล้ายกันในภาษาฝรั่งเศสได้ 2-3 วิธี ดังนี้
- สัญลักษณ์เพศชายที่ผันผวน: "Vous êtes abonné à..." (ภาษาอังกฤษ: "คุณติดตาม...")
- รูปแบบที่ผันคำตามเพศหญิง: "Vous êtes abonnée à..." (ภาษาอังกฤษ: "คุณติดตาม...")
- วลีกลางๆ ที่หลีกเลี่ยงการผันคำ "Abonnement à...activé" (ภาษาอังกฤษ: "การสมัครรับข้อมูลกับ ... เปิดใช้อยู่")
ตัวเลือก 2 รายการแรกจะกล่าวถึงผู้ใช้โดยตรงเช่นเดียวกับภาษาอังกฤษ อย่างไรก็ตาม หากไม่มีกลไกใดๆ ในการรองรับคุณลักษณะทางไวยากรณ์ของภาษาฝรั่งเศส จะมีเพียงตัวเลือกที่สาม คือการเปลี่ยนโทนของข้อความและ อาจไม่ใช่สิ่งที่คุณต้องการแสดงในอินเทอร์เฟซผู้ใช้
ในกรณีเหล่านี้ Grammatical Inflection API จะลดความพยายามในการแสดงสตริงที่เกี่ยวข้องกับเพศทางไวยากรณ์ของผู้ชม ซึ่งก็คือบุคคลที่ดู UI ไม่ใช่บุคคลที่พูดถึง หากต้องการแสดงคำแปลที่ปรับเปลี่ยนตามเพศทางไวยากรณ์สำหรับแต่ละภาษาที่ได้รับผลกระทบในแบบของคุณในแอป ให้เพิ่มคำแปลที่ปรับเปลี่ยนตามเพศทางไวยากรณ์สำหรับแต่ละภาษาที่ได้รับผลกระทบ จากนั้นใช้ GrammaticalInflectionManager
API เพื่อปรับคำแปลที่จะแสดงต่อผู้ใช้แต่ละราย
ในหลายๆ ภาษา เพศทางไวยากรณ์ยังใช้กับคำนามปกตินอกเหนือจากคำนาม แก่ผู้คน เช่น ในภาษาฝรั่งเศส คำว่าเก้าอี้ (เก้าอี้) เป็นคำว่า เพศหญิง ในขณะที่ oiseau (นก) เป็นเพศชาย สำหรับสถานการณ์อื่นที่ไม่ใช่การกล่าวถึงผู้ใช้ คุณสามารถใช้ ICU SelectFormat API ที่มีอยู่
ใช้ 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);
ต่อไปนี้เป็นตัวอย่างวิธีประกาศการเปลี่ยนแปลงการกำหนดค่าในแอป ไฟล์ Manifest หากคุณต้องการจัดการด้วยตนเอง ให้ทำดังนี้
<activity android:name=".TestActivity"
android:configChanges="grammaticalGender"
and>r<oid:expor>t
ed="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< à.../stri>ng /resources
เพศชาย
รวมสตริงที่วัดโดยเพศชายในไฟล์แหล่งข้อมูล res/values-fr-masculine/strings.xml
ดังนี้
<resources> ... <string name="example_string">Vous ête<s abonn>é< à.../stri>ng /resources
ไม่มีเพศ
รวมสตริงเริ่มต้นในไฟล์ทรัพยากรของ res/values-fr/strings.xml
ดังนี้
<resources> ... <string name="example_string">Abonneme<nt à...>a<ctivé/stri>ng /resources