Çoğul neden dilden dile değişir
zero, one, two, few, many ve other kategorileri her dilin CLDR kurallarını izler. İngilizcede one yalnızca 1 demektir; Fransızcada 0 ve 1'i kapsar; Rusça ve Lehçe few ve many ekler; Arapça altısını da kullanır; Japoncada ise tek kategori vardır: other. Bu yüzden İngilizce için yazılmış iki dallı bir mesaj, başka dillere çevirmeye başladığınız anda yetersiz kalır.
Araç bu kuralları tarayıcınızda okur (Intl.PluralRules): gösterilen kategoriler ve örnek sayılar doğrudan dilin kurallarından gelir, ayrıca güncel tutulması gereken bir tablo yoktur.
gen-l10n ile =1 tuzağı
Bir =1 dalı, flutter gen-l10n'in ürettiği kodda one kategorisine dönüşür. Fransızcada bu kategori sıfır için de geçerlidir: count = 0 olduğunda "1 article restant" görünür. Sayıyı metne yazdığınız one kategorisini tercih edin ya da bir =0 dalı ekleyin: araç bunu bir onay kutusu olarak sunar. Ayrıntılar ICU çoğulları ve placeholder'lar rehberinde.
Sonucu kullanmak
- Her dilin
"key": "{count, plural, …}" satırını ilgili app_xx.arb dosyasına kopyalayın.
@key meta verilerini bir kez, şablon dosyasına ekleyin.
flutter gen-l10n komutunu çalıştırın: eksik bir other dalı ya da kapanmamış bir süslü parantez, dosya adını belirterek üretimi durdurur.
Ardından hiçbir çevirinin placeholder'ını düşürmediğini veya yeniden adlandırmadığını kontrol etmek için ARB eksik anahtar kontrol aracını kullanın.
Aracın sınırları
Araç yalnızca yapıyı oluşturur; her biçimin metnini siz yazarsınız. select mesajlarını veya iç içe çoğulları işlemez ve l10n.yaml içinde use-escaping seçeneğini açtıysanız kesme işaretlerini ikilemez.