ruby基础功能-国际化

概念 及 相关GEM

把应用翻译成英语之外的其他语言,或提供多语言支持

rails 2.2以上版本,自带的ruby I18n gem, 提供了易用易扩展的框架

  1. “国际化”(internationalization)过程通常是指,把所有字符串及本地化相关信息(例如日期或货币格式)从应用中抽取出来
  2. “本地化”(localization)过程通常是指,翻译这些字符串并提供相关信息的本地格式

I18n 公开 API

rails中的每一个静态字符串都已经国际化

公开API中最重要的两个方法

  • translate # 查找文本翻译
  • localize # 把日期和时间对象转换为本地格式(本地化)

这两个的别名分别为#t 和 #l

  • I18n.t 'store.title'
  • I18n.l Time.now

其他方法

  • load_path # 自定义翻译文件的路径
  • locale # 获取或设置当前区域
  • default_locale # 获取或设置默认区域
  • available_locales # 应用可用的区域设置白名单
  • enforce_available_locales # 强制使用白名单(true 或 false)
  • exception_handler # 使用其他异常处理程序
  • backend # 使用其他后端

国际化设置

Rails 会把 config/locales 文件夹中的 .rb 和 .yml 文件自动添加到翻译文件加载路径中。

#config/locales/em.yml
en:
  hello: "Hello world"  # 注意:两个空格缩进,不要使用tab

Rails 会自动加载翻译文件加载路径(I18n.load_path),这是一个保存有翻译文件路径的数组。通过配置翻译文件加载路径,我们可以自定义翻译文件的目录结构和文件命名规则

I18n 库的后端采用了延迟加载技术,相关翻译信息仅在第一次查找时加载

默认的区域设置和翻译的加载路径可以在 config/application.rb 文件中配置

 config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
config.i18n.default_locale = 'zh-CN'

项目中使用

到 application.rb 中添加

config.i18n.default_locale = 'zh-CN'

添加config/locals/zh-CN.yml文件

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

在erb页面中对应修改

- 
  • <%= link_to "About", "/about" %>
  • +
  • <%= link_to t("navbar.about"), "/about" %>
  • 你可能感兴趣的:(ruby基础功能-国际化)