gettext 多語言翻譯

// myapp.c

#include <stdio.h>
#include <locale.h>
#include <libintl.h>

#define _(str)  gettext(str)
#define TEXT_DOMAIN "myapp"

int main() {
    setlocale(LC_ALL, "");
    bindtextdomain(TEXT_DOMAIN, "locale");
    textdomain(TEXT_DOMAIN);

    puts(_("hello"));
    return 0;
}

編譯

$ gcc myapp.c -o myapp

生成pot文件(po模板文件)

$ xgettext -a myapp.c -o myapp.pot

根據模板文件生成對應語言的po文件

$ msginit -l zh_CN -i myapp.pot -o zh_CN.po

翻譯po文件中的msg

...
"Content-Type: text/plain; charset=UTF-8\n"
...
msgid "hello"
msgstr "你好"

生成mo(Machine Object)文件

$ msgfmt zh_CN.po -o zh_CN.mo

部署

mkdir -p locale/zh_CN/LC_MESSAGES
cp zh_CN.mo locale/zh_CN/LC_MESSAGES/myapp.mo

運行

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