Как я могу выполнить интерполяцию в локалях I18n?
Есть ли способ сделать что-то вроде этого:
en:
welcome:
hello there, #{current_user.first_name}! It nice to see you again.
Очевидно, что это не сработает, и, видимо, "# {" является недопустимым символом в yaml, потому что эта строка отображается как "hello there", когда я вытаскиваю ее.
Лучшее, что я мог сделать, это что-то вроде:
en:
welcome:
hello there, (name)! It nice to see you again.
....
t(:welcome).gsub("(name)", current_user.first_name)
Но я не сумасшедший об этом... Должен быть лучший способ сделать такие вещи.
Ответы
Ответ 1
Замените свой en.yml следующим образом
en:
welcome:
"hello there, %{name}! It nice to see you again."
и ваше мнение, подобное этому
<%=t(:welcome, :name=> current_user.first_name) %>
В основном он передается как именованный аргумент. Вы можете найти больше в Rails Guides 18n Interpolation