我想使用YML文件中声明在那里的变量。 例如,我宣布site_name
,并希望在下面使用description
。
en:
site_name: &site_name "Site Name"
static_pages:
company:
description: *site_name #this works fine
description: "#{*site_name} is an online system" #this doesn't work
我怎样才能结合*site_name
变量与其他文本?
简短的回答是,我相信,没有你做不到的串插在YAML您想使用方式的别名 。
在你的情况,我会做的是有这样的事情在我的区域文件中的以下内容:
en:
site_name: "Site Name"
static_pages:
company:
description: ! '%{site_name} is an online system'
然后在与该网站名作为参数相应的视图拨打:
t('.description', site_name: t('site_name'))
这将让你"Site Name is an online system"
。
但是,如果你绝望使用别名,在你的YAML文件来连接字符串连接在一起,下面的完全不推荐的代码也将由具有字符串数组的两个元素的工作:
en:
site_name: &site_name "Site Name"
static_pages:
company:
description:
- *site_name
- "is an online system"
然后你会join
像这样适当的视图数组:
t('.description').join(" ")
这也将让你"Site Name is an online system"
。
但是,你决定走这条路,除了那@felipeclopes链接到这个问题,之前看一下:
- 这个StackOverflow的答案就串联的i18n字符串(TL;博士,请为您的翻译团队的缘故没有)。
- StackOverflow的问题, 在这里和这里类似于你的问题。
您可以使用下面的语法,就像这个例子:
dictionary:
email: &email Email
name: &name Name
password: &password Password
confirmation: &confirmation Confirmation
activerecord:
attributes:
user:
email: *email
name: *name
password: *password
password_confirmation: *confirmation
models:
user: User
users:
fields:
email: *email
name: *name
password: *password
confirmation: *confirmation
sessions:
new:
email: *email
password: *password
这个例子是摘自: 重构的Ruby on使用字典Rails的国际化YAML文件