8

Rails 3 と Globalize3 0.2.0.beta4 を使用しています。

理想的には、:en にフォールバックするには :fr が必要であり、その逆も同様です。

ロケールが :en の場合でも、フランス語の翻訳しかなく、それを表示する必要がある場合があります。

私は試した

config.i18n.fallbacks = { :fr => :en, :en => :fr }

しかし、当然のことながら、スタックレベルが深すぎるというエラーが発生します。

4

5 に答える 5

5

答えを変えています。

フォールバックを有効にするには、以下を environment.rb ファイルに追加します。

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

次に、試みていたように循環フォールバックを有効にすることができます。

   config.i18n.fallbacks = {'en' => 'fr', 'fr' => 'en'}

この場合、en ロケールで何かが欠落している場合は、fr ロケールをチェックし、次にその逆を行います。これを実行してもエラーは発生しません。

ソース: http://batsov.com/articles/2012/09/12/setting-up-fallback-locale-s-in-rails-3/

于 2012-12-18T03:53:44.280 に答える
1

最後に、私は Globalize3 にパッチを適用しました。サイトで新しいロケールが必要になるたびにパッチを更新する必要があるため、あまり良くありませんが、うまくいきました.

module Globalize

  class << self

    def fallbacks(locale = self.locale)
      case locale
      when :en then [:en, :fr]
      when :fr then [:fr, :en]
      end
    end

  end
end
于 2011-11-10T19:01:37.797 に答える
1

ロケールの配列を渡すと、すべてのロケールのデフォルトのフォールバックとして設定されます。

config.i18n.fallbacks = [:en, :fr]

残念ながら、2 つのロケールだけを相互にフォールバックするように設定する方法は見つかりませんでした。

于 2011-11-10T16:27:27.540 に答える
0

これは次のように変更されたようです。

Globalize.fallbacks = {:en => [:en, :fr], :fr => [:fr, :en]}

公式ドキュメントから入手: https://github.com/globalize/globalize#fallback-locales-to-each-other

于 2013-11-19T11:28:25.277 に答える
0

最新の i18n gem (0.7.0) では、次のようにフォールバック ロケールを定義する必要があることがわかりました (in config/application.rb):

# Custom I18n fallbacks
config.after_initialize do
  I18n.fallbacks = I18n::Locale::Fallbacks.new(at: :"de-DE", ch: :"de-DE", gb: :"en-US")
end

config.i18n.fallbacks = trueまた、すべてのファイルに設定する必要がありconfig/environments/*.rbます。

于 2015-02-06T16:40:22.197 に答える