Я пытаюсь найти лучший способ заменить несколько переменных / заполнителей в локализованной строке сообщения в моем приложении ruby on rails. При замене одного заполнителя я использовал удовлетворительно:
В en.yml:
url_borked: «Не удалось загрузить URL: $ url.»
Ввиду:
t (: url_borked) ["$ url"] = request.url
Но это не подходит для нескольких заполнителей. Это выглядит некрасиво и на самом деле не работает, например:
В en.yml:
url_borked: "The URL: $url is badly formatted, perhaps you meant: $url_clean"
В поле зрения:
(t(:url_borked)["$url"] = request.url)["url_clean") = @suggested_url
Я пытался использовать String :: sub, но меня это не устраивает, так как это ужасно. например:
(t(:url_borked).sub("$url", request.url).sub("url_clean", @suggested_url)
Это также не работает, если вы хотите заменить несколько экземпляров одного заполнителя. e.g.:
bad_url: "$url cannot be loaded, please try $url another time"
Я также рассмотрел функцию printf, но она не работает для локализации, поскольку относительная позиция заполнителя может меняться в зависимости от перевода.
Есть ли правильный способ замены заполнителя этого сообщения?
Спасибо.