0

我想为 Globalize3 on Rails 提供一些客户回退。

我知道你可以设置

config.i18n.fallbacks = true

并将未翻译的文本回退到其默认语言环境,但我宁愿在回退文本之前或之后有一些表明它未翻译的内容,例如#not tnranslated#。

例如,如果默认语言环境文本是

Foo bar

我希望未翻译文本上显示的后备文本是

Foo bar #not translated!#

我能想到的唯一方法是在文本周围加上 if else 并检查当前语言环境是否已翻译,这似乎并不优雅,就像这样。

<% 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

如果不清楚,我更改的两行是这些:

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