Для комментариев зарегистрироваться или войти
Либо используйте ваш Open_ID, например аккаунт гугл, яндекс или ЖЖ
 

17 декабря 2009 :Человеко-читабельность - учите компьютеры русскому!

Приветствую всех. Поскольку до нового года я страшно занята, поэтому не писала. Но я постараюсь писать на выходных. Несколько интересных мыслей и просто переводных статей я очень хотела бы выложить.

Однако, сегодня есть кое что, о чём я не могу не написать, и о чём почему-то никто не упоминает. Это использование русского языка в автоматически генерируемом контенте, особенно в словах которые изменяются от числа. Например форма которую можно увидеть в 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 "как нарисовать простой логотип", если интересно читайте тут. Комментируйте здесь =).


я буду очень признательна если вы прокоментируете эту статью

Комментарии:


Чтобы оставить комментарий нужно зарегистрироваться или войти.
Либо волшебно используйте ваш логин в Google, Яндекс, рамблер или ЖЖ чтобы войти через Open_ID
Оставить комментарий как:
Гость:
Сообщение:
Подпишитесь на статьи через RSS

15 самых популярных статей: