我想在那里使用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
变量与其他文本合并?
答案 0 :(得分:54)
简短的回答是,我相信,你不能按照你想要的方式使用an alias在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链接到的问题之外,请看一下:
答案 1 :(得分:6)
您可以使用以下语法,例如:
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
此示例取自:Refactoring Ruby on Rails i18n YAML files using dictionaries