Во 14 од нашите 42 јазици, множествена форма наречена „еден“ не важи само за 1

Јазици

Ниската на апликацијата „Останува една навика денес“ има множествена партнерка, „Остануваат %d навика денес“. Android избира помеѓу нив по категорија: англискиот ја користи „one“ за 1 и „other“ за сè останато. Во рускиот, категоријата „one“ се користи за 1, 21, 31, 41 и така натаму. Нашата проверка за превод го промаши тоа двапати истиот ден, еднаш во секоја насока.

Точниот превод што го одби

На 2 ноември повторно го пуштивме нашиот комплет за превод на неговата примерна апликација. За рускиот „one“, моделот напиша „Осталась %d привычка на сегодня“: „Останува %d навика денес“, со бројот. Нашата проверка го спореди со англиската форма „one“, најде %d што го немаше во англискиот и го одби како измислен placeholder. Моделот беше во право. Корисник со 21 преостаната навика ја добива оваа форма, па затоа мора да го прикаже бројот. Ја сменивме проверката: форма може да го додаде бројот што го користи англиската форма „other“. Следното пуштање ги напиша сите 350 низи на примерот.

Погрешниот превод што би поминал

Истата проверка го пушти спротивното. Ако моделот беше напишал „Осталась одна привычка“ („Останува една навика“), ништо во низата не беше изгубено, па помина, и корисникот со 21 преостаната навика би бил известен дека има една. Старото правило дозволуваше секоја форма „one“ да го исфрли бројот, бидејќи во англискиот „one“ е само 1.

Сега проверката знае кои броеви ги покрива секоја категорија, од CLDR, правилата за множина на Unicode што ги користат Android и ICU. Форма за категорија што покрива неколку броеви мора да го прикаже бројот. Форма за единствен број може да го изостави: германскиот „one“ е само 1, па „Noch eine Gewohnheit“ е во ред таму.

Каде „one“ не е само 1

Во 14 од 41-те целни јазици што ги познаваат податоците на CLDR во Babel 2.10, „one“ покрива повеќе од бројот 1:

Во ICU пораки, сопствена гранка го менува ова. Со =0{…} во пораката, францускиот „one“ останува само за 1, и проверката го зема тоа предвид.

Проверено според сопствените низи на Android

Пред да ја испорачаме правилото, го пуштивме на пораки со множина во рамковните низи на Android: 897 преводи во 39 од нашите јазици. Не најде ништо. Преведувачите на Google го ставиле бројот во секој огранок кој опфаќа повеќе броеви, вклучително и рускиот „еден“, дури и таму каде што англискиот му дава посебен огранок на 1. Кога рачно го извадивме бројот од еден руски огранок за „еден“, проверката рече дека формата се користи и за 21, 31, 41 и 51.

Правилото е во translation-checks 1.2.0, бесплатно на GitHub, за ICU пораки, и во Polyglot 1.2.0 за множина на Android и ICU пораки. Останатите проверки што ги додадовме оваа недела се во забелешката за букви од друг писмен систем.

Ажурирано: