我试图使用i18n translate(t)方法翻译字符串。除了单词" on"我能用任何我能想到的键来理解它。我是否与关键字发生冲突?
现在,我只是给密钥一个不同的名称,这样我们就可以让我们的Rails应用程序使用多种语言。我只是好奇,因为我找不到任何关于它的文件。
我们将postgres用作数据库,如果这有任何区别的话。我真的不知道i18n课是如何工作的。
答案 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。