找回密码
 注册
查看: 1906|回复: 10

国际化的问题!

[复制链接]
发表于 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吧?

谢谢各位了,折腾了好几天了,都没弄出来。
发表于 2005-2-20 11:35:02 | 显示全部楼层
呵呵~

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

使用道具 举报

发表于 2005-2-20 12:10:05 | 显示全部楼层
你在 konsole 下起动程序,它会报告在指定位置找不到 zh_CN.GBK.qm 你把文件放到那里就行了。
不推荐使用 qt  的国际化机制,强列建议使用 gettext 技术,翻译 po 要比 ts 文件方便,继承翻译也容易。
回复

使用道具 举报

 楼主| 发表于 2005-2-21 08:24:24 | 显示全部楼层
我修改了test.pro,
TRANSLATIONS=zh_CN.GBK.ts

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2005-2-21 11:48:46 | 显示全部楼层
在main.cpp中设定字符集为GBK
回复

使用道具 举报

 楼主| 发表于 2005-2-21 12:53:27 | 显示全部楼层
在main.cpp中添加:
setlocale(LC_ALL,"zh_CN.GBK");
好像没有作用。

附上我的程序!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2005-2-21 15:52:17 | 显示全部楼层
[code:1]#include <qtextcodec.h>

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

}

[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-2-21 17:16:59 | 显示全部楼层
不好意思,是我的问题。
应该是使用linguist来翻译,我以为是可以直接使用vi编辑。
这样的话:
a.setDefaultCodec( QTextCodec::codecForName("GB18030") );
就不需要了。

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

使用道具 举报

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

使用道具 举报

发表于 2005-2-23 00:00:14 | 显示全部楼层
[quote:8656ce9aac="KDE"]你在 konsole 下起动程序,它会报告在指定位置找不到 zh_CN.GBK.qm 你把文件放到那里就行了。
不推荐使用 qt  的国际化机制,强列建议使用 gettext 技术,翻译 po 要比 ts 文件方便,继承翻译也容易。[/quote]


and qt will migrate to standard gettext in a foreseeable future
回复

使用道具 举报

 楼主| 发表于 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文件);

不知道为什么,总是乱码?
谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-1-9 06:03 , Processed in 0.085493 second(s), 17 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表