有没有办法嵌套翻译查找?像这样:
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
翻译负责公共(public)键翻译会更容易:
I18n.t('error1')
最佳答案
我不会回答你的问题(我认为 i18n gem 不可能,但可能是错误的)。我要说的是,您不应该采用这种方法并将链接 [1] 作为背景。作为开发人员,很自然地会看到模式并提取通用代码以保持内容干爽。在处理多种语言时,这一步太过分了,因为它会妨碍正确的翻译。并非所有语言都遵循与英语相同的句子结构,您要替换的内容可能必须更改以与句子的其余部分一致。
在我工作的网站上,我们遇到了法语问题。我们有包含位置名称的句子,这在英语中很简单。 “%{location_name} 属性”适用于任何位置名称。但是,在法语中,您需要不同的结构,具体取决于位置是城镇、省还是地区,以及名称是否以元音开头。
关于ruby-on-rails - Rails I18n 嵌套翻译键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6793948/