这一集来聊 Rails 的国际化,也就是让咱们的应用支持多国语言, 参考 http://guides.rubyonrails.org/i18n.html

普通信息国际化

到 application.rb 中添加

config.i18n.default_locale = 'zh-CN'

修改配置文件之后不忘忘记重启 rails 来加载新的配置。 然后的要来添加 config/locals/zh-CN.yml 文件。

可以参考 这里 来书写 zh-CN.yml 文件,注意缩进关系,使用两个空格做为一个缩进级别,不要用 tab 。基本上就是写成

zh-CN:
  hello: 你好

先举个简单的例子,到 application.html.erb 中

- <li><%= link_to "About", "/about" %></li>
+ <li><%= link_to t("navbar.about"), "/about" %></li>

这样再来查看一下 html 源码,就可以知道该添加什么内容了。

表单报错信息国际化

再来到 signup 页面。点击注册按钮,看到如下的报错信息:

translation missing: zh-CN.activerecord.errors.models.user.attributes.name.blank

这样就知道应该添加点什么内容到 zh-CN.yml 中了,实际操作的时候也可以直接从 rails-i18n gem 中拷贝。

zh-CN:
  navbar:
    about: 关于
  activerecord:
    errors:
      models:
        user:
          attributes:
            name:
              blank: 用户名不能为空
              taken: 用户已经存在
            email:
              blank: 请填写邮箱地址
              taken: 邮箱已经被占用
            password:
              blank: 密码不能为空
            password_confirmation:
              confirmation: 两次输入密码不相同

更改 local 设置

刚才咱们是用手动修改 application.rb 文件实现的,咱们的网站就是个中文网站,所以这样就够了。 对于一个要同时支持多国语言的网站,就要考虑到和更加灵活的改变 local 设置的方法了。 可以参考 这里