0

假设我有一个由分号 ( ;) 分隔的多个部分组成的字段。例如,这将如下所示:

'range_numeric; 10; 100'
'length_numeric; 5'

第一部分将是翻译的关键,任何后续部分将是要填充到文本中的插值。基本上它是作为命名参数传递的,但我不想为每个插值值定义键,我试图使用I18n如下:

en:
 length_numeric: "%{1} digits"
 range_numeric: "%{1} - %{2} digits"

我试图传递如下插值:

t(:range_numeric, 10, 100) # returns "%{1} - %{2} digits" 

那么,这样做有可能吗?有什么建议么 ?

4

2 回答 2

3

您可以通过数组项的位置将数组转换为哈希:

values = [10, 100]
mapped_values = Hash[(0...values.size).map(&:to_s).map(&:to_sym).zip(values)]
t(:range_numeric, mapped_values)

(插值键将从 0 开始%{0}

于 2013-09-25T08:03:33.697 回答
2

我不知道如何与 rails 交互,但是用数组插入字符串很容易。用于%s简单的字符串替换。您甚至可以通过使用适当的格式语法进行更好的控制。

"%s - %s digits" % [10, 100]
# => "10 - 100 digits"
于 2013-09-25T08:41:06.850 回答