I18n フォールバックがロードされます:
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
一時的に無効にするアイデアはありますか?さまざまな言語バージョンを編集したいフォームがあり、フォールバックを使用すると、特定の翻訳がまだ存在しない場合、デフォルト言語のフィールドを取得できます。
I18n フォールバックがロードされます:
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
一時的に無効にするアイデアはありますか?さまざまな言語バージョンを編集したいフォームがあり、フォールバックを使用すると、特定の翻訳がまだ存在しない場合、デフォルト言語のフィールドを取得できます。
呼び出しを渡すことができ: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
誰かがまだそれを行う方法を知りたい場合は、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
ただし、それがどれほど安全かはわかりません。
グローバリゼーションを使用していますか?
システム文字列には I18n フォールバックを使用し、属性の翻訳には globalize3 を使用しています。システム文字列をフォールバックさせたいが、属性はフォールバックさせたくない。小さなモンキー パッチのみを使用して、グローバル化のフォールバックを無効にしただけです。
config/initializers/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