9

I18n フォールバックがロードされます:

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

一時的に無効にするアイデアはありますか?さまざまな言語バージョンを編集したいフォームがあり、フォールバックを使用すると、特定の翻訳がまだ存在しない場合、デフォルト言語のフィールドを取得できます。

4

4 に答える 4

2

呼び出しを渡すことができ: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
于 2014-04-29T16:20:22.897 に答える
1

誰かがまだそれを行う方法を知りたい場合は、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

ただし、それがどれほど安全かはわかりません。

于 2016-04-26T10:03:33.653 に答える
0

グローバリゼーションを使用していますか?

システム文字列には 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
于 2011-01-11T18:46:24.760 に答える