Rails: i18n, переменная печатается, если перевода нет

Я столкнулся со странной проблемой. В моем приложении rails 3 я поддерживаю интернационализацию с английским и французским языками. Вот в своем шаблоне я написал что-то вроде этого

<%= t "Hi %{person}!", :person => "Simpson" %>

Когда я устанавливаю язык как французский, все работает нормально, так как для этого есть перевод, но когда я устанавливаю язык как английский, он выводит как

Hi %{person}!

в моем браузере. Когда я добавляю перевод в en.yml, он работает нормально. Я не понимаю, зачем для этого нужно добавлять перевод в en.yml. Более того, я не хочу, чтобы это произошло, есть ли обходной путь для этого?

Спасибо


person Paritosh Singh    schedule 17.10.2012    source источник


Ответы (1)


Первый аргумент, переданный методу t, должен быть ключом, поэтому ваше представление должно иметь что-то вроде этого:

<%= t :greetings, :person => "Simpson" %>

Ваш config/locales/en.yml будет выглядеть так:

en:
  greetings: Hi %{person}

и ваш config/locales/fr.yml примерно так:

fr:
  greetings: Bonjour %{person}
person tigrish    schedule 18.10.2012
comment
Мне не нужен перевод в en.yml, что делать в таком случае. Однако в вашем решении я добавляю перевод. - person Paritosh Singh; 18.10.2012
comment
Ну, либо тот же ответ, что и stackoverflow.com /questions/12914019/ применимо, или вы можете просто не использовать I18n, например: ‹%= Hi #{person} %› - person tigrish; 18.10.2012