我有编写这样的日志消息的脚本:
<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'}
答案 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