2009年3月17日 星期二

mo檔po檔互相轉換

個人覺得Linux比Windows更有特色的地方
在於Linux可以很輕易的就將自己的系統替換語系
例如我可以很快的就將中文的使用介面,轉換成英文,日文或其他語系。
如果是Windows,通常一張光碟裝起來就是一種語系,更換系統語言介面
並不是那麼容易的一件事。

Linux的翻譯檔位於/usr/share/locale底下
當使用者在登錄介面選完語系的時候
Kernel就會到該語系翻譯檔目錄下讀取各個應用程式的翻譯檔
而立即的轉換系統語言

系統讀的翻譯檔案通常叫做mo檔 (machine object)
但是使用者並不能直接修改mo檔案
必須將mo檔轉換成po檔(portable object)
才可以用gedit等編輯器來修改檔案
修改好了之後在將po檔轉換成mo檔
置換到該目錄,新的翻譯即可生效

mo轉成po的指令為 msgunfmt -o 原始檔.mo 原始檔.po
例如: msgunfmt -o /usr/share/locale/zh_TW/LC_MESSAGES/gnome-panel-2.0.mo gnome-panel-2.0.po

之後即可修改gnome-panel-2.0.po的內容,將翻譯修改或新增後
在下達po轉mo的指令: msgfmt -o gnome-panel-2.0.po /usr/share/locale/zh_TW/LC_MESSAGES/gnome-panel-2.0.mo
到時重新開機後,系統裡面跟gnome-panel有關的翻譯
就會替換成你之前所修改的內容

當然,這種作法稍嫌麻煩且複雜,現在有種套件叫做poeditor
安裝之後即可很方便的修改po檔並且轉換成mo檔