Logo Platform
logo amplifiers simplified

Russian number problems

Reply
Copied to clipboard!
12 years ago
May 17, 2012, 6:14:13 PM
We've got a problem with properly translating following construction: "2 TURNS", "6 TURNIPS" etc.

It is because in english there is only two forms (pseudocode):



[CODE]if (n == 1) {

out << n << " TURN"; //form 1 - singular

else

out << n << " TURNS"; //form 2 - plural[/CODE]



In russian, we have three forms, and it's lot more complicated:



[CODE]

k = n % 100;

if (k / 10 == 1)

out << n << " ХОДОВ"; //form 2 - plural

else if (k % 10 == 1)

out << n << " ХОД"; //form 1 - singular (Yes, 21 - is 21 uses singular noun)

else if (k % 10 in {2, 3, 4})

out << n << " ХОДА"; //form 3 - plural too

else

out << n << " ХОДОВ"; //Everyting else is plural

[/CODE]



So one more time - if i messed up with code:

form 1 (" ХОД"): 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 201, ...

form 2 (" ХОДОВ"): 5-10, 11-20, 25-30, 35-40, 45-50, ...

form 3 (" ХОДА"): 2-4, 22-24, 32-34, 42-44, 52-54, ...



So, oh great developers. Could you do something for us? Three forms?

А русские пусть меня поправят если я не прав (Russians correct me if I am wrong anywhere)
0Send private message
12 years ago
May 18, 2012, 5:32:52 PM
Можно ведь оставить просто "ХОД".То есть "54 ход (сейчас идет)", а не "(прошло) n ходов -а.

В таком случае везде остается форма "ХОД"
0Send private message
12 years ago
May 18, 2012, 6:35:10 PM
Nick381, не получится, в меню исследования есть TURN и TURNS, так что надо править, а то получится "3 ход" на исследование.
0Send private message
12 years ago
May 18, 2012, 7:10:21 PM
Уведомил разработчиков. Ожидаем реакции.



Можно поменять местами слово и цифру? Не 3 ходов, а ходов 3. Можно еще двоеточие поставить - будет вполне себе красиво "Ходов: 1; ходов: 3". Только надо бы как-то оформить, скажем "ходов до открытия: 3".
0Send private message
12 years ago
May 19, 2012, 11:18:15 AM
Разработчик будет думать как решить эту проблему. Скорее всего не раньше релиза что-то будет с этим сделано.
0Send private message
12 years ago
May 27, 2012, 11:06:50 PM
Не раньше релиза, так они же вообще официально русский включать не собирались!

Вообще вариант со, скажем, "требуется ходов: 5" - наилучший. Даже проще, чем в английском выйдет. Но блин, тогда наверняка из-за могучести и необъятности нашего языка разметка полезет!
0Send private message
12 years ago
Jun 19, 2012, 9:40:14 AM
Вообще-то, продвинутые системы перевода уже давно научились различать plurals. Русский язык - не единственный в котором много падежей. Например, GNU gettext позволяет задать несколько форм. Вот как выглядит файл переводов .mo (gettext):

[CODE]msgid "

msgstr "

"Project-Id-Version: PROJECT 0.1.0\n"

"Report-Msgid-Bugs-To: xxx@mail.ru\n"

"POT-Creation-Date: 2011-07-07 13:11+0400\n"

"PO-Revision-Date: 2011-04-20 14:44+0400\n"

"Last-Translator: Name Lastname \n"

"Language-Team: Russian \n"

"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "

"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"

"MIME-Version: 1.0\n"

"Content-Type: text/plain; charset=utf-8\n"

"Content-Transfer-Encoding: 8bit\n"

"Generated-By: Babel 0.9.6\n"



#: prj/templates/auth.tmpl:38

msgid "Login:"

msgstr "Логин:"



#: prj/templates/auth.tmpl:40

msgid "Password:"

msgstr "Пароль:"



#: prj/templates/includes/obj_dump.tmpl:1

msgid "Collapse"

msgstr "Свернуть"



#: prj/templates/includes/post_and_comments.tmpl:3

msgid "now"

msgstr "сейчас"



#: prj/templates/includes/post_and_comments.tmpl:5

#, python-format

msgid "%d minute ago"

msgid_plural "%d minutes ago"

msgstr[0] "%d минуту назад"

msgstr[1] "%d минуты назад"

msgstr[2] "%d минут назад"



#: prj/templates/includes/post_and_comments.tmpl:7

#, python-format

msgid "%d hour ago"

msgid_plural "%d hours ago"

msgstr[0] "%d час назад"

msgstr[1] "%d часа назад"

msgstr[2] "%d часов назад"[/CODE]



Обратите внимание на поле Plural-Forms. С помощью него и задается кол-во падежей. Для каждого языка своя формула расчета.



У разработчиков, скорее всего, используется другая система переводов, но так как им [разработчикам] требуется перевод игры на несколько языков, то без поддержки падежей им не обойтись. А соотвественно, нам париться и что-то выдумывать не стоит.
0Send private message
?

Click here to login

Reply
Comment