美文网首页
ruby基础功能-国际化

ruby基础功能-国际化

作者: 葫芦葫芦快显灵 | 来源:发表于2019-07-07 22:36 被阅读0次

    概念 及 相关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页面中对应修改

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

    相关文章

      网友评论

          本文标题:ruby基础功能-国际化

          本文链接:https://www.haomeiwen.com/subject/dcqwhctx.html