如何检查Globalize是否使用了后备

时间:2016-11-15 21:27:11

标签: ruby-on-rails ruby internationalization globalize

我正在使用:

<div class="span3">
 <jdoc:include type="modules" name="position-0" />
 <jdoc:include type="modules" name="position-1" />
 <jdoc:include type="modules" name="position-2" />
 <jdoc:include type="modules" name="position-3" />
 <jdoc:include type="modules" name="position-4" />
 <jdoc:include type="modules" name="position-5" />
</div>
<div class="span3">
 <jdoc:include type="modules" name="position-6" />
 <jdoc:include type="modules" name="position-7" />
 <jdoc:include type="modules" name="position-8" />
 <jdoc:include type="modules" name="position-9" />
 <jdoc:include type="modules" name="position-10" />
 <jdoc:include type="modules" name="position-11" />
 <jdoc:include type="modules" name="position-12" />
 <jdoc:include type="modules" name="position-13" />
 <jdoc:include type="modules" name="position-14" />
</div>

在我的Image.rb模型中,我有两列我想翻译(英语和德语):

gem 'rails', '4.0.0'
gem 'globalize', '~> 4.0.2'

在application.rb中我设置:

translates :name, :description

Everthing工作正常。我有一个英文描述,如果我将语言改为德语,它会显示德语描述以防有一个,否则显示英文文本。 Proplem仍然是大多数图像描述没有德语翻译,所以我想在德国网站上添加一条短信,说目前没有德语翻译,但我们会显示英文文本,直到有德语翻译为止。< / p>

我计划在我的视图中添加类似

的内容
config.i18n.fallbacks = true

有没有办法检查Globalize是否使用了回退选项并在这种情况下显示消息?

1 个答案:

答案 0 :(得分:5)

Globalize将translated_locales方法添加到已翻译模型的实例中。

translated_locales返回特定实例的所有可用语言环境的数组。当此数组不包含当前I18n.locale时,将使用后备。

你可以这样使用:

<%= image.name %>
<%= image.description %>

<% unless image.translated_locales.include?(I18n.locale) %>
  Message: This text has not been translated yet and is shown in English
<% end %>