假设我有views/admin/
,views/user/
,controller/admin/
,controller/user/
(等)文件夹,那么构建我的locales.yml
文件的正确方法是什么呢?工作正常吗?
现在,它看起来像这样:
en:
views:
admin:
index:
phrase1: Text1
phrase2: Text2
...
new:
show:
...
user:
index:
new:
show:
controllers:
...
etc
但是当我在<%= t :phrase1 %>
代码中添加/views/admin/index.html.erb
时,它不起作用(既不是这也不是<%= t ".phrase1" %>
所以它不是语法错误)。但是,如果我将phrase1: Text1
放在en:
行的下方(任何子词典上方),一切正常。
答案 0 :(得分:2)
您必须使用密钥才能获得翻译。将它看作树状结构。你必须告诉最后一页的整个路径。
在您的情况下,它是以下密钥:
"views.admin.index.phrase1"
例如,我们可以有一个如下所示的翻译文件:
en:
home:
salutation: "Welcome home"
admin:
salutation: "Welcome back master"
如您所见,我们有两个名为称呼的键。如果我们只使用“称呼”作为关键,就不可能分辨出我们需要哪一个。
使用路径home.salutation
或admin.salutation
可明确我们需要的文字值。
此外,必须输入整个键的一个原因比键入一部分更好。假设您能够编写一个依赖于上下文的转换,它将为该键设置前缀。当在控制器中时,它会在视图controllers.
中添加views.
,依此类推。
如果您输入完整密钥,您将始终在项目中找到它的使用位置。
如果你开始编写部分密钥,比如说dog
,你会在代码中找到每个有dog
字但不完全是controllers.home.dog
的地方。什么时候调试和更改语言,你会很乐意使用完整的密钥。