Rails2.2新特性:本地化与国际化

最近想开动个项目做一做,用Rails2.2主要是它支持本地化与国际化的新特性比较吸引人.以前在Rails 1.2+做本地化觉得不是很爽.所以先从工具入手,下面是翻译内容
原文地址

Rails本地化 如何使用Rails的新特性实现应用的本地化
介绍:
Sven Fuchs等人在Rails本地化与国际化的问题上做了大量工作,下面的demo展示使用目前已经实施的新技术来本地化你的web应用.

DEMO 
1.SETUP
首先是新建Rails应用,并且将项目的Rails版本固化:
rails i18n_test
rake rails:freeze:edge
为了本地化数据和时间的格式,需要安装插件 ( localized_dates)
./script/plugin install git://github.com/clemens/localized_dates.git
配置本地化参数:
笔者建议本地化参数配置文件位于目录config/locales.(在上语句执行完毕之后默认的会将配置文件放到此目录下)
本地化插件(localized_dates)会拷贝两个本地化配置文件,分别是en-US 和 de-AT(目前是en和de,译者著),在这个目录里,你可以扩展或修改配置文件,当然也可以创建新的配置文件.
这是本示例的本地化配置(图片为mac下截图.目的是为了说明文件内容及其语法规则,具体代码可以到下面的 英文网站 查询)(里面有写好的yml文件!仔细看看还有zh-CN.yml文件哟。)
config/locales/en.rb:


config/locales/en.yml:





鉴于yml文件格式的问题,这里不再贴图.


然后需要将默认的本地化配置和/或自定义配置在 config/environment.rb中或config/initializers 中声明:
I18n.default_locale = 'en'
I18n.locale             = 'en'

本地化配置文件中的单词

或许你已经注意到了,在本地化配置文件的:number部分(en.yml的66-75行)
66:     number:
67:         format:
68:             precision: 3
69:             separator: '.'
70:             delimiter: ','
71:         currency:
72:             format:
73:                 unit: '$'
74:                 precision: 2
75:                 format: '%u %n'

我们分别定义了:format和:currency.一般来说,本地化相关的内容是有层次结构的,譬如说货币,百分比都是数字, 用:currency可以覆盖number中声明的format内容(在我们例子中,将:precision设置为2,覆盖原来的值).也可以对format中的内容进行扩展(我们增加了:unit(单位)和:format(格式)).

对于dates和times来说也是如此:如果有必要的话,:datetime和:time_with_zone可以用来专门处理各自定制的类型,而不需要只依赖于:time的设置.然而,需要主要的是一般来说,在应用中对于:time应该格式一致.


日期格式

Date.today.to_s2008-12-15
Date.today.to_s(:default)2008-12-15
Date.today.to_s(:short)15 Dec
Date.today.to_s(:long)December 15, 2008
Date.today.to_s(:long_ordinal)December 15th, 2008
Date.today.to_s(:only_day)15
Rails标准格式 (Date::DATE_FORMATS)仍可用:
Date.today.to_s(:db)2008-12-15
Date.today.to_s(:number)20081215
Date.today.to_s(:rfc822)15 Dec 2008

时间格式

Time.now.to_sMon Dec 15 01:51:23 CST 2008
Time.now.to_s(:default)Mon Dec 15 01:51:23 CST 2008
Time.now.to_s(:short)15 Dec 01:51
Time.now.to_s(:long)December 15, 2008 01:51
Time.now.to_s(:long_ordinal)December 15th, 2008 01:51
Time.now.to_s(:only_second)23
Rails 标准格式 (Time::DATE_FORMATS)仍可用:
Time.now.to_s(:db)2008-12-15 01:51:23
Time.now.to_s(:number)20081215015123
Time.now.to_s(:rfc822)Mon, 15 Dec 2008 01:51:23 -0600

日期Helper

日期/时间间隔:

time_ago_in_words(20.seconds.ago, true)half a minute
time_ago_in_words(1.minute.ago)1 minute
time_ago_in_words(1.5.minute.ago)2 minutes
time_ago_in_words(1.day.ago)1 day
time_ago_in_words(1.2.day.ago)2 days

格式:

ActiveRecordHelper

作着说他太懒了,没有讲解这块内容.不过,这个很好掌握..

NumberHelper


注意点1: number_to_phone(本地化电话号码)尚未实现,而且估计也不会有这么个玩意儿--至少不会成为本地化的一个核心内容.关注最新国际化/本地化插件,或许某个国际化新版本中会支持这些功能.

注意点2:   number_to_currency(本地化货币) number_to_percentage(本地化百分比)  和  number_to_human_size (本地化存储量?)内部都使用 number_with_precision(精度本地化?),对于   number_with_precision  内部使用  number_with_delimiter(定义符本地化)  .

number_to_currency

number_to_currency(999)$ 999.00
  number_to_currency(1999)$ 1,999.00
       number_to_currency(1999.99)$ 1,999.99
                   number_to_currency(1934524.34582)$ 1,934,524.35

number_to_percentage

number_to_percentage(999)999.000%
  number_to_percentage(1999)1999.000%
       number_to_percentage(1999.99)1999.990%
                   number_to_percentage(1934524.34582)1934524.346%

number_to_human_size

number_to_human_size(1.byte)1 Byte
        number_to_human_size(2.kilobytes)2 KB
           number_to_human_size(2.5.kilobytes)2.5 KB
                   number_to_human_size(2.34582.kilobytes)2.3 KB

number_with_precision

number_with_precision(999)999.000
 number_with_precision(1999)1999.000
      number_with_precision(1999.99)1999.990
                  number_with_precision(1934524.34582)1934524.346

number_with_delimiter

number_with_delimiter(999)999
  number_with_delimiter(1999)1,999
       number_with_delimiter(1999.99)1,999.99
                  number_with_delimiter(1934524.34582)1,934,524.34582


 
感觉还是没解释明白,我明天自己放个demo上来哇




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/119541,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值