国际化的问题!
在test.pro文件中设置:TRANSLATIONS=chinese.ts
DEFAULTCODEC=zh_CN.GBK
然后使用lupdate test.pro产生chinese.ts
翻译该文档,然后
lrelease test.pro产生chinese.qm
在程序中调用方式如下:
QTranslator translator(this);
translator.load("chinese",".");
qApp->installTranslator(&translator);
为什么出现不了中文呢?
环境是在magic rc2
magic的默认的locale是zh_CN.GBK吧?
谢谢各位了,折腾了好几天了,都没弄出来。 呵呵~
那个翻译文件要复制到指定位置才行哈~ 你在 konsole 下起动程序,它会报告在指定位置找不到 zh_CN.GBK.qm 你把文件放到那里就行了。
不推荐使用 qt的国际化机制,强列建议使用 gettext 技术,翻译 po 要比 ts 文件方便,继承翻译也容易。 我修改了test.pro,
TRANSLATIONS=zh_CN.GBK.ts
应该.qm文件是找到了,不过现在出现的是方块: 在main.cpp中设定字符集为GBK 在main.cpp中添加:
setlocale(LC_ALL,"zh_CN.GBK");
好像没有作用。
附上我的程序! #include <qtextcodec.h>
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
a.setDefaultCodec( QTextCodec::codecForName("GB18030") );
..................
}
不好意思,是我的问题。
应该是使用linguist来翻译,我以为是可以直接使用vi编辑。
这样的话:
a.setDefaultCodec( QTextCodec::codecForName("GB18030") );
就不需要了。
还是要多谢谢各位老大。唉,入门可真不容易。找资料太难找了。 如果用那种方法就把软件作死了。它应该通过读取 LANG 环境变量来显示不同文字,但这也不是好办法,gnome 就是这么干的,结果我想看英文的界面还得改环境变量,不能混合显示。比较合理的方式是默认英文,用户可以自己选择具体语言。 你在 konsole 下起动程序,它会报告在指定位置找不到 zh_CN.GBK.qm 你把文件放到那里就行了。
不推荐使用 qt的国际化机制,强列建议使用 gettext 技术,翻译 po 要比 ts 文件方便,继承翻译也容易。
and qt will migrate to standard gettext in a foreseeable future KDE,请问我使用gettext的步骤对吗?
使用xgettext生成.po文件,使用kbabel翻译,然后再使用msgfmt生成mo文件,将mo文件安装到/usr/share/locale/zh_CN/LC_MESSAGES目录下,
程序中使用
setlocale(LC_ALL,"");
textdomain(mo文件);
不知道为什么,总是乱码?
谢谢!
页:
[1]