`
catrose
  • 浏览: 6664 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Rails2.2新特性:本地化与国际化 http://fsjoy.blog.51cto.com/31

阅读更多
本地化觉得不是很爽.所以先从工具入手,下面是翻译内容
原文地址

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上来哇
本文出自 51CTO.COM技术博客
分享到:
评论

相关推荐

    Ruby on Rails入门例子

    1. 初始化项目:通过`rails new mybook`命令创建新的Rails应用。 2. 创建资源:使用`rails generate controller Posts`生成控制器,再用`rails generate scaffold Post title:string content:text`生成模型和相关的...

    Codeigniter Grid 使用方法 (flexigrid)

    博客分类: Codeigniter / CakePHP ASPRailsRubyPHPGoogle 来源:http://codeigniter.com/forums/viewthread/75326/P0/ Updated: 6 September 2008 Although I love CI, I’ve decided to move this thread to ...

    rails open_flash_chart

    NULL 博文链接:https://zyn-zyn.iteye.com/blog/1163148

    Restfulie.zip

    RESTfulie 是一个创建超媒体感知服务与客户端的Gem。在开发超媒体感知的服务和客户端的时候使用RESTfulie将非常容易。 下面描述了定义一个订单的例子,这一订单将经过一系列定义好的转变,比如从未结算到结算等等。...

    Ruby-Multiverse让Rails支持多数据库

    在Ruby on Rails开发中,数据存储的灵活性是关键。随着应用程序规模的增长,单一数据库可能无法满足性能、可扩展性或组织结构的需求。在这种背景下,“Ruby-Multiverse”应运而生,它为Rails应用程序提供了优雅地...

    Tracks是GTD:trade_mark:Web应用程序,使用Ruby on Rails构建-Ruby开发

    Tracks:一个GTD(TM)Web应用程序,使用Ruby on Rails Project主页构建:http://www.getontracks.org/手册:http://www.getontracks.org/manual/ GitHub上的源代码:https:// github.com/TracksApp/tracks错误报告...

    ruby创建blog

    1.rails new blog --skip-bundle //创建项目 2.cd blog //进入项目根目录 3.subl . //打开项目开发环境 4.Bundle install //安装gem包环境 5.rails generate model post title:string content:text author:string ...

    rails国际化

    博文链接:https://ziyoujiedao.iteye.com/blog/150552

    rails22新添功能.pdf

    ### Ruby on Rails 2.2 新添功能解析 #### 概述 《Rails22新添功能.pdf》是一本详尽介绍了Ruby on Rails 2.2版本新增功能的专业电子书。Ruby on Rails作为一款热门的Web开发框架,一直受到开发者们的青睐。Rails ...

    Angle - Bootstrap Admin Template v3.3(卷1/3)

    Ruby on Rails: https://angle-on-rails.herokuapp.com/ MeanJS: https://angle-on-mean.herokuapp.com/ MeteorJS: https://45.55.64.191/ ReactJS: http://themicon.co/theme/angle/v3.3/reactjs/ 作者更新页面...

    Angle - Bootstrap Admin Template v3.3(卷3/3 )

    Ruby on Rails: https://angle-on-rails.herokuapp.com/ MeanJS: https://angle-on-mean.herokuapp.com/ MeteorJS: https://45.55.64.191/ ReactJS: http://themicon.co/theme/angle/v3.3/reactjs/ 作者更新页面...

    Angle - Bootstrap Admin Template v3.3(卷2/3)

    Ruby on Rails: https://angle-on-rails.herokuapp.com/ MeanJS: https://angle-on-mean.herokuapp.com/ MeteorJS: https://45.55.64.191/ ReactJS: http://themicon.co/theme/angle/v3.3/reactjs/ 作者更新页面...

    Angle Bootstrap Admin Template(2016-7月最新版V3.4)

    Ruby on Rails: https://angle-on-rails.herokuapp.com/ MeanJS: https://angle-on-mean.herokuapp.com/ MeteorJS: https://45.55.64.191/ ReactJS: http://themicon.co/theme/angle/v3.3/reactjs/

    gitlab安装教程

    解决办法:编辑 /etc/gitlab/gitlab.rb 文件,将 gitlab_rails['gravatar_plain_url'] = 'http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon' 修改为 gitlab_rails['gravatar_plain_url'] = '...

    Agile Web Development with Rails, 2nd Edition

    Justin Gehtland , Andreas Schwarz <br> <br>http://ecx.images-amazon.com/images/I/51YZKK7C2WL._SS500_.jpg<br><br><br>http://www.amazon.com/Agile-Web-Development-Rails-2nd/dp/0977616630

    Gitlab私有化部署管理

    ### GitLab私有化部署管理知识点详解 #### 一、环境搭建 在进行GitLab私有化部署前,首先需要了解具体的环境配置信息。 **1.1 阿里云环境** - **地址**: `http://xxx.xxx.xxx.xxx` - **备份目录**: `/mnt/gitlab...

    Angle - Bootstrap Admin Template(2016年3月最新版V3.3)

    Ruby on Rails: https://angle-on-rails.herokuapp.com/ MeanJS: https://angle-on-mean.herokuapp.com/ MeteorJS: https://45.55.64.191/ ReactJS: http://themicon.co/theme/angle/v3.3/reactjs/ 作者更新页面...

    dbconfig:遵循 Rails 约定读取 database.yml 文件的 Golang 包

    安装 go get -u github.com/dovadi/dbconfig例子在settings.json中需要定义数据库yaml文件的位置和应用环境 { "database_file" : "/Users/dovadi/rails/blog/config/database.yml" "environment" : "development"} ...

Global site tag (gtag.js) - Google Analytics