← Konsep

Kesesuaian gender

Beberapa bahasa memberikan infleksi pada kata kerja dan kata sifat sesuai gender orang yang dibicarakan dalam kalimat. Bahasa Inggris umumnya tidak demikian, sehingga frasa yang Anda tulis sebagai {username} has been invited adalah satu kalimat dalam bahasa Inggris, tetapi dua atau tiga kalimat dalam bahasa Spanyol, Prancis, atau Rusia. Langsys menanganinya saat penerjemahan — dengan cara yang sama seperti menghasilkan bentuk jamak — dan Anda cukup memberikan satu argumen.

Tonton · 0:39 Kesesuaian gender

Apa yang dihasilkan pipeline

Saat bahasa target membutuhkan kesesuaian gramatikal, Langsys menulis ulang string locale tersebut menjadi cabang-cabang yang diperlukan — sebuah ICU select. Frasa sumber Anda tidak pernah berubah, dan Anda tidak perlu menulis cabang-cabangnya secara manual.

Anda tidak perlu menulis ini — pipeline yang melakukannya
// Your source phrase, unchanged:
"{username} has been invited"

// What the Spanish translation becomes — note invitado / invitada:
"{username_gender, select, male {{username} ha sido invitado} \
female {{username} ha sido invitada} \
other {{username} ha sido invitado/a}}"

Ada dua konsekuensi yang perlu dipahami. Argumen dinamai sesuai variabel yang diinfleksikannya dengan tambahan _gender — {username} menghasilkan username_gender — dan cabangnya selalu male, female, other. Argumen ini juga muncul hanya di locale yang membutuhkannya: hal ini tidak terlihat sampai ada yang memuat aplikasi dalam bahasa yang mengenal gender.

Cara meneruskannya

Berikan argumen kapan pun Anda mengetahuinya, dan pembaca akan mendapatkan kalimat dengan infleksi yang benar:

// The argument is named after the variable it inflects, + _gender.
// Branches are always male / female / other.
t('{username} has been invited', 'Team', {
  username: user.name,
  username_gender: user.gender ?? 'other',
});

Tidak tahu gendernya? Berikan 'other' secara eksplisit — itu adalah cabang netral. Apa yang ditampilkan saat argumen tidak ada berbeda-beda di tiap SDK; setiap halaman SDK menjelaskannya. Setiap halaman SDK juga menunjukkan pemanggilan dengan idiomnya sendiri.

Frasa mana yang memerlukannya?

Anda tidak bisa mengetahuinya dari kode Anda sendiri, dan itu memang sifat bawaannya: argumen ditambahkan saat penerjemahan, per locale target, sehingga tidak ada petunjuk di frasa sumber maupun basis kode Anda. Ada tiga cara untuk mengetahuinya.

Baca katalognya. Terjemahan yang diambil aplikasi Anda adalah string yang sudah dipromosikan, jadi jawabannya sudah ada di klien. Ambil katalog untuk locale yang Anda dukung — setiap SDK menyediakannya — lalu cari entri yang memuat , select,. Dari situ Anda mendapatkan frasa dan nama argumen yang persis, dan prosesnya cukup ringan untuk dijalankan di CI terhadap setiap locale yang Anda rilis.

// The catalog your app fetches IS the promoted strings — grep it.
const wanting = Object.entries(catalog)
  .filter(([, translation]) => translation.includes(', select,'))
  .map(([phrase]) => phrase);
// → every phrase (and, from the string, every argument) this locale needs

Aktifkan debug (SDK JavaScript). Berikan debug: true di konfigurasi init Anda lalu jelajahi aplikasi dalam lokal yang berpenanda gender: SDK akan mencatat satu Langsys Warning untuk setiap frasa yang terjemahannya membutuhkan argumen yang tidak Anda berikan, lengkap dengan nama argumennya. Hanya sekali per frasa per lokal, dan senyap di produksi. Satu catatan: di dalam komponen blok konten dan frasa, _gender yang dikirim sebagai pengaman justru dilaporkan sebagai parameter tak cocok, karena pemeriksaan itu dijalankan terhadap teks sumber Anda — tempat select tidak pernah muncul.

Jika ragu, sertakan saja. Nilai untuk argumen yang tidak dimiliki oleh string akan diabaikan saat render, jadi mengirim _gender untuk setiap variabel yang merujuk pada orang adalah aman dan mencakup lokal yang belum Anda periksa.

Satu variabel per frasa. Hanya satu variabel yang dapat menentukan kesesuaian bentuk kata. String yang memiliki dua variabel — jumlah dan gender — dibiarkan apa adanya alih-alih diubah menjadi ICU bersarang, sehingga diterjemahkan sebagai satu kalimat datar.

Cari di dokumen & Learning Center