Globalize3およびI18nフォールバックを使用して、変換された属性のフォールバックを実装しようとしています。フォールバックを起動して実行するために、environment.rbファイルに次のファイルを追加しました。
#support for locale fallbacks
require "i18n/backend/fallbacks"
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
そして、私の設定ファイルで:
config.i18n.fallbacks = {'en-US' => 'zh-CN', 'zh-CN' => 'en-US'}
これで、フィールドが「en-US」ロケールで変換されない場合、「zh-CN」ロケールにフォールバックするアプリが実行されています。その逆も同様です。
ただし、これは、フォールバックがサイトのフォームでも発生することを意味します。これは、次の2つの理由から望ましくない動作です。
- ユーザーは、これは、このロケールが表示されている入力に対してこの値を持っていることを意味すると考えるかもしれません(フォールバックロケールから継承されたものです)。
- これらの継承された値を使用してフォームを保存すると、実際には翻訳が現在のロケールの値として保存されます。そのため、突然両方のロケールのデータが取得されますが、ユーザーはこれを知らない(または理由がわからない)場合があります。
編集ページ/翻訳された属性を持つオブジェクトを表示しているフォームでフォールバックを無効にしたいのですが。これを行う方法はありますか?
svenfuchshttps : //github.com/svenfuchs/globalize3のバージョンのGlobalize3とI18nを使用しています