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
$ 你好
发布了127 篇原创文章 · 获赞 135 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/GG_SiMiDa/article/details/103528359