浅谈Ruby on Rails的国际化

 更新时间:2015年08月04日 11:09:18   投稿:goldensun  
这篇文章主要介绍了Ruby on Rails的国际化,提出了日期货币等格式相关需要注意的地方,需要的朋友可以参考下

视图、模型与控制器里不应使用语言相关设置与字串。这些文字应搬到在 config/locales 下的语言文件里。

当 ActiveRecord 模型的标签需要被翻译时,使用activerecord 作用域:

en:
 activerecord:
  models:
   user: Member
  attributes:
   user:
    name: "Full name"

然后 User.model_name.human 会返回 "Member" ,而 User.human_attribute_name("name") 会返回 "Full name"。这些属性的翻译会被视图作为标签使用。

把在视图使用的文字与 ActiveRecord 的属性翻译分开。 把给模型使用的语言文件放在名为 models 的文件夹,给视图使用的文字放在名为 views 的文件夹。

    当使用额外目录的语言文件组织完成时,为了要载入这些目录,要在 application.rb 文件里描述这些目录。

  # config/application.rb
  config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]

把共享的本土化选项,像是日期或货币格式,放在 locales 的根目录下。

使用精简形式的 I18n 方法: I18n.t 来取代 I18n.translate 以及使用 I18n.l 取代 I18n.localize。

使用 "懒惰" 查询视图中使用的文字。假设我们有以下结构:

en:
 users:
  show:
   title: "User details page"

users.show.title 的数值能这样被 app/views/users/show.html.haml 查询:

= t '.title'

在控制器与模型使用点分隔的键,来取代指定 :scope 选项。点分隔的调用更容易阅读及追踪层级。

# 这样子调用
I18n.t 'activerecord.errors.messages.record_invalid'

# 而不是这样
I18n.t :record_invalid, :scope => [:activerecord, :errors, :messages]


相关文章

  • CentOS中配置Ruby on Rails环境

    CentOS中配置Ruby on Rails环境

    经过一个上午的折腾,终于把ROR环境在CentOS中搞定,绕了很多弯路,把文章写下来总结一下
    2014-03-03
  • ruby+nokogori抓取糗事百科前10页并存储进数据库示例

    ruby+nokogori抓取糗事百科前10页并存储进数据库示例

    这篇文章主要介绍了ruby+nokogori抓取糗事百科前10页并存储进数据库示例,需要的朋友可以参考下
    2014-05-05
  • 初步了解一下什么是ruby

    初步了解一下什么是ruby

    了解下什么是ruby,希望学习ruby的朋友了解下
    2008-06-06
  • Jekyll静态网站后台引擎使用教程

    Jekyll静态网站后台引擎使用教程

    今天,我就来示范如何在github上搭建Blog,你可以从中掌握github的Pages功能,以及Jekyll软件的基本用法。更重要的是,你会体会到一种建立网站的全新思路。
    2016-04-04
  • 浅析Ruby中的Profiling工具的用法

    浅析Ruby中的Profiling工具的用法

    这篇文章主要介绍了浅析Ruby中的Profiling工具的用法,作者也给出了工具相关开源包的一些下载来源和使用方法,需要的朋友可以参考下
    2015-05-05
  • ruby中的双等号==问题详解

    ruby中的双等号==问题详解

    Ruby里面有4种比较方法,equal?, eql?, ==, ===,而且在不同的类里面表现的很不一样。在使用的时候也特别容易搞糊涂。 本文先给大家讲述一下==号的用法及使用中应该注意的地方
    2016-02-02
  • ruby执行周期性任务的三种gem介绍

    ruby执行周期性任务的三种gem介绍

    无论是用ruby做系统管理,还是用rails做web开发,都可能遇到周期性任务,它们按照一定时间周期(1小时,2天......)持续地触发。在ruby中,我认为一次性任务使用 sidekiq 来完成是非常方便的,而周期性的任务就需要用到 whenever , sidetiq , clockwork 等等gem了。
    2014-07-07
  • Ruby中遍历目录的简洁方法

    Ruby中遍历目录的简洁方法

    这篇文章主要介绍了Ruby中遍历目录的简洁方法,本文分享了一个复杂方法和一个简洁方法,需要的朋友可以参考下
    2015-01-01
  • Ruby中proc和lambda的两个区别

    Ruby中proc和lambda的两个区别

    这篇文章主要介绍了Ruby中proc和lambda的两个区别,本文讲解了在proc和lambda中,return关键字有不同含义、检查参数的方式不同两个重要区别,需要的朋友可以参考下
    2015-05-05
  • Ruby on Rails基础之新建项目

    Ruby on Rails基础之新建项目

    Ruby on Rails 是一个可以使你开发,部署,维护 web 应用程序变得简单的框架。下面我们就来看看如何简单便捷的使用这一框架,本系列文章将一一为大家揭秘
    2016-02-02

最新评论