ruby-on-rails - 在 Rails 中本地化 "Sign in"和 "Sign up"

标签 ruby-on-rails ruby localization globalization

是否可以根据当前 Controller / View 提供不同的提交按钮值?

所以有 2 个 View :

=# 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

我想在第一个 View 中显示登录并在第二个 View 中显示注册而不更改 View 本身。

仅供引用,本地化 submit 按钮可以通过:

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

但不幸的是,我看不出如何区分上面的 View (或 Controller )来为提交按钮提供不同的消息。

所以问题en.yml 文件应该如何实现?

最佳答案

I18n 提供了区分 Controller 的标准方式:

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

您的表格需要稍作改动( session 和注册也一样):

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

不幸的是,如果没有带有 simple_form 的小 t('.create'),我找不到更简单的方法。

在创建之前查看那个 .(点)。 Rails 将通过 Controller 名称限定 create 的范围。在我们的例子中,users/sessions_controller 变成了“users.sessions”,注册也是如此。

关于ruby-on-rails - 在 Rails 中本地化 "Sign in"和 "Sign up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257866/

相关文章:

ruby-on-rails - 如何在 Rails 中循环 ActiveRecord 值?

ruby-on-rails - 从 postgres db 接收 IP 地址的所有匹配网络

javascript - 使用 Javascript 在 Google map 上标记颜色

ruby-on-rails - "Rake spec"大多数测试失败,但 "rails s"在 Diaspora 源上工作正常

ios - Xcode 6.1.1 导入本地化错误 "XLIFF id attribute missing"

ruby-on-rails - 上传回调前的回形针

ruby-on-rails - Net::HTTP::Get 超时问题

ruby - Firebase token 错误, "The custom token corresponds to a different audience."

java - 如何将 JButton 放置在 JPanel 中的自定义位置?

python - 寻找交叉点