Приветствую всех. Поскольку до нового года я страшно занята, поэтому не писала. Но я постараюсь писать на выходных. Несколько интересных мыслей и просто переводных статей я очень хотела бы выложить.
Однако, сегодня есть кое что, о чём я не могу не написать, и о чём почему-то никто не упоминает. Это использование русского языка в автоматически генерируемом контенте, особенно в словах которые изменяются от числа. Например форма которую можно увидеть в 90% онлайн магазинов (даже таких крупных как ozon.ru, eldorado.ru, 003.ru):
Корзина: Товаров 0 шт. Общая сумма 0,00 руб.
Вам это не режет глаз? Нет? А мне ужасно режет, мне кажется автор сильно не любит людей. Слава роботам, убить всех человеков!
Во всех магазинах созданных нашей компанией можно видеть туже строчку, но на русском языке
Корзина:
В вашей корзине 3 предмета общей стоимостью 73370 руб.
В данном случае покупатель видит что работу делали профессионально и с душой, а не для галочки.
Словоформа множественного числа в данном случае генерируется как на стороне сервера (php), так и у клиента, при добавлении в корзину (js). Делается это следующим образом в PHP:
$pred=(floor($count%100 / 10)==1 ?'предметов ': (($count%10 ==1)?'предмет ': (in_array($count%10 , array(2,3,4))?'предмета ':'предметов ')));
и яваскриптах:
pred=(Math.floor(count%100 / 10)==1) ?'предметов ': (count%10==1?'предмет ':(((count%10 >=2) && (count%10<=4)) ?'предмета ':'предметов '))
Данный метод я сама придумала за полчаса три года назад. Остальные кстати делают по другому:
<?php $n = 17; print ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2)); ?> output: 2
в данном случае возвращается не конкретная форма множественного числа как у меня, а её номер, это удобно для создания файлов локализаций. Чтобы узнать как делают локализации в php, копайте в сторону функций gettext и конкретно для данного случая ngettext — для локализации форм множественного числа.
Если вы разработчик сайта с мультиязыковой поддержкой, то вам пригодится таблица форм мн.числа (plural form) от Mozilla — Localization and Plurals
, в ней представлены разные формы для разных языков, в некоторых языках аж 6 форм!
Заключение
Товарищи программисты — думайте об удобстве! Приятность текстов — её краеугольный камень. Этому вас не научат англоязычные форума и сайты, просто потому что в английском языке всего две словоформы. Т.е. надпись "You have 2 items in cart" звучит правильно и вполне приятно. Между прочим именно из-за локализаций англоязычных движков (форумов, гостевых) эта беда и вошла в массы. Например "У вас 2 новых сообщений" (You have 2 new messages). Ну и из-за лени программистов конечно.
И главное — старайтесь никогда не употреблять число "0". Напишите лучше "Ваша корзина пуста" или "Новых сообщений нет", это будет очень приятно. Не сложно же?
P.S. Кстати в начале месяца я написала статью для mannodesign "как нарисовать простой логотип", если интересно читайте тут. Комментируйте здесь =).
Комментарии:
bugoff
24.12.2009 14:00:22
Moony (Елена Лунная)
24.12.2009 15:22:47