15

я в настоящее время имеют следующие 4 файлов в моем Config/локалей моего корня приложения:Организация файлов локали в рельсах приложение

-en.yml 
-de.yml 
-simple_form.en.yml 
-simple_form.de.yml 

В моей application.rb который находится в спецификации/манекен папка для тестирования приложений жемчужину у меня есть следующие строки кода, который, кажется, получение переводов, как и ожидалось:

# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 
config.i18n.default_locale = :de 

I п ow хочет представить структуру в файловой структуре моей папки локалей, но когда я добавляю дополнительные папки и меняю путь загрузки в application.rb Я получаю перевод не найденных ошибок. Вот моя попытка:

Попытка включая структуру в конфигурации/локалей моего корня приложения:

-views 
    -en.yml 
    -de.yml 
-models 
    -en.yml 
    -de.yml 
-forms 
    -simple_form.en.yml 
    -simple_form.de.yml 

И мой путь нагрузки в application.rb изменено на:

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] 

В соответствии со следующими направляющими для направляющих: http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-domain-name

+0

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

+0

В представлении я получаю строку: перевод отсутствует: ru.new_tenant.header, я не вижу никаких сообщений об ошибках – Jay

+0

Может ли проблема быть в том, что файл application.rb находится в папке спецификации для целей тестирования и что моя папка конфигурации не загружается на корневом уровне, и я вижу только переводы, когда config/locales добавляются автоматически, но не вложенные папки? – Jay

ответ

10

Чтобы протестировать приложение-хост, вам необходимо изменить путь i18n.load_ в папку конфигурации вашего основного приложения, а не фиктивную спецификацию для целей тестирования. Код выглядит следующим образом:

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] 
config.i18n.default_locale = :en 
+6

Для меня строка была: 'config.i18n.load_path + = Dir [Rails.root.join ('config', 'locales', '**', '*. {rb, yml}'). to_s] ' – franzlorenzon

+0

Лучше использовать' Rails.root', чем корневой путь с жестким кодированием – Dorian

7

У меня была аналогичная проблема, я решил ее, добавив следующую строку в моей application.rb конфигурации:

# load the subfolders in the locales 
config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"] 
1

следующие варианты все работали для меня

config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.yml"] 

config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"] 

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**' '*.{rb,yml}').to_s] 

После перезапуск на веб-сервере, конечно ...

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