`
qualenac
  • 浏览: 62012 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Ruby on Rails的国际化,本地化问题的解决(转载)

阅读更多

原文出自: http://my.donews.com/woodstudio/

Ruby on Rails是一个很不错的web开发框架,不过由于目前其本身对国际化的支持较差,所以需要一些辅助的东西来解决国际化问题。

我最先使用的是一个叫localization的插件,这个插件的使用说明在Ruby on Rails官方的wiki上面有,这个插件使用比较简单,不过功能比较弱。

目前使用的是Ruby-GetText,这个插件功能强大,基于GNU的gettext,详细的使用说明在 http://manuals.rubyonrails.com/read/chapter/105 上面有写,我大概提一下要点:

首先要是Ruby on Rails支持UTF-8,通过将如下代码添加到environment.rb中:

$KCODE = ‘u’
require ‘jcode’

接着是安装Ruby-GetText,运行gem install gettext就可以了,如果是Windows平台就选2,否则选1。接着就是在项目根目录下面创建po目录,里面添加你需要Locale的名字作为子目录,比如en, zh_CN等。需要国际化的字符串都以_(”")来书写,比如想国际化“编辑”这个标签,就可以在视图的rhtml中使用_(”Edit”),这样在显示的时候会自动根据Locale来替换成相应的值。

接着在项目的rakefile里面如下内容:

desc “Create mo-files for L10n”
task :makemo do
  GetText.create_mofiles(true, “po”, “locale”)
end

需要注意的是在上面给出的链接的那篇文章里面,还需要添加updatepo这样一个目标,不过这个目标在我这不起作用,总是出错,我的办法是下载那篇文章附带的代码: http://www.digitale-wertschoepfung.de/artikel/gettext/using-gettext-with-rails.tgz 。在里面的script目录下面有一个localize文件,把它拷贝到你的项目的script目录下面,然后运行ruby ./script/localize {文本域的名字}就可以从controllers, views中更新po数据,用Unicode编辑器(比如UltraEdit)修改各个po文件,然后运行rake makemo就可以了。关于如果修改application.rb及其他controller的代码,查看给出的链接。此时重新启动server,就可以查看效果了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics