Ruby on rails:如何设置内联字符串翻译(无需更改 config/locales/*.yml)

Ruby on rails: how to set up string translation inline (witnout changing config/locales/*.yml)

我正在使用 Redmine 的 Custom Workflows 插件。它提供了为例如编写代码的能力。 before_save 在运行时挂钩管理页面。假设我提出了例外:

  raise WorkflowError, "Warning: your note is too long."

在经典编码中我应该写

  raise WorkflowError, t(:warning_note_too_long)

并修改例如en 语言环境:

# 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