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
我正在使用 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