GTK+ 程序使用gettext國際化小結

gettext軟件包是GNU工程中解決國際化問題的重要工具,支持C/C++和JAVA語言,它在開源 界應用相當廣泛,GNOME/GTK+的國際化問題都是用它來解決的,正常的情況下GNU/LINUX系統是默認安裝這一軟件包的。 

    首先,應用程序要包含兩個頭文件,並且做一下定義:

#include <glib/gi18n.h>
#include 
<locale.h>

#define PACKAGE "main" //軟件包名  最後生成的.mo文件名應該命名爲這個
#define LOCALEDIR "./locale" //locale所在目錄

然後在主函數中加入以代碼:
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);

然後在程序代碼中使用 _( )  括起需要進行國際化的字符串即可。

生成po文件:
    xgettext -j -k_ -o main.po *.c
-j 參數表示不覆蓋生成過的po文件
-k 指定翻譯字符以何種宏定義括起,我們在前面使用的是 _( ) 所以用 -k_
輸入文件可以是*.c表示掃描所有的c文件,如果是glade生成的UI文件,可以使用 *.glade

進行翻譯:
    打開po文件,msgid後面的內容爲代碼中的英文, msgstr後面的內容爲要翻譯的中文,翻譯好後保存爲UTF8格式。

生成mo文件:
    msgfmt -o main.mo main.po

用於我們指定的LOCALEDIR爲./locale,所以我們將生成的mo文件拷到 ./locale/zh_CN/LC_MESSAGES下。

最後啓動你的應用程序就行了。
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章