l18n翻译使用“on”作为键的一部分不工作?它是关键字吗?

时间:2014-12-09 03:18:16

标签: ruby-on-rails ruby internationalization

我试图使用i18n translate(t)方法翻译字符串。除了单词" on"我能用任何我能想到的键来理解它。我是否与关键字发生冲突?

现在,我只是给密钥一个不同的名称,这样我们就可以让我们的Rails应用程序使用多种语言。我只是好奇,因为我找不到任何关于它的文件。

我们将postgres用作数据库,如果这有任何区别的话。我真的不知道i18n课是如何工作的。

1 个答案:

答案 0 :(得分:0)

问题与YAML的工作方式有关。

require 'yaml'

YAML::load("yes: Yes\nno: No")
# => {true=>true, false=>false}

YAML::load("on: Yes\noff: No")
# => {true=>true, false=>false}

YAML::load("on: Yes text\noff: No text")
# => {true=>"Yes text", false=>"No text"}

因此实际上在解析YAML之后没有'yes'密钥。这就是为什么你的翻译无法找到的原因。但是,您可以明确指定数据类型:

YAML::load("!!str on: Yes text\noff: No text")
# => {"on"=>"Yes text", false=>"No text"}

或只是在引号内写一个键:

YAML::load("'on': Yes text\noff: No text")
# => {"on"=>"Yes text", false=>"No text"}

您可以找到更详细的解释here,当然您可以阅读specification