传递变量中轨国际阳明文件(Passing variables inside rails intern

2019-07-02 13:28发布

我想使用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变量与其他文本?

Answer 1:

简短的回答是,我相信,没有你做不到的串插在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的问题, 在这里和这里类似于你的问题。


Answer 2:

您可以使用下面的语法,就像这个例子:

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文件



文章来源: Passing variables inside rails internationalization yml file