有没有一种方法可以嵌套翻译查找?就像这样:
en:
uh_oh: 'Uh Oh!'
error1: :'uh_oh' + ' There was a big error!'
error2: :'uh_oh' + ' There was another big error!'
I18n.t('error1') #=> 'Uh Oh! There was a big error!'
I18n.t('error2') #=> 'Uh Oh! There was another big error!'
我已经尝试过很多不同的变化,也尝试使用 Ruby 的翻译文件代替 YAML。请注意这个确实可以工作:
en:
uh_oh: 'Uh Oh!'
error1: :'uh_oh'
I18n.t('error1') #=> 'Uh Oh!'
但是如果我给error1
添加其他文本,uh_oh
就不会被翻译了。
基本上,我想避免总是传递常见术语,像这样:
en:
uh_oh: 'Uh Oh!'
error1: '%{uh_oh} There was a big error!'
I18n.t('error1', {uh_oh: I18n.t('uh_oh')})
对于常见术语,例如uh_oh
,每次调用error1
(和任何其他使用uh_oh
的键)的内插都是相同的,因此没有必要传入要内插的字符串。相反,可以更轻松地执行以下操作,并让error1
翻译处理通用键翻译:
I18n.t('error1')
key: "!some.key! foo bar"
在这种情况下,你的 I18n.t 包装器会获取该键,然后查找 some.key 并进行替换。 - chrismcg