【问题标题】:Rails3: Devise internationalization does not localize "Password confirmation" and othersRails3:设计国际化不本地化“密码确认”等
【发布时间】:2011-09-21 00:48:50
【问题描述】:

这是我的whole source code,用于极简的 Devise+OmniAuth 应用程序。

如你所见,日文devise.ja.ymlconfig/locales中。

问题:当我使用 lang=ja 访问网站时,有些字符串不是日文而是英文:

“サインアップ”显示正确,但“密码确认”等仍为英文。实际上,我对整个项目和整个 .rvm 目录进行了 grep:No file 包含“密码确认”!真是莫名其妙。

这些字符串是从哪里来的?他们怎么不在 devise.ja.yml 中?是 OmniAuth 吗?

【问题讨论】:

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


    【解决方案1】:

    实际上,它们来自您的默认语言 yml 文件。设计语言环境文件只有警报消息和一些通知的语言环境。它们不提供表单属性的属性翻译。

    你可能想去

    https://github.com/svenfuchs/rails-i18n/tree/f8606e62def45279f3498549f97699049135bd11/rails/locale

    并下载适当的(在您的情况下为日语)语言文件并将其放入./config/locales/文件夹中

    然后在您的 Rails 应用程序配置文件 (./config/application.rb) 中更改语言环境设置以使用日语语言环境文件。

    config.i18n.default_locale = :ja
    

    更改设置后,如果您希望任何属性具有日文名称,请添加如下所示的规则。

    activerecord:
        attributes:
            user:
                email: "Email address in Japanese"
                password: "Password in Japanese"
                password_confirmation: "Password confirmation in Japanese"
    

    【讨论】:

    • 添加这个 activerecord 段落确实允许我覆盖这些字符串。但是我真的需要自己找到并翻译所有这些字符串吗?如果它们是 ActiveRecord 项目的一部分,那些不是已经翻译成日语了吗?
    • 我猜你已经意识到了这一点,但只是为了让其他读者清楚:这些字符串(例如 password_confirmation)不包含在 svenfuchs/rails-i18n 本地化文件中。
    • 好吧,你永远不知道人们会使用什么属性名称,所以本地化 yml 文件不可能包含所有可能的翻译。有些用户可能会使用passwordpassword_confirmationphonedateofbirth 或一些随机属性名称。对我来说,我非常确信在本地化文件中添加一行翻译会影响我视图页面中的所有属性...
    • 我还是不明白 Rails 怎么知道“password_confirmation”翻译成英文的“密码确认”...没有文件包含字符串“密码确认”。
    • @NicolasRaoul Rails 只需 humanizes 密码确认。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2011-02-07
    • 1970-01-01
    • 2013-11-28
    相关资源
    最近更新 更多