#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#include <libintl.h>
#include <locale.h>
#define _(txt) gettext(txt)
int main()
{
setlocale(LC_ALL,"");
// 设置名称 以及查找目录
bindtextdomain("myapp","./po");
// 设置名称
textdomain("myapp");
printf("hello world %s\n",_("fuck"));
system("pause");
return 0;
}
#!/bin/bash
i686-w64-mingw32-g++ main.cpp \
/home/king/vlc/contrib/i686-w64-mingw32/lib/libintl.a \
/home/king/vlc/contrib/i686-w64-mingw32/lib/libiconv.a \
-I/home/king/vlc-2.1.5/contrib/i686-w64-mingw32/include/
#!/bin/bash
mkdir po
cd po
# 查找所有的源码,cpp处可修改。
find .. -name "*.cpp" > POTFILEE.in
# 查找所有的源码,并找出所有需要翻译的字段
# 若有多个id,只会显示一个。
# 若有多个文件,也全部会放入zh_CN.po中
# ID支持空格
xgettext -f POTFILEE.in -d zh_CN --keyword=_ --keyword=N_ --from-code=UTF-8
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-12-10 20:39-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../main.cpp:10
msgid "fuck"
msgstr ""
mkdir -p zh_CN/LC_MESSAGES/
msgfmt -o zh_CN/LC_MESSAGES/myapp.mo zh_CN.po
##Windows
zh_CN.po使用utf8编码。正常情况,若程序全部用mingw来编写,包括界面(用gtk/qt/wxwdiget)。那也无视。但是Windows下总是有些地方要用gb编码,
#: ../main.cpp:15
msgid "fuck you"
msgstr "ri ni"
#: ../main.cpp:16
#, fuzzy
msgid "fuck you1"
msgstr "ri ni"
#: ../fuck.cpp:15
msgid "fuck"
msgstr "ri"