Как я могу выполнить интерполяцию в I18n локали? - PullRequest
13 голосов
/ 30 июня 2011

Есть ли способ сделать что-то вроде этого:

en:
  welcome:
    hello there, #{current_user.first_name}!  It's nice to see you again.

Это, очевидно, не сработает, и, по-видимому, "# {" является недопустимым символом в yaml, потому что эта строка отображается как "привет там", когда я вытащил ее.

Лучшее, что я мог сделать, было что-то вроде:

en:
  welcome:
    hello there, (name)!  It's nice to see you again.

....

t(:welcome).gsub("(name)", current_user.first_name)

Но я не в восторге от этого ... Должен быть лучший способ сделать подобные вещи.

1 Ответ

16 голосов
/ 30 июня 2011

Замените свой en.yml следующим образом

en:
  welcome:
    "hello there, %{name}!  It's nice to see you again."

и вашим представлением следующим образом

<%=t(:welcome, :name=> current_user.first_name) %>

По сути, он передается как именованный аргумент.Вы можете найти больше на Направляющие рельса 18n Интерполяция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...