我的en.yml
文件中有以下错误消息:
invalid_transition: "Cannot %{action} a %{state} timesheet"
问题是有时状态可以是approved
,有时可能是rejected
。
有了这个,错误最终会被拼错,例如“无法提交 批准的时间表”,而不是“ 批准的时间表”。
Rails是否在I18n中提供了这种灵活性?
答案 0 :(得分:2)
我认为,对于你的问题,最简单的答案就是将正确的不定冠词一起传入整个州。
有一个question that looks at how to prepend "a" or "an" depending on a given word。一个简短的回答是,有一个宝石indefinite_article可以做到。
然后您的翻译成为:
invalid_transition: "Cannot %{action} %{state_with_article} timesheet"
然后拨打I18n.t
并传入"被拒绝的"或者"经批准的"作为插值的变量。
然而,如果你想让你的手更脏一些,你可以使用i18n-inflector宝石和它的伴侣i18n-inflector-rails宝石。对于许多语言而言,选择比英语更复杂,因为不同的性别和时态影响了不定冠词的选择。 (免责声明:我没有使用过这些宝石,但看起来它们会帮助你解决问题)。