V 14 od naših 42 jezikov množinska oblika z imenom "one" ni namenjena samo številu 1
Jeziki
Niz aplikacije "One habit left today" ima množinsko različico "%d habits left today". Android izbere med njima glede na kategorijo: angleščina uporablja "one" za 1 in "other" za vse ostalo. V ruščini se kategorija "one" uporablja za 1, 21, 31, 41 itd. Naš preverjalnik prevoda je to dvakrat napačno razumel istega dne, enkrat v vsako smer.
Pravilen prevod, ki ga je zavrnil
2. novembra smo znova pognali naš komplet za prevajanje na vzorčni aplikaciji. Za rusko kategorijo "one" je model zapisal "Осталась %d привычка на сегодня": "%d habit left today", s številko. Naš preverjalnik jo je primerjal z angleško obliko "one", našel %d, ki ga angleščina ni imela, in jo zavrnil kot izmišljen rezervirani znak. Model je imel prav. Uporabnik, ki mu je ostalo 21 navad, dobi to obliko, zato mora prikazati številko. Spremenili smo preverjanje: oblika lahko doda število, ki ga uporablja angleška oblika "other". Naslednji zagon je zapisal vseh 350 nizov vzorca.
Napačen prevod, ki bi ga bil sprejel
Isti preverjalnik je spustil nasprotno. Če bi model zapisal "Осталась одна привычка" ("one habit left"), v nizu ne bi bilo nič izgubljeno, zato bi bil prevod sprejet, uporabniku, ki mu je ostalo 21 navad, pa bi bilo povedano, da jih ima eno. Staro pravilo je dovoljevalo, da oblika "one" izpusti številko, ker je v angleščini "one" samo 1.
Zdaj preverjalnik ve, katera števila pokriva vsaka kategorija, iz CLDR, pravil za množino Unicode, ki ju uporabljata Android in ICU. Oblika za kategorijo, ki pokriva več števil, mora prikazati številko. Oblika za eno samo številko ga lahko izpusti: nemška "one" je samo 1, zato je "Noch eine Gewohnheit" tam v redu.
Kje "one" ni samo 1
V 14 od 41 ciljnih jezikov, ki jih pozna CLDR-ova baza v Babel 2.10, "one" pokriva več kot samo število 1:
- 1, 21, 31, 41…: ruščina, ukrajinščina, srbščina, makedonščina.
- 0 in 1: francoščina, portugalščina, perzijščina, armenski, kannada, pandžabi, amharščina. "Une habitude restante" bi se prikazalo za 0 navad.
- 1 in 11: škotska gelščina. 1, 101, 201…: slovenščina, katere "two" je tudi 102 in 202.
- Vsa števila, ki se ne končajo s 4, 6 ali 9: filipinščina.
V sporočilih ICU to spremeni lastna veja. Z =0{…} v sporočilu francoščini za "one" ostane samo 1, in preverjalnik to upošteva.
Preverjeno glede na Androidove lastne nize
Preden smo pravilo poslali, smo ga pognali na sporočila v množini v okvirnih nizih sistema Android: 897 prevodov v 39 naših jezikov. Ni zaznal nobene napake. Googlovi prevajalci so številko vstavili v vsako vejo, ki pokriva več števil, vključno z ruščino za "eno", tudi tam, kjer angleščina številu 1 nameni svojo vejo. Ko smo številko ročno odstranili iz ene ruške veje za "eno", je preverjanje povedalo, da se ta oblika uporablja tudi za 21, 31, 41 in 51.
Pravilo je v translation-checks 1.2.0, brezplačno na GitHubu, za ICU sporočila, in v Polyglot 1.2.0 za množine v sistemu Android in ICU sporočila. Druga preverjanja, ki smo jih dodali ta teden, so v opombi o črkah drugega pisava.