Rails2.2新特性:本地化与国际化
原文地址
Rails本地化如何使用Rails的新特性实现应用的本地化
介绍:
Sven Fuchs等人在Rails本地化与国际化的问题上做了大量工作,下面的demo展示使用目前已经实施的新技术来本地化你的web应用.
DEMO
1.SETUP
首先是新建Rails应用,并且将项目的Rails版本固化:
rake rails:freeze:edge
为了本地化数据和时间的格式,需要安装插件( localized_dates)
配置本地化参数:
笔者建议本地化参数配置文件位于目录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.locale = 'en'
本地化配置文件中的单词
或许你已经注意到了,在本地化配置文件的:number部分(en.yml的66-75行)
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 |
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 |
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 |
Rails2.2新特性:本地化与国际化相关推荐
- Java 10 正式发布!时隔 6 月带来 109 项新特性
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 期待已久,没有跳票的 Java 10 已正式发布! 为了更快地迭代,以及跟进社区反馈,Jav ...
- 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】
Java8新特性二 一.并行流与顺序流 1.概念 2.Fork/Join框架 3. Fork/Join框架代码示例: 二.Optional类 1. 什么是Optional对象 2. Optional类 ...
- rails3 新特性 和 RJS评论
rails 3.0是2010年8月份发布的.迄今为止,3.0已历经多个tiny版到了3.0.8.3.1已经放出rc4,看起来离正式版已为期不远.相对于2系,3系还是有一些令人惊喜的变化,而且在架构上也 ...
- PHP7新特性基础学习
文章目录 前言 一.PHP 标量类型与返回值类型声明和运算符 二.PHP 常量数组 三.PHP 匿名类 四.PHP函数杂项 五.PHP 7 异常 六.PHP 7 use 语句 七.PHP 7 Sess ...
- Java8的一些常用新特性
Java8新特性 回顾: 1 反射:是类的解剖技术,把类中各个元素使用对象封装.属性.方法.构造方法 2 Class 是反射的起源 ,每个类都是Class的对象,而且只有一个(1)通过对象getCla ...
- 第五篇:Visual Studio 2008 Web开发使用的新特性
第五篇:Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN. .NET Framwork 3.5与Visual Studio 2008 包含很多新特性.AJAX的Web开 ...
- Windows 7 开发新特性
10月25日在西安举行的Windows 7 社区发布活动中我讲了Session1 -- Windows 7 概览.参会的人员达到62人,这个参加人数超过了我的预期,非常开心. 主要讲了一下内容: 一 ...
- Windows Phone 开发工具包7.1公测版新特性
WindowsPhone7.1开发包提供了很多新功能,这些新增功能使开发者能够创建更加丰富多彩的应用程序 1. 执行模式和快速切换应用程序 对执行模式进行了更新,再应用程序的活跃和雪藏之间添加了一个休 ...
- java8新特性_Java8新特性之Date API|乐字节
大家好,我是乐字节的小乐,上篇文章讲述了<Java8新特性之Optional>,接下来,小乐将接着讲述Java8新特性之Date API 2019日历 Java8之Date API Jav ...
- JDK 10 的 109 项新特性
来源:开源中国, www.oschina.net/translate/109-new-features-in-jdk-10 虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的 ...
最新文章
- 视频会议已成为武汉新趋势,在未来,线上会议有机会成为「主流」会议模式吗?
- MAC安装Win10出现”在efi系统上,windows只能安装到gpt分区”问题的解决
- linux c 崩溃调试方法
- Win平台使用cmake工具生成sln工程示例
- 【风控决策】风控决策引擎
- webflux webclient DataBufferLimitException: Exceeded limit on max bytes to buffer
- java小编程----str中没有内容
- 今天去团省委维护网站
- 你在学校我安排了你没有做到最多凶你一顿,在公司不一样,直接得让走人!...
- Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
- hadoop伪分布式配置
- Spark Streaming 遇到 kafka
- 【路径规划】基于matlab GUI改进的DWA算法机器人静态避障路径规划【含Matlab源码 678期】
- 使用Kotlin创建动态Android TextWatcher
- android soundpool 封装,Android 音频播放之SoundPool的使用和封装
- Origin实现中英文版本切换
- dwg如何转换成pdf格式?
- 正则表达式匹配英文和法文
- 裸机搭建深度学习服务器,ubuntu ssh服务器,pytorch, tensorflow, paddle三种框架安装。以及各种避雷。
- 百面机器学习(13)——生成式对抗网络
热门文章
- Atitit.html css 浏览器原理理论概论导论attilax总结
- paip.提升用户体验----gcc c++ JIT-debugging 技术
- 重磅丨银行机构数据治理指引来了,首席数据官、数据驱动、客户隐私、挂钩评级、问责机制通通提及 银保监会 成于微言
- 市场大幅逆转速度达史上最快 宏观交易领域也被机器“占领”
- Julia: MFDCCA和MFCCA算法代码
- Julia: PostgreSQL数据库.......
- 做开源,兴趣是最好的源动力 | 龙蜥开发者说第1期
- 弹性计算 Region 化部署和跨可用区容灾介绍
- 计算机房选址,数据中心机房如何选址 数据中心机房如何日常维护
- 【数字信号去噪】基于matlab小波软阈值+硬阈值+改进的阈值高斯脉冲信号去噪【含Matlab源码 1706期】