如何使用自定义I18n标签与Devise提交按钮

时间:2013-12-02 02:48:55

标签: ruby-on-rails ruby-on-rails-3 devise internationalization rails-i18n

我在视图中使用标准的Rails表单:

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
  <div><%= f.label :email_label %><br />
    <%= f.email_field :email, :autofocus => true, :class => "form-control" %></div>

    <div><%= f.label :password_label %><br />
    <%= f.password_field :password, :class => "form-control" %></div>

    <% if devise_mapping.rememberable? -%>
      <div class="checkbox"><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
    <% end -%>

    <div>
      <!--<%= f.submit  :class => "btn btn-default" %>-->
      <%= f.submit  I18n.t("helpers.label.user.sign_in"),  :class => "btn btn-default" %>
    </div>
  <% end %>

两个问题:1)http://guides.rubyonrails.org/i18n.html的API指南文档似乎已经过时了。本地化视图部分以:

开头
  

Rails 2.3引入了另一种方便的本地化功能:   本地化视图(模板)。

所以我不确定相信它们有多少,而另外两个标准位置http://ruby-i18n.org/wikihttps://github.com/svenfuchs/rails-i18n并没有真正解决我的问题:

这有点复杂,因为我试图在Devise视图中这样做。这意味着form_for指的是用户模型,甚至认为控制器是Sessions控制器。所以如果我在这里使用样式,User.create将起作用: http://apidock.com/rails/ActionView/Helpers/FormBuilder/submit

fr:
  helpers:
    user:
      submit:
        create: "Inscription %{model}"
        update: "Confirmer les modifications à %{model}"

不包括提交行中的任何文字

<%= f.submit %>

但这会影响到处创建用户,我只想用相同的登录来自定义新会话按钮。 请联系我们

所以我正在攻击它

fr-CA:
  helpers:
    select:
      prompt: Veuillez sélectionner
    submit:
      create: Créer un %{model}
      submit: Enregistrer ce %{model}
      update: Modifier ce %{model}
      sign_in: Se me connecter
      sign_up: Inscription
    label:
      user:
        email_label: Courriel
        password_label: Mot de passe
        remember_me: Mémoriser mes infos
        submit: Se me connecter
        sign_in: Se me connecter
        sign_up: Inscription

并使用

<%= f.submit  I18n.t("helpers.label.user.sign_in"),  :class => "btn btn-default" %>

但这感觉不对,也不稳健,但它确实可以让Cucumber更容易测试。

这里有什么建议吗?任何人都可以评论Rails的I18n社区是否仍然活跃?或者人们使用不同的解决方案?我正在考虑尝试使用SimpleForm gem,它是I18n的功能。

1 个答案:

答案 0 :(得分:0)

我知道问题已经过时了,但是按键的顺序在这里很重要:

fr:
  helpers:
    submit:
      user:
        create: "Inscription %{model}"
        update: "Confirmer les modifications à %{model}"

请注意,submit先行,然后,您应列出资源 - userpostwhatever

有关详细信息,请参阅related answer