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

use*_*062 2 ruby ruby-on-rails internationalization globalize

我在用:

gem 'rails', '4.0.0'
gem 'globalize', '~> 4.0.2'
Run Code Online (Sandbox Code Playgroud)

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

translates :name, :description
Run Code Online (Sandbox Code Playgroud)

在application.rb我设置:

config.i18n.fallbacks = true
Run Code Online (Sandbox Code Playgroud)

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

我打算在我的观点中添加类似的东西

if fallback.true?
  Message: This text has not been translated yet and is shown in English
Run Code Online (Sandbox Code Playgroud)

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

spi*_*ann 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 %>
Run Code Online (Sandbox Code Playgroud)