ผู้คนกว่า 3 พันล้านคนพูดภาษาที่มีเพศ ซึ่งเป็นภาษาที่คำในหมวดหมู่ทางไวยากรณ์ เช่น คำนาม คำกริยา คำคุณศัพท์ และคำบุพบท จะผันตามเพศของบุคคลและวัตถุที่คุณพูดด้วยหรือพูดถึง โดยทั่วไปแล้ว ภาษาที่มีเพศหลายเพศหลายภาษาใช้เพศทางไวยากรณ์เพศชายเป็นเพศเริ่มต้นหรือเพศทั่วไป
การเรียกผู้ใช้ด้วยเพศทางไวยากรณ์ที่ไม่ถูกต้อง เช่น การเรียกผู้หญิงด้วยเพศทางไวยากรณ์ของผู้ชาย อาจส่งผลเสียต่อประสิทธิภาพและทัศนคติของผู้ใช้ ในทางตรงกันข้าม UI ที่มีภาษาที่แสดงเพศตามไวยากรณ์ของผู้ใช้อย่างถูกต้องจะช่วยเพิ่มการมีส่วนร่วมของผู้ใช้ และมอบประสบการณ์การใช้งานที่ปรับให้เหมาะกับผู้ใช้แต่ละคนและฟังดูเป็นธรรมชาติมากขึ้น
Android 14 จะช่วยคุณสร้าง UI ที่เน้นผู้ใช้เป็นหลักสำหรับภาษาที่มีเพศ เปิดตัว Grammatical Inflection API ซึ่งช่วยให้คุณ เพิ่มการรองรับ เพศทางไวยากรณ์โดยไม่เปลี่ยนโครงสร้างภายในโค้ดของแอป
ตัวอย่างการผันคำตามเพศทางไวยากรณ์
ในภาษาที่มีเพศทางไวยากรณ์ จะไม่สามารถแปลงเพศได้ในลักษณะเดียวกับ เป็นภาษาอังกฤษ เช่น เป็นภาษาอังกฤษเพื่อเขียนข้อความบอกผู้ใช้ ว่าพวกเขาสมัครใช้บริการของแอปคุณแล้ว คุณอาจใช้วลีเดียวคือ "คุณสมัครรับข้อมูลจาก..."
คุณป้อนข้อความที่คล้ายกันในภาษาฝรั่งเศสได้ 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"
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>