Rails3 在模型文件中使用 i18n 字符串

Jer*_*ome 3 ruby-on-rails-3.2 rails-i18n

在应用程序中,需要以用户的语言生成字符串,然后将其传递到另一个服务器/应用程序。因此该模型可以识别

  def user_language
    self.user.idioma.code.downcase
  end
Run Code Online (Sandbox Code Playgroud)

但基于该语言生成一个字符串并读取语言环境的 yaml 文件是一个挑战:

  def description
    user_language.products.name
  end
Run Code Online (Sandbox Code Playgroud)

我意识到该模型不知道去查找区域设置文件。怎样才能调用它呢?

Jer*_*ome 5

答案更简单(正如我所料,相当简洁)

  def description
    I18n.t('products.name', :locale => user_language)
  end
Run Code Online (Sandbox Code Playgroud)

请注意 I18n 中的大写“I”。我在这个问题上停留了很长一段时间。我见过的大多数参考资料都使用第一个字符小写 => i18n,但这会生成一个

未定义的局部变量或方法“i18n”