A 42 nyelvünkből 14-ben az „egy” nevű többes számú forma nem csak az 1-re vonatkozik

Nyelvek

Egy alkalmazás „One habit left today” karakterlánca rendelkezik többes számú párjával: „%d habits left today”. Az Android kategóriák alapján választ közöttük: az angol az „one” kategóriát használja az 1-hez, az „other” kategóriát pedig minden más esetre. Az oroszban az „one” kategóriát használjuk az 1, 21, 31, 41 stb. számokhoz. A fordításellenőrzésünk kétszer is elrontotta ezt ugyanazon a napon, egyszer mindkét irányban.

A helyes fordítás, amelyet elutasított

November 2-án újra futtattuk a fordítási csomagunkat a példaalkalmazáson. Az orosz „one” kategóriához a modell ezt írta: „Осталась %d привычка на сегодня”, vagyis „%d habit left today”, a számmal együtt. Az ellenőrzésünk összehasonlította az angol „one” formával, talált benne egy %d helykitöltőt, amely az angolban nem volt, és kitalált helykitöltőként elutasította. A modellnek igaza volt. Az a felhasználó, akinek 21 szokása maradt, ezt a formát kapja, így a számnak meg kell jelennie. Módosítottuk az ellenőrzést: egy forma felveheti azt a darabszámot, amelyet az angol „other” forma használ. A következő futtatás megírta a példaalkalmazás mind a 350 karakterláncát.

A hibás fordítás, amelyet átengedett volna

Ugyanez az ellenőrzés átengedte az ellenkező esetet. Ha a modell ezt írta volna: „Осталась одна привычка” („one habit left”), semmi sem veszett el a karakterláncból, így átment, és a 21 megmaradt szokással rendelkező felhasználónak azt mondták volna, hogy csak egy van. A régi szabály lehetővé tette, hogy bármely „one” forma elhagyja a számot, mert angolul az „one” csak az 1-et jelenti.

Most az ellenőrzés tudja, hogy egyes kategóriák milyen számokat fednek le a CLDR-ből, az Unicode többes számú szabályokból, amelyeket az Android és az ICU használ. Egy olyan kategória formája, amely több számot fed le, kötelezően megjeleníti a számot. Egy egyetlen számhoz tartozó forma elhagyhatja: a német „one” csak az 1-et jelenti, így ott a „Noch eine Gewohnheit” rendben van.

Ahol az „one” nem csak az 1

A CLDR Babel 2.10-ban elérhető adatai által ismert 41 célnyelv közül 14-ben az „one” forma az 1-es számon kívül is használatos:

ICU-üzenetekben egy saját ág ezt megváltoztatja. Ha az üzenetben szerepel a =0{…}, a francia „one” kategória csak az 1-re marad, és az ellenőrzés ezt figyelembe veszi.

Ellenőrizve az Android saját karakterláncaihoz képest

A szabály kiadása előtt futtattuk az Android keretrendszer-sztringjeiben lévő többesszámos üzeneteken: 897 fordítás a mi 39 nyelvünk közül. Egyet sem jelölt meg. A Google fordítói minden olyan ágban szerepeltették a számot, amely több számot fed le, beleértve az orosz „one” ágat is, még ott is, ahol az angol az 1-esnek külön ágat ad. Amikor kézzel kivettük a számot egy orosz „one” ágból, az ellenőrzés azt jelezte, hogy a forma 21, 31, 41 és 51 esetén is használatos.

A szabály a translation-checks 1.2.0 verziójában található, ingyenesen elérhető a GitHubon, ICU-üzenetekhez, valamint a Polyglot 1.2.0 verziójában Android-többesszámokhoz és ICU-üzenetekhez egyaránt. A héten hozzáadott többi ellenőrzés a más írásrendszer betűiről szóló jegyzetben található.

Frissítve: