我使用的是qt/e 2.3.7,由于qt/e本身使用的是 Unicode作为内部编码,所以国际化比较容易.
首先在你需要翻译的文字上 添加 tr()函数,比如:tr("hello,world");如果编译是时候提示错误,可以使用
Qobject::tr(),对于需要动态生成的字符串,用以下格式:tr("button%d").arg(i);
接下来步骤为 :
1.用findtr提取信息:
findtr main.cpp > i18n.po
这将把main.cpp中有tr()的文字提取到i18n.po中.
当你有多个.cpp文件需要翻译事,
findtr a.cpp b.cpp > i18n.cpp
注意:必需把需要翻译的文件保存为 编码格式:GB2312 或GBK
2.复制i18n.po为i18n_gb.po
3.打开i18n_gb.po,更改"charset=Unicode\n"(适用于我使用的Fedora,其他比如实验箱需改为gb2312)
4.用msg2qm转换i18n_gb.po为qm文件
msg2qm在qt-2.3.10/tools/msg2qm文件下,需要编译为本地可执行文件
msg21m i18n_gb.po i18n_gb.qm
5.使用i18n_gb.qm
在main.cpp 中
include //信息翻译载入
在main函数中添加如下语句:
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
a.setFont(QFont("Times", 16, QFont::Normal)); //设置字体, 使中文程序尽量使用点阵字体.
QTranslator *translator = new QTranslator(0);//建立 Translator, 用于载入信息文件
translator->load("i18n_gb.qm", ".");
a.installTranslator( translator );
...
}
vi fontdir
yourfont yourfont.ttf FT n 50 0 su 100,120,140,160
makeqpf yourfont 0-ff,4e00-fa29
实际说明:一般对于win XP来水字库用的基本是gbk码,可以直接cp到linux下,*.po文件改GBk就行了。
阅读(1501) | 评论(0) | 转发(0) |