又一篇好文:关于ruby本地化
来源:railscn.com
直接复制了,懒得整理。
传统的做法是用gettext来按locale处理文本,详见Using Gettext To Translate Your Rails Application
一般为了简化编码从页面到代码到数据库统统用utf-8,否则就需要用iconv来转码了。。。
一些标准设置:environment.rb里加
require 'jcode'
为了让字符串按utf-8处理。
ApplicationController里加
def set_charset
if request.xhr?
@headers["Content-Type"] = "text/javascript; charset=utf-8"
else
@headers["Content-Type"] = "text/html; charset=utf-8"
end
end
Robbin问我Time.now的格式怎么办,日期、货币、数字的格式不是简单文本替换了,这个gettext没法处理。看了一下Rails的三个本地化插件,其中Globalize开发较活跃。安装如下
或者用配合1.1的开发版本
然后执行
Locale.set_base_language 'en-US'
Locale.set 'en-US'
然后可以用各种格式了:
=>English
>>Locale.set 'zh-CN'
=>...
>>Time.now.localize '%d %B %Y'
=>'05 六月 2005' (这个在console里还是乱码,不过在页面上正常)
>>Locale.set 'es-ES' (西班牙)
>>Time.now.loc '%d %B %Y' (localize的简写)
=>'05 Junio 2006'
还有和AR结合的用法,和gettext差不多。更多的内容参考Globalize主页。
关于ror开发中文网站的相关信息,railscn wiki上也有。
没有评论:
发表评论