如何翻译带有自定义参数集的字符串?

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