Может быть, тогда никто не писал бы приложений, говорящих на отвратительном русском языке, потому что не пришлось бы писать некрасивых if-ов
Попробую набросать здесь требования к такой библиотеке.
1. Работа с числительными
1.1 Подстановка правильных склонений для числительных (У вас 1 новое сообщение, 5 новых сообщений, 16 сообщений)
2. Работа с временем
2.1 Подстановка правильных склонений для времени (Выходим через 22 минуты, через 30 минут, до завершения работы осталось 33 минуты 21 секунда)
2.2 Подстановка общеупотребительных значений для интервалов времени: (Событие произошло вчера, произошло неделю назад. Следующее событие через 2 дня)
3. Поддержка сообщества
3.1 Открытый исходный код
3.2 Стандарты на API
3.3 Версии для основных языков программирования
Что еще
Знаю, что подобные замуты были с библиотекой gettext, но не уверен, что этого достаточно.
4 комментария:
На мой взгляд, проблема в универсальности. Для русского языка такую библиотеку (по крайней мере, в части правильного склонения числительных) сделать несложно. А вот библиотеку, которая учитывает все мыслимые флексии всех мировых языков...
Сиблиотеку, конечно, универсальной не сделать, да и не надо это. Надо сделать что-то навроде провайдеров грамматических данных для каждого языка. А у провайдера стандартизовать интерфейс вызова - это, на мой взгляд, вполне реально
Не знаю, возможно ли это. Ну, например, сделаем мы функцию для склонения числительных:
склонение(количество, единица)
Хотим в блоге отображать количество комментариев:
"К этому сообщению написано" + склонение(12, "комментарий")
Но что если в каком-то языке нужно будет обеспечить иной порядок слов? Например:
К этому сообщению комментариев написано 12
Тогда в ресурсах должна быть строчка "К этому сообщению написано $$gettext({0}, комментарий)", в другом языке порядок может быть другой: "$$gettext({0}, комментарий) у этого сообщения". Для склонения можно использовать вот это: http://morpher.ru
Отправить комментарий