Временное отключение i18n отката в Rails - PullRequest
8 голосов
/ 10 сентября 2010

I18n резервный загружен:

 I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

Есть идеи сейчас временно отключить его? У меня есть формы, в которых я хочу редактировать версии на разных языках, и в качестве запасного варианта я получаю поля с языком по умолчанию, если данный перевод еще не представлен.

Ответы [ 4 ]

4 голосов
/ 02 апреля 2013

Вы можете передать параметр fallback: true в I18n.t, что помешает I18n искать другие локали ( см. Реализацию здесь ).Но это, вероятно, не часть публичного API ...

2 голосов
/ 29 апреля 2014

Вы можете передавать :fallback => 'false' на свои I18n.translate вызовы, но это не является частью общедоступного API.

Другой способ, которым вы можете попробовать, является следующим:

I18n.available_locales.each do
  |al| I18n.fallbacks.merge!({al => [al]})
end

Это в основном сделает запасной вариант для каждой доступной локали, чтобы включить только себя.Таким образом, если перевод не найден сам по себе, то не существует запасного варианта, к которому можно вернуться.

Однако вам нужно найти способ восстановить запасной вариант по умолчанию.

Выможет сделать это, например, с помощью такого заявления:

I18n.available_locales.each do
  |al| I18n.fallbacks.merge!({al => [al, I18n.default_locale]})
end
1 голос
/ 26 апреля 2016

если кому-то все еще интересно, как это сделать, вы можете изменить I18n.fallbacks на лету:

def foo
  I18n.fallbacks[:at] = [:at]
  # do stuff with I18n#t
ensure
  I18n.fallbacks[:at] = [:at, :de] # or whatever is was before
end

Не уверен, насколько это безопасно.

0 голосов
/ 11 января 2011

Вы используете глобализацию?

Я использую резервный I18n для моих системных строк и globalize3 для моих переводов атрибутов Я хочу, чтобы системные строки были резервными, но не атрибуты. Я просто отключил откат для глобализации только небольшим патчем обезьяны:

конфиг / Инициализаторы / i18n.rb:

require "i18n/backend/fallbacks" 
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

# monkey patch globalize3 to not use fallbacks
module Globalize
  def self.fallbacks?
    false
  end
end
...