Я создал гем (TranslationsGem), который использую в нескольких проектах (движок и приложение Rails). Этот гем устанавливает несколько хэшей, которые загружаются в серверную часть I18n.
Метод #store_dynamic_translations
устанавливает несколько хэшей, которые загружаются в серверную часть I18n. В основном это работает так:
I18n.backend.store_translations(:en, { test: { property: 'value' } })
Мои тесты подтверждают, что метод и загрузка перевода работают корректно. Однако я не могу заставить его работать в хост-движке и приложении Rails. В моей тестовой среде я должен выполнить метод в моем test_helper
, чтобы убедиться, что переводы загружаются правильно. Вне тестовой среды я не могу заставить его работать правильно. Я могу убедиться, что метод выполняется, но переводы не загружаются.
Я пробовал множество вещей в течение нескольких часов, например, выполняя метод в Инициализатор движка и использование перехватчиков ActiveSupport. В хост-приложении Rails я попытался выполнить #store_dynamic_translations
в инициализаторе, но безрезультатно.
Как ни странно, если я выполняю #store_dynamic_translations
в своем контроллере или представлении приложения Rails, это работает. Есть ли способ настроить это во время загрузки приложения?
EDIT: я установил пример репозитория, который содержит текущую настройку.
Gem, который динамически сохраняет переводы в бэкэнд I18n.
Rails Engine, который загружает гем и должен иметь доступный перевод
В данном тесте раскомментирование директивы MyI18n::Translations.store_dynamic_translations
делает тест пройденным. Но это должно быть возможно сделать из инициализатор движка Я думаю?
after_initialize
действительно работает, судя по тесту, который я только что провел! В отличие от всех других крючков, которые я пробовал. Сегодня постараюсь в этом убедиться. - person richard   schedule 06.07.2016