【问题标题】:How to edit error messages in devise如何在设计中编辑错误消息
【发布时间】:2015-04-22 04:40:04
【问题描述】:

我需要修改设计的错误信息。我想将消息 "is Invalid" 更改为 "Es inválido" 。问题是我必须去更改 gem 中的这些消息。我可以在模型用户中覆盖这些消息吗

Rails 控制台

1.9.3-p547 :014 > user.save
 => false 
1.9.3-p547 :015 > user.errors
 => {:email=>["is invalid"], :password=>["is too short (minimum is 6 characters)"]} 
1.9.3-p547 :016 > 

用户模型

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, :lockable and :timeoutable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise devise-confirmable


    【解决方案1】:

    Devise 在config/locales/ 中生成devise.en.yml 文件 如果您需要使用其他语言(例如西班牙语)显示错误消息,请将您的 devise.en.yml 替换为以下文件:

    devise.es.yml

    es:
      errors:
        messages:
          expired: "ha expirado, por favor pide una nueva"
          not_found: "no encontrado"
          already_confirmed: "ya fue confirmada. Intenta ingresar."
          not_locked: "no ha sido bloqueada"
          not_saved:
            one: "Ha habido 1 error:"
            other: "Han habido %{count} errores:"
    
      devise:
        failure:
          already_authenticated: 'Ya iniciaste sesión.'
          unauthenticated: 'Tienes que registrarte o iniciar sesión antes de continuar.'
          unconfirmed: 'Tienes que confirmar tu cuenta antes de continuar.'
          locked: 'Tu cuente está bloqueada.'
          invalid: 'Email o contraseña inválidos.'
          invalid_token: 'Token de autentificación inválido.'
          timeout: 'Tu sesión ha expirado. Inicia sesión nuevamente.'
          inactive: 'Tu cuenta aun no ha sido activada.'
        sessions:
          signed_in: 'Iniciaste sesión correctamente.'
          signed_out: 'Cerraste sesión correctamente.'
        passwords:
          send_instructions: 'Recibirás un email con instrucciones para reiniciar tu contraseña en unos minutos.'
          updated: 'Tu contraseña fue cambiada correctamente. Has iniciado sesión.'
          updated_not_active: 'Tu contraseña fue cambiada correctamente.'
          send_paranoid_instructions: "Si tu email existe en el sistema, recibirás instrucciones para recuperar tu contraseña en él"
        confirmations:
          send_instructions: 'Recibirás instrucciones para confirmar tu cuenta en tu email en unos minutos.'
          send_paranoid_instructions: 'Si tu email existe en el sistema, recibirás instrucciones para confirmar tu cuenta en tu email en unos minutos.'
          confirmed: 'Tu cuenta fue confirmada. Has iniciado sesión.'
        registrations:
          signed_up: 'Bienvenido! Te has registrado correctamente.'
          signed_up_but_unconfirmed: 'Te hemos enviado un email con instrucciones para que confirmes tu cuenta.'
          signed_up_but_inactive: 'Te has registrado correctamente, pero tu cuenta aun no ha sido activada.'
          signed_up_but_locked: 'Te has registrado correctamente, pero tu cuenta está bloqueada.'
          updated: 'Actualizaste tu cuenta correctamente.'
          update_needs_confirmation: "Actualizaste tu cuenta correctamente, pero tenemos que revalidar tu email. Revisa tu correo para confirmar la dirección."
          destroyed: 'Adiós, tu cuenta ha sido eliminada. Esperamos verte de vuelta pronto!'
        unlocks:
          send_instructions: 'Recibirás un email con instrucciones para desbloquear tu cuenta en unos minutos'
          unlocked: 'Tu cuenta ha sido desbloqueada. Inicia sesión para continuar.'
          send_paranoid_instructions: 'Si tu cuenta existe, recibirás instrucciones para desbloquear tu cuenta en unos minutos'
        omniauth_callbacks:
          success: 'Te autentificaste correctamente con tu cuenta de %{kind}.'
          failure: 'No pudimos autentificar tu cuenta de %{kind} por la siguiente razón: %{reason}.'
        mailer:
          confirmation_instructions:
            subject: 'Instrucciones de confirmación'
          reset_password_instructions:
            subject: 'Instrucciones de cambio de contraseña'
          unlock_instructions:
            subject: 'Instrucciones de desbloqueo'
    

    更新

    es:
      activerecord:
        errors:
          models:
            user:
              attributes:
                email:
                  blank: "El email no puede estar vacio"
    

    【讨论】:

    • Cyzanfar 如果我需要将“电子邮件不能为空白”更改为“El email no puede estar vacio”,我应该将该行添加到 es.yml
    【解决方案2】:

    这不是特定于设计的。您可以在 config/locales/*.yml 文件中本地化任何 ActiveRecord 错误消息。

    在这种情况下,您可以在 config/local/es.yml 中添加如下内容:

    es:
      activerecord:
        errors
          models
            user
              attributes:
                email:
                  invalid: "Es inválido"
    

    Rails 的本地化非常可配置。 the guides 有更多信息。

    【讨论】:

    • meagar 我正在使用带有 rails 3.0.1 的 devise (1.1.5)
    • 谢谢 Meagar 我现在明白了
    • Meagar 如果我需要将“电子邮件不能为空白”更改为“El email no puede estar vacio”,我应该将该行添加到 es.yml
    【解决方案3】:

    您可以使用 devise.es.yml 在您的 config/locales 文件夹中

    所有不同翻译的列表在official devise wiki中给出

    【讨论】:

      猜你喜欢
      • 2013-02-14
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 2023-04-02
      相关资源
      最近更新 更多