0

Globalize3onRailsのカスタムフォールバックが必要です。

私はあなたが設定できることを知っています

config.i18n.fallbacks = true

未翻訳のテキストをデフォルトのロケールにフォールバックしますが、フォールバックされたテキストの前後の#not tnranslated#のように、未翻訳であることを示すものが必要です。

たとえば、デフォルトのロケールテキストが

Foo bar

翻訳されていないテキストに表示されるフォールバックテキストを

Foo bar #not translated!#

これを行うために私が理解できる唯一の方法は、テキストの周りにifを配置し、現在のロケールが翻訳されているかどうかを確認することです。

<% if article.is_translated?(I18n.locale) %>
  <%= article.title %>
<% else %>
  <%= article.title %>#not translated#
<% end %>

アドバイスをいただければ幸いです。

4

1 に答える 1

2

このようなパッチを追加するのはどうですか?

Globalize::ActiveRecord::Adapter.class_eval do
  def fetch(locale, name)
    record.globalize_fallbacks(locale).each do |fallback|
      value = stash.contains?(fallback, name) ? fetch_stash(fallback, name) : fetch_attribute(fallback, name)

      unless fallbacks_for?(value)
        set_metadata(value, :locale => fallback, :requested_locale => locale)
        return value if (fallback == locale)
        return value + " #not translated#"
      end
    end
    return nil
  end
end

はっきりしない場合は、私が変更した2つの行は次のとおりです。

        return value if (fallback == locale)
        return value + " #not translated#"
于 2012-08-02T07:12:23.220 に答える