Dalam 14 daripada 42 bahasa kami, bentuk jamak yang dipanggil "one" bukan hanya untuk 1
Bahasa
Rantai aksara aplikasi "One habit left today" mempunyai pasangan jamak, "%d habits left today". Android memilih antara keduanya mengikut kategori: bahasa Inggeris menggunakan "one" untuk 1 dan "other" untuk semua yang lain. Dalam bahasa Rusia, kategori "one" digunakan untuk 1, 21, 31, 41 dan seterusnya. Semakan terjemahan kami tersilap dua kali pada hari yang sama, sekali dalam setiap arah.
Terjemahan betul yang ditolaknya
Pada 2 November, kami menjalankan kit terjemahan kami pada aplikasi contoh sekali lagi. Untuk "one" dalam bahasa Rusia, model menulis "Осталась %d привычка на сегодня": "%d habit left today", dengan nombor. Semakan kami membandingkannya dengan bentuk "one" dalam bahasa Inggeris, menemui %d yang tiada dalam bahasa Inggeris, dan menolaknya sebagai pemegang tempat yang direka. Model itu betul. Pengguna dengan 21 tabiat yang tinggal mendapat bentuk ini, jadi ia mesti menunjukkan nombor. Kami mengubah semakan: bentuk boleh menambah kiraan yang digunakan oleh bentuk "other" dalam bahasa Inggeris. Pengeksekusian seterusnya menulis semua 350 rantai aksara aplikasi contoh.
Terjemahan salah yang akan diluluskannya
Semakan yang sama meluluskan yang bertentangan. Jika model menulis "Осталась одна привычка" ("one habit left"), tiada apa dalam rantai aksara itu hilang, jadi ia lulus, dan pengguna dengan 21 tabiat yang tinggal akan diberitahu bahawa mereka mempunyai satu. Peraturan lama membenarkan sebarang bentuk "one" membuang nombor, kerana dalam bahasa Inggeris "one" hanyalah 1.
Kini semakan tahu nombor mana yang dicakupi oleh setiap kategori, daripada CLDR, peraturan jamak Unicode yang digunakan oleh Android dan ICU. Bentuk untuk kategori yang merangkumi beberapa nombor mesti menunjukkan nombor. Bentuk untuk satu nombor boleh meninggalkannya: "one" dalam bahasa Jerman hanyalah 1, jadi "Noch eine Gewohnheit" adalah sesuai di sana.
Di mana "one" bukan hanya 1
Dalam 14 daripada 41 bahasa sasaran yang diketahui oleh data CLDR dalam Babel 2.10, "one" merangkumi lebih daripada nombor 1:
- 1, 21, 31, 41…: Rusia, Ukraine, Serbia, Macedonia.
- 0 dan 1: Perancis, Portugis, Parsi, Armenia, Kannada, Punjabi, Amhara. "Une habitude restante" akan ditunjukkan untuk 0 tabiat.
- 1 dan 11: Gaelik Scotland. 1, 101, 201…: Slovenia, yang "two" juga 102 dan 202.
- Setiap nombor yang tidak berakhir dengan 4, 6 atau 9: Filipina.
Dalam mesej ICU, cabang tersendiri mengubah ini. Dengan =0{…} dalam mesej, "one" dalam bahasa Perancis ditinggalkan dengan hanya 1, dan semakan mengambil kira itu.
Disemak terhadap rantai aksara Android sendiri
Sebelum menghantar peraturan ini, kami menjalankannya pada mesej jamak dalam rentetan kerangka Android: 897 terjemahan dalam 39 bahasa kami. Tiada satu pun ditanda. Penerjemah Google meletakkan nombor dalam setiap cabang yang merangkumi beberapa nombor, termasuk "satu" dalam bahasa Rusia, walaupun bahasa Inggeris memberikan cabang sendiri untuk 1. Apabila kami mengeluarkan nombor itu secara manual daripada satu cabang "satu" dalam bahasa Rusia, pemeriksaan menyatakan bentuk itu juga digunakan untuk 21, 31, 41 dan 51.
Peraturan ini terdapat dalam translation-checks 1.2.0, percuma di GitHub, untuk mesej ICU, dan dalam Polyglot 1.2.0 untuk jamak Android dan mesej ICU. Pemeriksaan lain yang kami tambah minggu ini terdapat dalam nota tentang huruf daripada skrip lain.