Управление интернационализацией в 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 на рельсах
-
Взять Для Меня Доменное Имя - Это
19 Oct, 24 -
Упущенные Возможности Bigdata
19 Oct, 24 -
Интернет-Радио
19 Oct, 24