Tiga miliar orang menggunakan bahasa bergender: bahasa yang kategori gramatikalnya—seperti kata benda, kata kerja, kata sifat, dan preposisi—diterapkan dengan gender orang dan objek yang Anda ajak bicara atau Anda bicarakan. Secara tradisional, banyak bahasa bergender menggunakan gender gramatikal maskulin sebagai gender default atau generik.
Menjangkau pengguna dalam gender gramatikal yang salah, seperti menyapa perempuan dengan gender gramatikal yang maskulin, dapat memberi dampak negatif pada performa dan sikap mereka. Sebaliknya, UI dengan bahasa yang mencerminkan gender gramatikal pengguna dengan benar dapat meningkatkan interaksi pengguna dan memberikan pengalaman pengguna yang lebih personal dan terdengar alami.
Dalam upaya membantu Anda membuat UI yang berorientasi pengguna untuk bahasa-bahasa yang memiliki gender, Android 14 memperkenalkan Grammatical Inflection API yang memungkinkan Anda menambahkan dukungan untuk gender gramatikal tanpa perlu memfaktorkan ulang aplikasi.
Contoh infleksi untuk gender gramatikal
Dalam bahasa yang memiliki gender, gender gramatikal tidak dapat ditangani dengan cara yang sama seperti halnya dalam bahasa Indonesia. Misalnya dalam bahasa Indonesia, untuk menulis pesan yang memberi tahu pengguna bahwa mereka berlangganan layanan aplikasi Anda, Anda dapat menggunakan satu frasa: "Anda berlangganan...".
Sementara itu dalam bahasa Prancis, ada beberapa opsi untuk mengekspresikan frasa yang bermakna serupa:
- Bentuk infleksi maskulin: "Vous êtes abonné à..." (Bahasa Indonesia: "Anda berlangganan..."
- Bentuk infleksi feminin: "Vous êtes abonnée à..." (Bahasa Indonesia: "Anda berlangganan..."
- Frasa netral yang menghindari bentuk infleksi: "Abonnement à...activé" (Bahasa Indonesia: "Berlangganan ... diaktifkan")
Serupa dengan bahasa Indonesia, dua opsi pertama ditujukan langsung kepada pengguna. Namun, tanpa mekanisme untuk memfasilitasi fitur tata bahasa Prancis ini, Anda hanya akan memiliki opsi ketiga, yaitu mengubah nada pesan dan mungkin bukan yang ingin Anda tampilkan di antarmuka pengguna. Google.
Dalam kasus ini, Grammatical Inflection API menurunkan upaya untuk menampilkan
string relatif terhadap gender tata bahasa pelihat—yaitu, orang yang
melihat UI, bukan orang yang sedang dibicarakan. Untuk menampilkan terjemahan yang telah dipersonalisasi
sesuai pengguna di aplikasi Anda, tambahkan terjemahan yang telah mengalami proses infleksi untuk setiap
gender tata bahasa untuk bahasa yang terpengaruh, lalu gunakan
GrammaticalInflectionManager
API untuk menyesuaikan terjemahan mana yang akan ditampilkan
kepada setiap pengguna.
Dalam banyak bahasa, gender gramatikal juga berlaku untuk kata benda reguler selain orang. Misalnya, dalam bahasa Prancis, kata chaise (kursi) adalah feminin sedangkan oiseau (burung) adalah maskulin. Untuk situasi selain menangani pengguna, Anda dapat menggunakan ICU SelectFormat API yang ada.
Mengimplementasikan API
Setelah pengguna menunjukkan gender tata bahasa mereka (misalnya, melalui
bagian setelan aplikasi atau alur kerja penyiapan pengguna), Anda dapat menggunakan
metode setRequestedApplicationGrammaticalGender(int)
untuk menyimpan
nilai tersebut dalam konfigurasi resource aplikasi Anda.
Misalnya, jika ingin menetapkan gender gramatikal pilihan pengguna ke feminin, Anda akan meminta pengguna untuk memilih gender gramatikal yang diinginkan, lalu memanggil 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);
Berikut adalah contoh cara mendeklarasikan perubahan konfigurasi di file manifes aplikasi jika Anda ingin menanganinya sendiri:
<activity android:name=".TestActivity"
android:configChanges="grammaticalGender"
android:exported="true">
</activity>
Jika aplikasi harus memeriksa gender tata bahasa dalam konfigurasi resource
saat ini, Anda dapat menggunakan metode getApplicationGrammaticalGender()
untuk mengambilnya:
Kotlin
val gIM = mContext.getSystemService(GrammaticalInflectionManager::class.java) val grammaticalGender = gIM.getApplicationGrammaticalGender()
Java
GrammaticalInflectionManager gIM = mContext.getSystemService(GrammaticalInflectionManager.class); int grammaticalGender = gIM.getApplicationGrammaticalGender();
Menambahkan terjemahan untuk bahasa yang memiliki gender gramatikal
Guna menyediakan teks yang dilokalkan untuk bahasa dengan gender gramatikal, buat file resource alternatif dan langsung tambahkan penentu gender untuk tata bahasa setelah nama lokalitas untuk bahasa tersebut. Tabel berikut menjelaskan kemungkinan nilai:
Penentu | Nilai string | Contoh (bahasa Prancis fr ) |
---|---|---|
Feminin | feminine |
res/values-fr-feminine/strings.xml |
Maskulin | masculine |
res/values-fr-masculine/strings.xml |
Netral | neuter |
res/values-fr-neuter/strings.xml |
Anda hanya boleh menyertakan string yang mendukung infleksi gender gramatikal dalam file resource ini. Semua string harus memiliki nilai dalam file resource default yang berisi string lain yang telah dilokalkan. Terjemahan default ini akan ditampilkan setiap kali terjemahan yang ditampilkan berdasarkan gender tidak tersedia.
Dalam contoh yang diberikan untuk bahasa Prancis sebelumnya, frasa netral akan
menjadi nilai string dalam file res/values-fr/strings.xml
resource
default. Cuplikan kode berikut menunjukkan cara memformat file setiap resource
untuk memfasilitasi semua variasi gramatikal dari contoh dalam bahasa Prancis:
Feminin
Sertakan string infleksi feminin dalam file resource res/values-fr-feminine/strings.xml
:
<resources> ... <string name="example_string">Vous êtes abonnée à...</string> </resources>
Maskulin
Sertakan string infleksi maskulin dalam file resource res/values-fr-masculine/strings.xml
:
<resources> ... <string name="example_string">Vous êtes abonné à...</string> </resources>
Netral
Sertakan string default dalam file resource res/values-fr/strings.xml
:
<resources> ... <string name="example_string">Abonnement à...activé</string> </resources>