Qt 国际化语言版本
来源:互联网 发布:武汉学网络运营 编辑:程序博客网 时间:2024/04/28 18:41
方法一:使用tr()函数
QT中,用QString存储所有可见得文本/字符串,使用tr()将各种字符编码的文本转化为QString,然后既可以将他们设置为控件的显示文本。
在Widget的构造函数中加入:
QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));
QFont font1("Times", 12, QFont::Normal, FALSE);
this->setFont(font1);
这样在该窗体的其他位置,可以使用tr()设置控件的内容,他们均可以显示为中文了。
setWindowTitle(tr("消息嗅探器"));
注意:这种方式设置的中文显示对于整个控件,以及它们的子控件都生效。如果在子控件中另外设置了setFont(),那么全局的字体方案将会失效。
方法二:使用translate()转换
先将需要显示的中文转化为gbk编码的unicode,然后将unicode转化为QByteArray,在将只转化为char指针,并传递给translate()函数。
注意:这种方法显示中文时,会出现失效的情况。譬如在菜单栏中可以显示中文,但是在Label或者Button中却无法显示中文。
另外,这种方法仅仅建议只有少数按钮显示中文时选用,否则,代码写得也麻烦呀。
如果使用QDesigner生成的ui文件,后创建的界面类,一般都有一个retranslateUI,就是做这个用的。
const char * stringToUnicode(const char *str)
{
static QTextCodec *codec = QTextCodec::codecForName("gbk");
QByteArray qba = (codec->toUnicode(str)).toLocal8Bit();
const char * c_str = qba.data();
return c_str;
}
menuFile->setTitle(QApplication::translate("MainWindow", stringToUnicode("文件"), 0, QApplication::CodecForTr));
QTextCodeC用于在不同的编码方案之间进行转换。
方法三:使用Linguist
这是QT自带的用于软件本地化的软件的工具。没仔细研究过。
这种方式可以用于外文软件的本地化,那么相比于前两者方式,处于更高的层次。
延生一:编写多语言版本的QT程序
(本部分内容参考QT手册Internationalization一节)
在方法一和方法二种,仍然是一个程序对应一个语言。如果希望QT程序针对不同的语言,有不同的版本,该如何操作?
准备一个.pro文件,如:
HEADERS = funnydialog.h /
wackywidget.h
SOURCES = funnydialog.cpp /
main.cpp /
wackywidget.cpp
FORMS = fancybox.ui
TRANSLATIONS = superapp_dk.ts /
superapp_fi.ts /
superapp_no.ts /
superapp_se.ts
1. 使用lupdate,从QT程序中抽取可转换的文本,生成一个ts文件。
2. 使用Linguist工具,在原始文本间转换。ts文件以xml格式保存,可以手动修改。
3. 运行lrelease,生成轻量级的qm格式的消息文件。这种文件可以在程序中使用。
4. In your application, you must QTranslator::load() the translation files appropriate for the user's language, and install them using QCoreApplication::installTranslator().
- Qt 国际化语言版本
- QT国际化支持多语言
- 初学Qt:国际化解决中文乱码以及生成多语言版本的软件
- QT多语言处理(语言国际化)
- Qt 语言国际化 语言家相关
- Qt国际化之动态语言切换
- qt 翻译 语言家 国际化的使用
- QT 国际化,多语言平台的支持
- QT国际化与多语言实现
- Qt界面多语言国际化的实现
- Qt之国际化--多语言动态切换
- Qt中动态实现语言国际化
- 游戏实现多语言版本(国际化)
- iOS 国际化 根据当前语言版本自动改变当前语言
- QT国际化, 运行时改变界面语言, 利用QT实现国际化应用程序
- QT国际化, 运行时改变界面语言, 利用QT实现国际化应用程序
- qt国际化
- Qt 国际化
- UltraEdit 文件标签 显示
- Mysql存储Java BitSet(转)
- Our Team`s dream must be realized!
- 车检流程(非新车)
- C#中动态的实现控件的实例
- Qt 国际化语言版本
- 10000的阶乘只要1.3秒左右
- 泛型vs模板
- 一般n-叉树的C++实现
- bbossgroups cxf Webservice服务管理框架
- JSTL字符串处理函数
- 使用dbgsrv及windbg进行远程调试
- .NET/CLR好书推荐
- linux 进程同步