Локализуйте "Войти" и "Зарегистрироваться" в Rails - PullRequest
2 голосов
/ 13 февраля 2012

Можно ли предоставить различные кнопки отправки значения в зависимости от текущего контроллера / вида?

Таким образом, имея 2 вида:

=# app/views/devise/sessions.new.html.haml
%h2 Sign in
= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f|
  = f.input :email
  = f.input :password
  = f.input :remember_me, as: :boolean
  = f.button :submit

и

=# app/views/registrations/new.html.haml
= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
  = devise_error_messages!
  = f.input :first_name
  = f.input :last_name
  = f.input :email
  = f.input :password
  = f.input :password_confirmation
  = f.button :submit

Я хочу показать Войдите на первом и Зарегистрируйтесь на втором просмотре без изменения самого представления .

FYI, локализация submit кнопок возможна с помощью:

# config/locales/en.yml
en:
  helpers:
    submit:
      user:
        create: 'Sign up'

Но, к сожалению, я не вижу, как различить виды выше (или контроллеры), чтобы выдавать разные сообщения для кнопок отправки.

Итак, вопрос - как должен выглядеть файл en.yml для достижения этого?

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

I18n предоставляет стандартный способ различения контроллеров:

en:
  users:
    registrations:
      new:
        create: "Sign up"
    sessions:
      new:
        create: "Sign in"

Ваши формы требуют небольшого изменения (то же самое для сессий и регистраций):

  = f.button :submit, t('.create')

К сожалению, я не нашел более простого способа сделать это без этой маленькой t('.create') с simple_form.

Посмотрите на это . (точка) перед созданием. Rails будет охватывать create по имени контроллера. В нашем случае users / session_controller стал 'users.sessions', то же самое для регистраций.

0 голосов
/ 13 февраля 2012

Мне кажется, что устройство локализовано, и сообщество создало файлы локалей для хорошей группы из них. Я не могу сказать вам из головы, но они могут решить эту проблему, или дать вам подсказку о том, как этого достичь. Проверьте вики на странице разработки github.

...