• 7580阅读
  • 4回复

关于Qt中文件,环境VS2005+Qt4.5.2 [复制链接]

上一主题 下一主题
离线kummar
 
只看楼主 倒序阅读 楼主  发表于: 2010-08-21
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2010-08-24) —
以前用的环境是mingw+Qt
我中文化的方法是:
1,直接用QOBject::tr("中文");这样做要在main函数里加上这句 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
2,使用Qt Linguist进行软件国际化,这样做要在工程文件(*.pro文件)中加上一句
TRANSLATIONS =  your_translationfile.ts  并在main函数安装翻译器,并加载翻译文件

现在因开发需要就换成了VS2005+QT的环境了,
但发现中文化解决不了,用上面第一种方法全是乱码,请问一下,用VS是不是不能这样做的,
还想问一下就是能不能用第二种方法,因为,用VS环境,它没有工程文件,怎样把翻译文件加到工程里?
离线米饭拌面

只看该作者 1楼 发表于: 2010-08-22
你搜索一下吧 这个论坛里就有
QQ:32336134
离线kummar
只看该作者 2楼 发表于: 2010-08-24
引用第1楼米饭拌面于2010-08-22 14:08发表的  :
你搜索一下吧 这个论坛里就有

恩,谢谢,论坛上是有关于中文化的,但没有我这个开发环境的VS+QT
离线XChinux

只看该作者 3楼 发表于: 2010-08-24
最好是使用.pro来进行工程管理。
关于翻译,其实与.pro关系不大,与IDE更没有关系,.pro中加暗 xxx.ts文件,可以方便地使用lupdate命令进行.ts文件更新,当然现在没有了.pro,你就需要一个文件一个文件地更新了(调用ludpate命令)。
在你提到的第一种翻译方法中,出现乱码,是因为你的IDE环境打开的是乱码吧?实际上仍然是乱码?

如果没有翻译为其他语言的需求,可以简单的这样写:

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));


在需要汉字的地方直接写汉字即可,前提条件是这个源文件必须保存为GBK内码的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线kummar
只看该作者 4楼 发表于: 2010-08-25
引用第3楼XChinux于2010-08-24 23:40发表的  :
最好是使用.pro来进行工程管理。
关于翻译,其实与.pro关系不大,与IDE更没有关系,.pro中加暗 xxx.ts文件,可以方便地使用lupdate命令进行.ts文件更新,当然现在没有了.pro,你就需要一个文件一个文件地更新了(调用ludpate命令)。
在你提到的第一种翻译方法中,出现乱码,是因为你的IDE环境打开的是乱码吧?实际上仍然是乱码?
如果没有翻译为其他语言的需求,可以简单的这样写:
.......

谢谢版主指点,在VS+QT环境里直接用第二种方法能解决中文化问题,但用第一次方法还是不行的,我在VS中编写程序,tr("")中是直接输入中文的,比方说
tr("中文")这样,mian.cpp中加QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
或是加
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
都不行的。
但发现用以下这种方法可以的
QString::fromLocal8Bit("大地");
这样在程序显示时不会乱码,版主您能简单讲解一下,在QT内部是怎样实现中文化的吗,比如用翻译文件 *.qm, QObject::tr(), QString::fromLocal8Bit(),这些是怎样实现的。
快速回复
限100 字节
 
上一个 下一个