日本看板


 
标题: 用gettext 实现rails国际化
  本主题由 admin 于 2008-3-16 16:11 移动 
admin (蕨菜)
一代文豪
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5


UID 1
精华 1
积分 13799
帖子 4848
威望 190
金钱 24375
慈善捐款(日元) 400
阅读权限 200
注册 2007-3-25
 
发表于 2007-11-11 16:25  资料  个人空间  短消息  加为好友 
用gettext 实现rails国际化

rails 项目要实现多语言版本,也就是我们常说的 i18n,有好多种实现方式。不过最普遍使用的,就是 gettext 。虽然网上有许多利用 gettext 实现国际化的例子与示例代码,但是照抄那些代码并不能给自己带来实质性的提高,还是需要总结一下的。

gettext 的工作原理,是将所有需要国际化的字符串,以类似于 Java 的资源的形式引用,例如 _('COMPANY_NAME') 实际上就是把 COMPANY_NAME 作为资源键,通过方法 _() 就能得到所需语言的字符串。

建立这个字符串资源需要使用到 poedit 。这是一个基于 GNU 的开源项目,与 gettext 配合可以达到非常好的效果。

具体的操作流程,随便搜索就有很多,大致的概括如下:

将原项目中需要国际化的内容,替换成对应的键
建立 po 目录,使用 rake updatepo 命令,将项目中所有的键取出,得到一个 .pot 文件

在 po 目录中建立相应的语言目录,比如 en_US,zh_CN 等
使用 poedit,从 .pot 文件导入目录,保存得到一个 .po 文件
将 .po 文件复制到所有语言版本目录下,并使用 poedit 翻译成相应的语言
使用 rake makemo 命令,自动在 locale 下创建对应的语言版本以及 .mo 文件,翻译工作完成
在项目中,使用 set_locale 方法设置需要的语言版本
整个过程并不复杂,需要注意一点就是各国语言文字的表现可能不尽相同,需要多考虑一下页面的布局与美观,不能因为字符问题就把原有的设计破坏掉





人生吧,0岁出场,10岁快乐成长,20岁为情彷徨,30岁基本定方向,40岁拼命打闯,50岁回头望望,
60岁告老还乡,70岁搓搓麻将,80岁晒晒太阳,90岁躺在床上,100岁挂在墙上・・・・・・
顶部
 



当前时区 GMT+9, 现在时间是 2008-10-7 23:42

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 日本看板 - Archiver