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
$ 你好
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503
应支付0元
点击重新获取
扫码支付

支付成功即可阅读