Ve 14 z našich 42 jazyků není množné číslo nazvané „one“ určeno pouze pro číslo 1
Jazyky
Řetězec aplikace „One habit left today“ má partnera pro množné číslo, „%d habits left today“. Android mezi nimi vybírá podle kategorie: angličtina používá „one“ pro 1 a „other“ pro všechno ostatní. V ruštině se kategorie „one“ používá pro 1, 21, 31, 41 a tak dále. Naše kontrola překladu to dvakrát špatně vyhodnotila ve stejný den, jednou v každém směru.
Správný překlad, který odmítlo
Dne 2. listopadu jsme znovu spustili náš balíček pro překlady na ukázkové aplikaci. Pro ruskou kategorii „one“ model napsal „Осталась %d привычка на сегодня“: „%d habit left today“, včetně čísla. Naše kontrola porovnávala tento text s anglickou formou „one“, našla %d, které angličtina neměla, a odmítla to jako vymyšlený placeholder. Model měl pravdu. Uživatel, kterému zbývá 21 návyků, dostane tuto formu, takže musí zobrazit číslo. Změnili jsme kontrolu: forma může přidat počet, který používá anglická forma „other“. Při dalším běhu model přepsal všech 350 řetězců ukázkové aplikace.
Špatný překlad, který by prošel
Stejná kontrola pustila opačný případ. Kdyby model napsal „Осталась одна привычка“ („one habit left“), v řetězci by se nic neztratilo, takže by to prošlo a uživateli, kterému zbývá 21 návyků, by bylo řečeno, že má jeden. Staré pravidlo umožňovalo jakékoli formě „one“ vynechat číslo, protože v angličtině je „one“ pouze 1.
Nyní kontrola ví, která čísla každá kategorie pokrývá, z CLDR, pravidel pro množná čísla Unicode, která používají Android a ICU. Forma pro kategorii, která pokrývá více čísel, musí zobrazit číslo. Forma pro jediné číslo ho může vynechat: německé „one“ je pouze 1, takže „Noch eine Gewohnheit“ je tam v pořádku.
Kde „one“ není jen 1
Ve 14 z 41 cílových jazyků, které zná data CLDR v Babel 2.10, pokrývá „one“ více než jen číslo 1:
- 1, 21, 31, 41…: ruština, ukrajinština, srbština, makedonština.
- 0 a 1: francouzština, portugalština, perština, arménština, kannadština, paňdžábština, amharština. Pro 0 návyků by se zobrazilo „Une habitude restante“.
- 1 a 11: skotská gaelština. 1, 101, 201…: slovinština, jejíž „two“ je také 102 a 202.
- Každé číslo, které nekončí na 4, 6 nebo 9: filipínština.
V ICU zprávách to mění vlastní větev. S =0{…} ve zprávě zůstane francouzské „one“ pouze pro 1 a kontrola to bere v úvahu.
Zkontrolováno oproti vlastním řetězcům Androidu
Před odesláním pravidla jsme ho spustili na množná čísla v řetězcích frameworku Androidu: 897 překladů ve 39 našich jazyků. Neoznačilo žádné chyby. Překladatelé Googlu vložili číslo do každé větve pokrývající více čísel, včetně ruské větve „one“, i tam, kde angličtina dává číslu 1 vlastní větev. Když jsme číslo ručně odebrali z jedné ruské větve „one“, kontrola oznámila, že tento tvar se používá i pro 21, 31, 41 a 51.
Pravidlo je v translation-checks 1.2.0, zdarma na GitHubu, pro ICU zprávy, a v Polyglot 1.2.0 pro množná čísla Androidu i ICU zprávy. Další kontroly, které jsme tento týden přidali, najdete v poznámce o písmenech z jiné abecedy.