Я создаю одностраничное приложение ajax с BackboneJS и бэкэндом RoR 3.2 (обновленным с 3.1). Я использую клиентскую библиотеку перевода I18n Javascript, которая хранит свои данные в объекте JSON. Я управляю переводами в бэкэнде с помощью файлов yml и гема i18n по умолчанию.
У меня есть один переводческий актив для каждого языка, например, английский:
//FILE: <project_root>/app/assets/javascripts/translations/en.js.erb:
I18n || (I18n = {});
I18n.translations || (I18n.translations= {});
I18n.translations["en"] = <%= I18n.with_locale(:en) { I18n.t(".") }.to_json %>;
Мои переводы находятся в config / locales / и его подкаталогах. Я настроил путь загрузки следующим образом:
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
Пока все хорошо, все работает нормально, однако новые переводы, добавленные в файлы yaml, не будут автоматически доступны на клиенте после перезагрузки страницы в режиме разработки. Новые переводы доступны только в том случае, если я перезапущу сервер и внесу изменения в соответствующий ресурс перевода (например, добавив пустую строку). Эта рутина довольно утомительна ...
- Как я могу явно указать конвейеру / звездочкам ресурсов на повторную обработку моих активов перевода каждый запрос? Или, что еще лучше, есть ли (простое) решение для отслеживания файлов yaml и указания звездочек на повторную обработку ресурсов перевода?
- Rails почему-то не выполняет автоматическое обновление хеша перевода i18n при добавлении новых переводов в новые или существующие файлы yaml. Я не знаю почему, но это должно нормально работать. Любая подсказка?