Вход/Регистрация
Программирование на языке Ruby
вернуться

Фултон Хэл

Шрифт:

Истоки синтаксиса правила

Plural-Forms
следует искать в языке С. Как видим, он опирается на тот факт, что булевские выражения в С возвращают 0 или 1.

Имейте в виду, что формы единственного и множественного числа в большой степени зависят от языка. Во многих языках есть несколько форм множественного числа. Например, в польском слово «файл» в единственном числе записывается как «plik». Если количество экземпляров заканчивается на 2, 3 и 4, то во множественном числе пишется «pliki», а во всех остальных случаях — «plik'ow».

Поэтому для польского языка правило

Plural-Forms
выглядит так:

Plural-Forms: nplurals=3; \

 plural=n==1 ? 0 : \

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

Заголовок файла — не пустая формальность. Особенно важны разделы

Content-Type
и
Plural-Forms
. При пользовании утилитой
msginit
они вставляются автоматически, в противном случае необходимо добавить их вручную.

Закончив работу, переводчик посылает файлы обратно разработчику (или вы сами возвращаетесь к роли разработчика).

Файлы

myapp.ро
, полученные от переводчиков, помещаются в соответствующие каталоги (внутри каталога
myapp/ро
). Например, французскую версию следовало бы поместить в каталог
myapp/ро/fr/myapp.ро
, немецкую — в каталог
myapp/po/de/myapp.ро
и т.д.

Затем выполните команду

rake makemo
. Она преобразует РО-файлы в МО-файлы. Сгенерированные МО-файлы будут помещены в каталог
myapp/data/locale/
(в котором есть подкаталоги для каждого языка).

Таким образом, окончательная структура дерева каталогов выглядит так:

myapp/

 Rakefile

 person.rb

 ро/

myapp.pot

de/myapp.po

fr/myapp.po

ja/myapp.po

:

 data/

locale/

de/LC_MESSAGES/myapp.mo

fr/LC_MESSAGES/myapp.mo

ja/LC_MESSAGES/myapp.mo

:

Перевод закончен, можно протестировать пример. Но предварительно следует указать, где искать МО-файлы и для какой локали проводится тестирование. Установим переменные окружения

GETTEXT_PATH
и
LANG
, запустим программу и посмотрим, что она выведет.

export GETTEXT_PATH="data/locale"

export LANG="ja_JP.UTF-8"

ruby person.rb

Программа выводит локализованные сообщения в соответствии со значением переменной

lang
.

4.3.4. Прочие замечания

Если вы распространяете вместе со своей программой справочники сообщений, то лучше собрать пакет с помощью системы RubyGems или библиотеки

setup.rb
. Дополнительную информацию по этому поводу вы найдете в разделе 17.2.

При установке пакета, собранного RubyGems, справочники сообщений копируются в каталоги вида:

(gem-packages-installed-dir)/myapp-x.x.x/data/locale/

Такие каталоги уже включены в путь поиска для библиотеки

gettext
, поэтому ваша программа будет локализована даже без явной установки переменной окружения
GETTEXT_PATH
.

В случае сборки пакета с помощью библиотеки

setup.rb
справочники сообщений помещаются в каталог
(system-dir)/share/locale/
. И в этом случае локализация достигается без установки переменной
GETTEXT_PATH
.

Напомним, что описанная библиотека не является оберткой набора утилит

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

4.4. Заключение

В этой главе мы рассмотрели один из самых сложных аспектов программирования — проблему интернационализации кода. При этом нам понадобился материал из двух предыдущих глав, так как интернационализация тесно связана со строками и регулярными выражениями.

Мы видели, что в Ruby некоторые задачи решаются просто благодаря наличию библиотеки

jcode
и сопутствующих инструментов. Заодно мы познакомились с наборами символов вообще и с набором Unicode в частности.

  • Читать дальше
  • 1
  • ...
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: