Как я могу выполнить интерполяцию в локалях 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