【问题标题】:How to translate string with custom parameters set?如何使用设置的自定义参数翻译字符串?
【发布时间】:2015-10-08 06:34:55
【问题描述】:

我有这样写日志消息的脚本:

<i18n param1="value1" param2="value2">translation_template</i18n>

参数数量和名称可能不同。我使用正则表达式获得的消息、参数名称和值,之后我有了数据

{
    message: 'translation_template'
    param1: 'value1'
    param2: 'value2'
}

我想使用 Ruby on Rails 内部化来翻译这些消息。 方法i18n.t可以传递参数并在翻译中使用:

t 'translation_template', param1: 'value1', param2: 'value2'

如果本地化文件有行

some_lang:
  translation_template: "Translated %{param1} is %{param2}"

用户将看到Translated value1 is value2

但是这种语法意味着一定数量的参数。

如何传递以前未知的参数集? 例如,通过哈希,是这样的:

t 'translation_template', { 'param1': 'value1', 'param2': 'value2'}

【问题讨论】:

    标签: ruby-on-rails rails-i18n


    【解决方案1】:

    Ruby on Rails 内部化已经可以在哈希中传递参数了。

    但不知何故首先我做不到:)

    我遇到的错误:

    • count参数必须是整数
    • keys 必须有Symbol 类型

    此代码适用于我:

    value_params = get_params # get parameters method
    translation_params = Hash.new
    value_params.each do |param|
        name = param.get_name # get parameter name method
        value = param.get_value # get parameter value method
        value = value.to_i if name == 'count' # convert count value to integer
        translation_params.merge!({name.to_sym => value}) # convert parameter name to Symbol
    end
    t 'translation_template', translation_params
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多