假设我有一个由分号(;
)分隔的多个部分组成的字段。例如,这将如下所示:
'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"
那么,这可能是这样做的吗?有什么建议 ?
答案 0 :(得分: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}
)
答案 1 :(得分:2)
我不知道如何与rails接口,但使用数组插入字符串很容易。使用%s
进行简单的字符串替换。您甚至可以使用适当的格式语法进行更精细的控制。
"%s - %s digits" % [10, 100]
# => "10 - 100 digits"