ruby-on-rails - 在rails国际化yml文件中传递变量

标签 ruby-on-rails ruby-on-rails-3 internationalization yaml

我想使用 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'))

这会让您“站点名称是一个在线系统”

但是,如果您迫切希望在 YAML 文件中使用别名将字符串连接在一起,则以下完全不推荐代码也可以通过让字符串成为数组的两个元素来工作: p>

en:
  site_name: &site_name "Site Name"
  static_pages:
    company:
      description:
        - *site_name
        - "is an online system"

然后您将在适当的 View 中加入数组,如下所示:

t('.description').join(" ")

这也会让您“站点名称是一个在线系统”

但是,在您决定走这条路之前,除了 @felipeclopes 链接到的问题之外,请看一下:

  • this StackOverflow answer关于连接 i18n 字符串(tl;dr,为了您的翻译团队,请不要这样做)。
  • StackOverflow 问题 herehere与您的问题类似。

关于ruby-on-rails - 在rails国际化yml文件中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13055753/

相关文章:

ruby-on-rails - Rails 3,如果存在,则为给定 Controller 渲染部分?

ruby-on-rails - 按字符串过滤而不是在 ActiveAdmin 中选择

oracle - 考虑到在数据库服务器上定义的NLS_NUMERIC_CHARACTERS,如何使用正确的TO_NUMBER()Oracle函数?

mysql - 合并一年来创建的具有相同结构的两个数据库,同时牢记 ID 和关系 - MySQL

jquery - 在没有 Rails 内置帮助程序的情况下使用 AJAX 的最佳实践?

ruby-on-rails-3 - 使用 DateTime.strptime 时不考虑 Rails 夏令时

proxy - 在代理后面设置 bundler

ruby-on-rails-3 - TeamCity 和 Rails 部署

Java ResourceBundles 变音搞砸了

list - l10n/i18n : how to handle phrases with dynamic list of items?