加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – I18n数组中的插值

发布时间:2020-12-17 03:17:06 所属栏目:百科 来源:网络整理
导读:我在区域设置文件中使用数组,以便能够以区域设置特定的各种输出方法(ActionMailer模板,Prawn文档,HAML模板)生成文本块.它工作得很好,但有时我想将变量传递给这些I18n调用.但是,这不起作用. 假设我的语言环境文件如下所示: en: my_array: - "Line 1" - "Line
我在区域设置文件中使用数组,以便能够以区域设置特定的各种输出方法(ActionMailer模板,Prawn文档,HAML模板)生成文本块.它工作得很好,但有时我想将变量传递给这些I18n调用.但是,这不起作用.

假设我的语言环境文件如下所示:

en:
  my_array:
    - "Line 1"
    - "Line 2"
    - "Line 3 has a %{variable}"
    - "Line 4"

我希望I18n.t(‘my_array’,:variable =>’变量命名变量’)的输出如下:

["Line 1","Line 2","Line 3 has a variable named variable","Line 4"]

但是,输出是:

["Line 1","Line 3 has a %{variable}","Line 4"]

检索数组后,我是否必须自己进行插值?或者有更好的方法吗?

解决方法

我认为在i18n gem中本身不支持这样的东西,但它可以使用一些元编程魔法.

在初始化程序(例如,config / initializers / i18n.rb)中添加以下内容

I18n.backend.instance_eval do
  def interpolate(locale,string,values = {})
    if string.is_a?(::Array) && !values.empty?
      string.map { |el| super(locale,el,values) }
    else
      super
    end
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读