#ruby-on-rails #localization #locale #redmine
#ruby-на-рельсах #локализация #локаль #redmine #ruby-on-rails
Вопрос:
Я использую плагин Custom Workflows для Redmine. Это дает возможность писать код, например, для перехвата before_save на странице администратора во время выполнения. Предположим, что я создаю исключение для него:
raise WorkflowError, "Warning: your note is too long."
В классическом кодировании я должен написать
raise WorkflowError, t(:warning_note_too_long)
и изменить, например, en locale:
# 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)
Ответ №1:
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
Комментарии:
1. с этой модификацией все работает нормально: message = case I18n.locale.to_s