首先,應用程序要包含兩個頭文件,並且做一下定義:
#include <glib/gi18n.h>
#include <locale.h>
#define PACKAGE "main" //軟件包名 最後生成的.mo文件名應該命名爲這個
#define LOCALEDIR "./locale" //locale所在目錄
#include <locale.h>
#define PACKAGE "main" //軟件包名 最後生成的.mo文件名應該命名爲這個
#define LOCALEDIR "./locale" //locale所在目錄
然後在主函數中加入以代碼:
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
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下。
最後啓動你的應用程序就行了。