V 14 z našich 42 jazykov sa množné číslo s názvom „one“ nepoužíva len pre 1

Jazyky

Reťazec aplikácie „One habit left today“ má partnera pre množné číslo, „%d habits left today“. Android si vyberá medzi nimi podľa kategórie: angličtina používa „one“ pre 1 a „other“ pre všetko ostatné. V ruštine sa kategória „one“ používa pre 1, 21, 31, 41 a tak ďalej. Naša kontrola prekladov to dvakrát v ten istý deň pokazila, raz v každom smere.

Správny preklad, ktorý odmietla

Dňa 2. novembra sme znova spustili náš balík na preklady na ukážkovej aplikácii. Pre ruskú kategóriu „one“ model napísal „Осталась %d привычка на сегодня“: „%d habit left today“, s číslom. Naša kontrola porovnávala tento reťazec s anglickou formou „one“, našla %d, ktoré angličtina nemala, a odmietla ho ako vymyslený placeholder. Model mal pravdu. Používateľ, ktorému zostáva 21 návykov, dostane túto formu, takže sa číslo musí zobraziť. Zmenili sme kontrolu: forma môže pridať počet, ktorý používa anglická forma „other“. Nasledujúci beh napísal všetkých 350 reťazcov ukážky.

Nesprávny preklad, ktorý by prešiel

Tá istá kontrola pustila ďalej opak. Ak by model bol napísal „Осталась одна привычка“ („one habit left“), nič z reťazca by sa nestratilo, takže by to prešlo a používateľovi, ktorému zostáva 21 návykov, by bolo povedané, že má jeden. Staré pravidlo dovoľovalo ľubovoľnej forme „one“ vynechať číslo, pretože v angličtine je „one“ len 1.

Teraz kontrola vie, ktoré čísla pokrýva každá kategória, podľa CLDR, teda pravidiel pre množné číslo Unicode, ktoré používajú Android a ICU. Forma pre kategóriu, ktorá pokrýva viacero čísel, musí zobraziť číslo. Forma pre jediné číslo ho môže vynechať: nemecké „one“ je len 1, takže „Noch eine Gewohnheit“ je tam v poriadku.

Kde „one“ nie je len 1

V 14 z 41 cieľových jazykov, ktoré poznajú údaje CLDR v Babel 2.10, pokrýva „one“ viac než len číslo 1:

V správach ICU to mení vlastná vetva. S =0{…} v správe zostane francúzske „one“ len pre 1 a kontrola to zohľadní.

Skontrolované oproti vlastným reťazcom Androidu

Pred odoslaním pravidla sme ho spustili na množné čísla v reťazcoch frameworku Android: 897 prekladov v 39 našich jazykoch. Neoznačilo nič. Prekladatelia Google dali číslo do kažvej vetvy, ktorá pokrýva viacero čísel, vrátane ruského „one“, aj tam, kde angličtina dáva číslu 1 vlastnú vetvu. Keď sme číslo ručne vybrali z jednej ruskej vetvy „one“, kontrola uviedla, že tento tvar sa používa aj pre 21, 31, 41 a 51.

Pravidlo je v translation-checks 1.2.0, zadarmo na GitHub, pre ICU správy, a v Polyglot 1.2.0 pre množné čísla Android aj ICU správy. Ďalšie kontroly, ktoré sme tento týždeň pridali, sú v poznámke o písmenách iného písma.

Aktualizované: