最近想开动个项目做一做,用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_s 2008-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_s Mon 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,如需转载请自行联系原作者

Rails2.2新特性:本地化与国际化相关推荐

  1. Java 10 正式发布!时隔 6 月带来 109 项新特性

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 期待已久,没有跳票的 Java 10 已正式发布! 为了更快地迭代,以及跟进社区反馈,Jav ...

  2. 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】

    Java8新特性二 一.并行流与顺序流 1.概念 2.Fork/Join框架 3. Fork/Join框架代码示例: 二.Optional类 1. 什么是Optional对象 2. Optional类 ...

  3. rails3 新特性 和 RJS评论

    rails 3.0是2010年8月份发布的.迄今为止,3.0已历经多个tiny版到了3.0.8.3.1已经放出rc4,看起来离正式版已为期不远.相对于2系,3系还是有一些令人惊喜的变化,而且在架构上也 ...

  4. PHP7新特性基础学习

    文章目录 前言 一.PHP 标量类型与返回值类型声明和运算符 二.PHP 常量数组 三.PHP 匿名类 四.PHP函数杂项 五.PHP 7 异常 六.PHP 7 use 语句 七.PHP 7 Sess ...

  5. Java8的一些常用新特性

    Java8新特性 回顾: 1 反射:是类的解剖技术,把类中各个元素使用对象封装.属性.方法.构造方法 2 Class 是反射的起源 ,每个类都是Class的对象,而且只有一个(1)通过对象getCla ...

  6. 第五篇:Visual Studio 2008 Web开发使用的新特性

    第五篇:Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN. .NET Framwork 3.5与Visual Studio 2008 包含很多新特性.AJAX的Web开 ...

  7. Windows 7 开发新特性

    10月25日在西安举行的Windows 7 社区发布活动中我讲了Session1 -- Windows 7 概览.参会的人员达到62人,这个参加人数超过了我的预期,非常开心. 主要讲了一下内容: 一 ...

  8. Windows Phone 开发工具包7.1公测版新特性

    WindowsPhone7.1开发包提供了很多新功能,这些新增功能使开发者能够创建更加丰富多彩的应用程序 1. 执行模式和快速切换应用程序 对执行模式进行了更新,再应用程序的活跃和雪藏之间添加了一个休 ...

  9. java8新特性_Java8新特性之Date API|乐字节

    大家好,我是乐字节的小乐,上篇文章讲述了<Java8新特性之Optional>,接下来,小乐将接着讲述Java8新特性之Date API 2019日历 Java8之Date API Jav ...

  10. JDK 10 的 109 项新特性

    来源:开源中国, www.oschina.net/translate/109-new-features-in-jdk-10 虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的 ...

最新文章

  1. 视频会议已成为武汉新趋势,在未来,线上会议有机会成为「主流」会议模式吗?
  2. MAC安装Win10出现”在efi系统上,windows只能安装到gpt分区”问题的解决
  3. linux c 崩溃调试方法
  4. Win平台使用cmake工具生成sln工程示例
  5. 【风控决策】风控决策引擎
  6. webflux webclient DataBufferLimitException: Exceeded limit on max bytes to buffer
  7. java小编程----str中没有内容
  8. 今天去团省委维护网站
  9. 你在学校我安排了你没有做到最多凶你一顿,在公司不一样,直接得让走人!...
  10. Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
  11. hadoop伪分布式配置
  12. Spark Streaming 遇到 kafka
  13. 【路径规划】基于matlab GUI改进的DWA算法机器人静态避障路径规划【含Matlab源码 678期】
  14. 使用Kotlin创建动态Android TextWatcher
  15. android soundpool 封装,Android 音频播放之SoundPool的使用和封装
  16. Origin实现中英文版本切换
  17. dwg如何转换成pdf格式?
  18. 正则表达式匹配英文和法文
  19. 裸机搭建深度学习服务器,ubuntu ssh服务器,pytorch, tensorflow, paddle三种框架安装。以及各种避雷。
  20. 百面机器学习(13)——生成式对抗网络

热门文章

  1. Atitit.html css  浏览器原理理论概论导论attilax总结
  2. paip.提升用户体验----gcc c++ JIT-debugging 技术
  3. 重磅丨银行机构数据治理指引来了,首席数据官、数据驱动、客户隐私、挂钩评级、问责机制通通提及 银保监会 成于微言
  4. 市场大幅逆转速度达史上最快 宏观交易领域也被机器“占领”
  5. Julia: MFDCCA和MFCCA算法代码
  6. Julia: PostgreSQL数据库.......
  7. 做开源,兴趣是最好的源动力 | 龙蜥开发者说第1期
  8. 弹性计算 Region 化部署和跨可用区容灾介绍
  9. 计算机房选址,数据中心机房如何选址 数据中心机房如何日常维护
  10. 【数字信号去噪】基于matlab小波软阈值+硬阈值+改进的阈值高斯脉冲信号去噪【含Matlab源码 1706期】