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

rails 与 i18n

阅读更多

最近因为有做多语言版本的需要,多了解了一些 rails 与 i18n 的内容。

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 方法设置需要的语言版本

整个过程并不复杂,需要注意一点就是各国语言文字的表现可能不尽相同,需要多考虑一下页面的布局与美观,不能因为字符问题就把原有的设计破坏掉

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics