我想在那里使用 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 变量与附加文本结合起来?

最佳答案

简短的回答是,我相信,不,您不能使用 an alias 以您想要的方式在 YAML 中进行字符串插值。

在您的情况下,我会做的是在我的语言环境文件中包含以下内容:

en:
  site_name: "Site Name"
  static_pages:
    company:
      description: ! '%{site_name} is an online system'

然后以站点名称作为参数调用适当的 View :
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"

然后你会在适当的 View 中 join 数组,如下所示:
t('.description').join(" ")

这也会让你得到 "Site Name is an online system"

但是,在您决定走这条路之前,除了@felipeclopes 链接的问题之外,请查看:
  • this StackOverflow answer 关于连接 i18n 字符串(tl;dr 请不要为了你的翻译团队)。
  • StackOverflow 问题 herehere 与您的问题类似。
  • 关于ruby-on-rails - 在 Rails 国际化 yml 文件中传递变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13055753/

    10-16 17:28
    查看更多