2015-08-27 4 views
1

Я работаю над функцией в приложении Rails, которая зависит от конкретной информации, относящейся к языку. При тестировании я хочу показать, что какое-то поведение зависит от того, что содержит локаль.Как я могу добавить ключи к I18n для тестов?

Как я могу динамически добавлять или редактировать переводы, которые будут использоваться I18n.t при тестировании?

ответ

2

I18n.backend.store_translations

# Will add a key or overwrite the existing value 
I18n.backend.store_translations("en", {cat: "cat"}) 
I18n.backend.store_translations("es", {cat: "gato"}) 

I18n.t(:cat, locale: "en") # => "cat" 
I18n.t(:cat, locale: "es") # => "gato" 

Обратите внимание, что вы не можете добавить ключи для любых районов таким образом; вы получите I18n::InvalidLocale. Для того, чтобы определить доступные языки, вы можете использовать:

existing_locales = I18n.config.available_locales 
new_locales  = existing_locales + Set.new(["es", :es]) 
I18n.config.available_locales = new_locales 

Наконец, следует отметить, что если вы сделаете глобальные изменения, как, что для тестирования, вы, вероятно, хотите, чтобы изменить его обратно на очистку после теста, так что другие тесты Арен Это затронуто.

 Смежные вопросы

  • Нет связанных вопросов^_^