Подтвердить что ты не робот

Как использовать ключ i18n в качестве перевода по умолчанию в Rails 3?

Например:

I18n.t('something')

должен выводиться только

something

если перевод отсутствует.

4b9b3361

Ответ 1

нет, это невозможно. Если вы используете I18, вам нужно иметь файл, соответствующий языку, иначе I18n будет жаловаться.

Конечно, вы можете установить язык по умолчанию в файле environment.rb. Должно быть около дна, и вы можете установить его для любого языка, который вам нужен, но в вашей папке locales/ вам понадобится соответствующий перевод yml.

Ответ 3

На рельсах 4 вы можете изменить обработчик исключений.

Добавьте в config/initializers/i18n.rb следующее:

module I18n
  class MissingTranslationExceptionHandler < ExceptionHandler
    def call(exception, locale, key, options)
      if exception.is_a?(MissingTranslation)
        key
      else
        super
      end
    end
  end
end

I18n.exception_handler = I18n::MissingTranslationExceptionHandler.new

Теперь вы можете просто делать:

<p><%= t "Not translated!" %></p>

Руководство по теме: http://guides.rubyonrails.org/i18n.html#using-different-exception-handlers

Ответ 4

боковой примечание: это может помочь выяснить, что Rails считает текущую область действия (например, при использовании ".something" )

http://unixgods.org/~tilo/Rails/which_l10n_strings_is_rails_trying_to_lookup.html

таким образом, вы можете лучше избегать отсутствия переводов из-за неправильного размещения строк перевода в L10n файле/неправильных клавишах

Ответ 5

Ответ Дэвида - правильное решение вопроса, другой (более подробный) способ сделать это - спасти и вернуть ключ:

def translate_nicely(key)
  begin
    I18n.translate!(key)
  rescue
    key
  end
end