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,就可以查看效果了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章