其實問題不是在megfmt, 而是在bg5cc 🙁 bg5cc 的識別有點笨, 他只會找尋不是有效的""標記, 並增加一個""成為"\" eg. ""後面不是跟著"n","t","r",""...etc.
sorry, 記錯了 應該是屬於中文字中的""字元 就是前面是 ASCII code 160-247 的字元
問題就來了, 當一個中文字含有這樣的符號時 eg. 珮n == [alt-175]\n bg5cc 便會將之變成 '珮\n' ([alt-175]\n), compiler 在將之還原成[alt-175]\n 但當您再做一次bg5cc 時, 他把 '珮\n' 又變成了 '珮\n' i.e. [alt-175]\\n 而編譯器會將之當作 [alt-175][換行] (第一個""來自"\", 將"\n"翻譯成換行字元) 這當然不是我們所預期的結果, 所以 msgfmt 才會回報錯誤
解決的方法 小虫 兄在cle-devel 上有提供過 (轉載於 http://i18n.linux.org.tw/howto.php3) 基本上就是在翻譯檔案前, 先用 sed 把 "\" 還原成 "", 指令如下 cat filename.po | sed 's/\\/\/g' > filename.pox 或是您可以使用 Plasma 兄所提供的 bg5cc.pl 來取代原本的bg5cc 便可以省掉還原的動作, 因為他的程式較聰明, 不會把 "\" 變成"\" 您也可以在前述網址找到這個script
Shyue