Ruby On Rails I18N: Разработчик — Разрабатывает, Клиент — Заполняет. Об Остальном Позаботится Сервис



Управление интернационализацией в Rails с использованием сторонних сервисов Один из моих любимых компонентов Rails — организация интернационализации и локализации с помощью класса I18n и файлов словарей (en.yml, ru.yml и т.п.

).

А вот если взять не «сферический проект в вакууме», а реальное приложение с группой разработчиков и кучей веток в репозитории, то иногда голова пухнет решать конфликты при слиянии разных веток/версий, которые так или иначе возникают в файлы локали.

Что я должен делать? Вот тут-то нам и приходят на помощь различные сторонние сервисы со своими перлами.



99Переводы
Первой услугой по управлению интернационализацией, с которой я столкнулся, была 99Переводы , который предоставлял возможность загрузить на сервер специальный файл локали master.yml (файл должен содержать только ключи) и там он был разобран и добавлен ключи к остальным установленным локали.

Далее на приборной панели отобразилась информация о новых ключах, требующих перевода.

После того как словари были полностью (или частично) заполнены, их можно было взять с сервера и легко зафиксировать в репозитории.

Почему я говорю в прошедшем времени? Потому что этот сервис канет в Лету 31 марта 2012 года и использовать его в реальных проектах нецелесообразно.

Здесь оно приведено только в качестве примера.

Плюсы: — Простота и понятность использования с точки зрения программы, ничего лишнего.

— 1 файл-хранитель ключей: никаких конфликтов, полная уверенность в наличии интернационализации на страницах приложения для всех локалей (читай, нет сообщений об отсутствии перевода) при условии, что вы добавили ее в master.yml. Минусы: — Нельзя одновременно вводить переводы через веб-интерфейс для нескольких локалей — Однако веб-интерфейс перегружен (мне он показался немного ненужным, с кучей ненужных вкладок).



LocaleApp
LocaleApp сразу привлек мое внимание своей «свежестью» (все еще в бета-версии) и Rails-ориентированностью.

Посмотрев на дашборд и проведя там немного времени, я понял, что интерфейс интуитивно понятен, а возможность заполнять сразу несколько локалей существенно облегчает жизнь переводчику/клиенту (как следствие, улучшает качество работы).

состояние и настроение разработчика).

Дальше - интереснее: когда приложение работает в режиме разработки - гем предоставляемый сервисом, автоматически запрашивает локали с сервера (он делает это при каждом запросе, что в определенной степени замедляет работу приложения) и отслеживает недостающие ключи в процессе рендеринга.

Если таковые будут найдены, он позаботится о том, чтобы они были добавлены в словари.

Удобно, не так ли? Ну а перейдя на панель управления, вы сможете увидеть, насколько заполнена каждая локаль и что следует добавить.

Плюсы: — Возможность заполнения нескольких локалей одновременно.

- Автоматически загружает последние интернационализации по каждому запросу.

— Автоматическое добавление ненайденных ключей в файлы локализации.

- Красивый интерфейс.

— Отличный старт: добавляя новую локаль в проект через веб-интерфейс, вы получаете все стандартные ключи (названия месяцев, дней, форматы даты и времени и многое другое) уже переведенные.

— Бесплатная бета-версия: есть возможность попробовать и понять, нужно ли это нам.

Минусы: — Фоновые процессы сильно раздражают разработчика и замедляют работу приложения (но, к счастью, их можно легко отключить — см.

документацию по гему).

— Иногда запросы на отсутствующие переводы с областями работы работают некорректно: I18n.t('key', :scope => :some_scope) и автоматически добавляет их в неправильное пространство имен ('key' будет добавлен как глобальный ключ).

Ну бета есть бета.

Мы надеемся, что это будет исправлено.

— Благодаря тому, что на сервер можно загрузить любой файл словаря, иногда давно удаленные ключи начинают «воскрешаться».

Поэтому лучше это делать через веб-интерфейс.

P.S. Основное преимущество таких сервисов в том, что все ветки и все разработчики имеют одни и те же файлы локали, и при объединении веток/версий можно сконцентрироваться на сравнении программного кода, а не на особенностях перевода на тот или иной язык (хотя это может показаться кому-то это минус).

Также важно заключается в том, что вы держите переводчиков подальше от репозиториев и источников, а они, в свою очередь, являются хозяевами локалей.

Обновление: удалены сокращения.

Теги: #ruby на рельсах #ruby #i18n #ruby на рельсах

Вместе с данным постом часто просматривают: