Как использовать ключ i18n в качестве перевода по умолчанию в Rails 3? - PullRequest
12 голосов
/ 02 ноября 2010

Например:

I18n.t('something')

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

something

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

Ответы [ 5 ]

26 голосов
/ 08 июня 2011

Возможно: См. Раздел 4.1.2 Значения по умолчанию в Интерфейс Rails International (I18n) .

I18n.t :missing, :default => 'Not here'
# => 'Not here'
7 голосов

На рельсах 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

1 голос
/ 28 февраля 2013

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

def translate_nicely(key)
  begin
    I18n.translate!(key)
  rescue
    key
  end
end
1 голос
/ 07 сентября 2011

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

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

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

0 голосов
/ 02 ноября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...