2015-10-08 63 views
0

我有寫日誌信息像這樣的腳本:如何翻譯字符串與自定義參數設置?

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

參數數目和名稱可能是不同的。消息,參數的名稱和值,我得到使用正則表達式,在那之後我有數據

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

而且我要翻譯於軌道內使用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'} 

回答

0

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