Ранее я уже писал в рубрике “Мысли вслух” о всех ограничениях, которые накладывает локализация на переводчика. Теперь, после того как я выполнил несколько заказов на локализацию и осознал, что я и раньше делал подобное (но рассматривал это как перевод с дополнительными требованиями), я решил создать новую рубрику “Локализация“, где будут рассматриваться проблемы, их решения и новости в области локализации.
В качестве первой записи я частично продублирую указанную выше статью, в которой описано интересное решение проблемы склонения и множественного числа при локализации веб-сайтов на русский язык.
Проблема заключается в том, что многие программисты не учитывают особенности склонения и множественного числа существительных в русском языке. Допустим, нужно написать, что найдено столько-то файлов - это может быть 1 файл, 2 файла, 5 файлов. Вариант “файл(-а, -ов)” не подходит, предлагается перестраивать фразу. Например:
Найдено файлов: %1.
Это удачное, но не всегда применимое решение.
Другой вариант - использовать сокращения. Например:
%1 days left for activation.
На выполнение активации осталось %1 дн.
Тоже не всегда подходит - 1, 21, 31 день и т.д. не подпадают под сокращение “дн.”.
Некоторые разработчики предусматривают два варианта фразы - для единственного и множественного числа, например:
1 day left for activation.
%1 days left for activation.
Но и этого недостаточно для русского языка, в котором есть несколько форм существительных при употреблении с числительными — единственная, двойственная и множественная. Для облегчения работы локализатора сайта достаточно воспользоваться несложной функцией:
1 2 3 4 5 6 7 8 9 | function declension($n,$string=array('день','дня','дней')) { $n = abs($n) % 100; $n1 = $n % 10; if ($n > 10 && $n < 20) return $string[2]; if ($n1 > 1 && $n1 < 5) return $string[1]; if ($n1 == 1) return $string[0]; return $string[2]; } |
Эта функция позволяет указать три формы существительного (напр., день, дня, дней), одна из которых затем будет автоматически подставляться в зависимости от стоящего перед ней числа.
Интересно, правильно ли будет при случае посоветовать клиенту описанную функцию для реализации на его веб-сайте?







Октябрь 25th, 2009 at 02:32
А Вы только советуете или сами программируете?
Октябрь 25th, 2009 at 03:06
Ну, такую функцию я бы смог добавить в свой блог. Придумать - нет
Октябрь 26th, 2009 at 10:55
>>&&&&Октябрь 26th, 2009 at 10:55
> &&Октябрь 26th, 2009 at 10:56
wrong HTML entities for > & in the function’s code