问题描述
我正在将Custom Workflows插件用于Redmine。它提供了编写代码的功能,例如运行时在管理页面中插入before_save。假设我提出了例外:
raise WorkflowError,"Warning: your note is too long."
在经典编码中,我应该写
raise WorkflowError,t(:warning_note_too_long)
并修改例如本地设置:
# config/locales/en.yml
en:
warning_note_too_long: "Warning: your note is too long."
但是在这种情况下,这是不可接受的,因为在管理页面中失去了编写代码的感觉(我也应该修改源代码并部署它们)。
如何将消息内联翻译成几种语言?我想要这样的东西:
config.locales.en.warning_note_too_long = "Warning: your note is too long."
config.locales.ru.warning_note_too_long ="Предупреждение: Ваш комментарий слишком длинный."
raise WorkflowError,t(:warning_note_too_long)
解决方法
KISS。
message = case I18n.locale
when 'ru'
"Предупреждение: Ваш комментарий слишком длинный."
else # keeping 'en' as default in case there is some unexpected locale
"Warning: your note is too long."
end
raise WorkflowError,message