hello.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> #include <libintl.h> // gettext #include <locale.h> #define _(STRING) gettext(STRING) #define PACKAGE "hello" #define LOCALEDIR "/usr/share/locale/" int main(int argv, char* argc[]) { setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); printf(_("Hello, World\n")); printf(_("This is a example.\n")); return 0; } |
提取字符串
1 | xgettext --keyword=_ hello.c -o hello.pot |
编辑hello.pot
1 2 3 4 5 6 | ... msgid "Hello, World\n" msgstr "大家好!\n" msgid "This is a example.\n" msgstr "This is a example.\n" ... |
将hello.pot编译为字节码
1 2 | msgmerge zh_CN.po hello.pot msgfmt zh_CN.po -o hello.mo |
refer to:
https://leedd.com/linux-c-i18n-l10n-xgettext-msgfmt-rpmbuild/