如何使用自定义参数设置翻译字符串?

时间:2015-10-08 06:34:56

标签: ruby-on-rails rails-i18n

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

<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'}

1 个答案:

答案 0 :(得分:0)

Ruby on Rails内化已经可以在hash中传递参数。

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

我遇到的错误:

  • count参数必须为整数
  • 键必须为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