【发布时间】:2026-02-11 04:15:02
【问题描述】:
在我看来,我使用的是标准 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/wiki 和 https://github.com/svenfuchs/rails-i18n 并没有真正解决我的问题:
这有点复杂,因为我试图在设计视图中执行此操作。这意味着 form_for 指的是 User 模型,即使控制器是 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 %>
但这会影响任何地方的创建用户,我真的只想自定义新会话按钮,相当于登录。 Se me 连接器
所以我正在破解它
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 功能。
【问题讨论】:
-
也许你可以试试
<%= l f.submit helpers.label.user.sign_in, :class => "btn btn-default" %>?
标签: ruby-on-rails ruby-on-rails-3 devise internationalization rails-i18n