ysb 发表于 2005-2-20 10:03:56

国际化的问题!

在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吧?

谢谢各位了,折腾了好几天了,都没弄出来。

stdio 发表于 2005-2-20 11:35:02

呵呵~

那个翻译文件要复制到指定位置才行哈~

KDE 发表于 2005-2-20 12:10:05

你在 konsole 下起动程序,它会报告在指定位置找不到 zh_CN.GBK.qm 你把文件放到那里就行了。
不推荐使用 qt的国际化机制,强列建议使用 gettext 技术,翻译 po 要比 ts 文件方便,继承翻译也容易。

ysb 发表于 2005-2-21 08:24:24

我修改了test.pro,
TRANSLATIONS=zh_CN.GBK.ts

应该.qm文件是找到了,不过现在出现的是方块:

stdio 发表于 2005-2-21 11:48:46

在main.cpp中设定字符集为GBK

ysb 发表于 2005-2-21 12:53:27

在main.cpp中添加:
setlocale(LC_ALL,"zh_CN.GBK");
好像没有作用。

附上我的程序!

stdio 发表于 2005-2-21 15:52:17

#include <qtextcodec.h>

int main( int argc, char ** argv )
{
      QApplication a( argc, argv );
      a.setDefaultCodec( QTextCodec::codecForName("GB18030") );
..................

}

ysb 发表于 2005-2-21 17:16:59

不好意思,是我的问题。
应该是使用linguist来翻译,我以为是可以直接使用vi编辑。
这样的话:
a.setDefaultCodec( QTextCodec::codecForName("GB18030") );
就不需要了。

还是要多谢谢各位老大。唉,入门可真不容易。找资料太难找了。

KDE 发表于 2005-2-22 21:01:58

如果用那种方法就把软件作死了。它应该通过读取 LANG 环境变量来显示不同文字,但这也不是好办法,gnome 就是这么干的,结果我想看英文的界面还得改环境变量,不能混合显示。比较合理的方式是默认英文,用户可以自己选择具体语言。

myopia 发表于 2005-2-23 00:00:14

你在 konsole 下起动程序,它会报告在指定位置找不到 zh_CN.GBK.qm 你把文件放到那里就行了。
不推荐使用 qt的国际化机制,强列建议使用 gettext 技术,翻译 po 要比 ts 文件方便,继承翻译也容易。


and qt will migrate to standard gettext in a foreseeable future

ysb 发表于 2005-2-28 19:06:08

KDE,请问我使用gettext的步骤对吗?

使用xgettext生成.po文件,使用kbabel翻译,然后再使用msgfmt生成mo文件,将mo文件安装到/usr/share/locale/zh_CN/LC_MESSAGES目录下,
程序中使用
setlocale(LC_ALL,"");
textdomain(mo文件);

不知道为什么,总是乱码?
谢谢!
页: [1]
查看完整版本: 国际化的问题!