如何翻译带有自定义参数集的字符串?
How to translate string with custom parameters set?
我有这样的脚本来编写日志消息:
<i18n param1="value1" param2="value2">translation_template</i18n>
参数数量和名称可能会有所不同。我使用正则表达式获得的消息、参数名称和值,之后我有数据
{
message: 'translation_template'
param1: 'value1'
param2: 'value2'
}
我想在 Rails 内部化中使用 Ruby 翻译该消息。
方法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 内部化已经可以在散列中传递参数。
但不知何故我做不到:)
我遇到的错误:
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
我有这样的脚本来编写日志消息:
<i18n param1="value1" param2="value2">translation_template</i18n>
参数数量和名称可能会有所不同。我使用正则表达式获得的消息、参数名称和值,之后我有数据
{
message: 'translation_template'
param1: 'value1'
param2: 'value2'
}
我想在 Rails 内部化中使用 Ruby 翻译该消息。
方法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 内部化已经可以在散列中传递参数。
但不知何故我做不到:)
我遇到的错误:
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