您的位置:首页 > 汽车 > 新车 > 有限责任公司如何承担债务_企业培训师资格证报考2023_网站点击软件排名_互动营销是什么

有限责任公司如何承担债务_企业培训师资格证报考2023_网站点击软件排名_互动营销是什么

2025/1/3 8:39:02 来源:https://blog.csdn.net/byxdaz/article/details/144836520  浏览:    关键词:有限责任公司如何承担债务_企业培训师资格证报考2023_网站点击软件排名_互动营销是什么
有限责任公司如何承担债务_企业培训师资格证报考2023_网站点击软件排名_互动营销是什么

       QT国际化是指将一个软件应用程序的界面、文本、日期、数字等元素转化为不同的语言和文化习惯的过程。这使得软件能够在不同的国家和地区使用,并且可以根据用户的语言和地区提供本地化的使用体验。

一、国际化流程

1、创建.ts文件。

    Visual Studio中使用Qt Visual Studio Add-in创建ts文件。步骤:
     1.1)右键单击工程,弹出菜单。
     1.2)选择“Create New Translation File...”选项,弹出对话框,创建ts文件,就在程序目录下生成了ts文件。可以根据不同国家语言生成多个ts文件。

2、生成.pro文件。

    从Visual Studio项目生成(Qt Visual Studio Add-in生成.pro文件)。步骤:
     2.1)右键单击工程,弹出菜单。
     2.2)选择“Create basic .pro File...”选项,弹出Export Poject对话框。
     2.3)取消勾选“Create .pri File”选项,点击"OK"按键,就在程序目录下生成对应的.pro文件。
     2.4)如果生成pro文件中没有TRANSLATIONS文件,可以手工加上。比如:

TRANSLATIONS += test_cn.ts \test_en.ts

3、使用lupdate更新ts文件。

  使用lupdate工具从源代码中抽取需要翻译的字符串。比如:

lupdate d:\test.pro

    提取的字符串主要是:源代码中tr函数的字符串,.ui的字符串。
     3.1)在.h或.cpp中需要界面显示的字符串,统一用tr。使用tr函数提取字符串。tr()函数是QObject类的一个static函数,其签名如下:

static QString tr(const char *sourceText, const char *comment = 0, int n = -1);
QString greeting = tr("Hello,World!");

     3.2)界面(.ui文件)要显示的字符串,都用英文表示。
     3.3)翻译复数形式,比如英语,很多名词的单复数形式是不相同的,为了解决这个问题,Qt在tr()函数中提供了一个参数n。请看如下代码:

     int n = messages.count(); showMessage(tr("%n message(s) saved", "", n));

    对于n的值的不同,Qt会翻译成不同的文字,例如:
     n     翻译结果 
     0     0 message saved 
     1     1 message saved
     2     2 messages saved
     5     5 messages saved

4、编辑.ts文件。

使用Qt Linguist工具进行翻译。
打开Qt Linguist工具,在菜单上选择“文件”->“打开”。选择.ts文件。

打开ts文件后看到的界面如下:

翻译对应的字符串。
当翻译完毕所有文本时,前面会出现“?”标记,这表示翻译了,但是翻译者没确认此项翻译是否通过,单击问号变成绿色的“√”即可。
翻译完成后,记得全部保存一下。

5、转换.ts文件到.qm文件。

使用lrelease工具,将翻译后的ts文件转换成实际使用的qm文件。

lrelease d:\test_en.ts -qm d:\test_en.dm

6、QTranslator加载翻译文件。

注意:使用tr的每个文件或ui文件对应的h和cpp文件,需要在文件开头增加一行代码。

#pragma execution_chatacter_set("utf-8")

二、示例

#include <QApplication>
#include <QPushButton>
#include <QTranslator>int main(int argc, char *argv[]) {QApplication app(argc, argv);QTranslator translator;if (translator.load(QString("test_") + QLocale::system().name())) {app.installTranslator(&translator);}QPushButton button(QObject::tr("Hello, World!"));button.resize(200, 60);button.show();return app.exec();
}

三、ts文件乱码

遇到lupdate生成的.ts文件出现乱码的情况, 通常是由于字符编码设置不匹配导致的。lupdate默认使用utf-8编码,但如果你的源代码或Qt Creator的设置使用了不同的编码,这可能会导致乱码。
解决方法:
1、确保源代码使用utf-8编码。检查并确保源代码文件(包括.cpp、.h、.ui等文件)使用的是utf-8编码。你可以在文本编辑器中查看和更改文件编码。
2、在Qt Creator编码环境下,设置Qt Creator编码。
Qt Creator默认使用UTF-8编码,如果项目文件或源代码文件使用了其他编码,就可能导致中文乱码。因此,我们需要在Qt Creator的设置中,确保所有文件都使用UTF-8编码。操作步骤:
2.1)打开Qt Creator,选择菜单栏中的“工具(Tools)”->“选项(Options)”。
2.2)在弹出的选项窗口中,选择“文本编辑器(Text Editor)”->“行为(Behavior)”->“文件编码(File Encodings)”。
2.3)确保“默认编码(Default encoding)”设置为“UTF-8”。
3、在Visual Studio编码环境下,配置vs的编码,只能单个文件配置。操作步骤:
3.1)选择并打开一个文件。
3.2)光标在文件内容上,在菜单上选择“文件”->“高级保存选项”,选择UTF-8编码,点击“确定”按钮即可。

四、不重启程序,自动切换语言。

监听QEvent::LanguageChange事件,当切换翻译器时会在底层发出一个LanguageChange事件,所有的需要改变文本的窗口都监听这个事件。
示例代码:
在窗口中重写 bool event(QEvent *event)

bool MainWindow::event(QEvent *event)
{if(event->type() == QEvent::LanguageChange){ui->retranslateUi(this); //重新翻译UI界面}return QWidget::event(event);
}

在加载新的语言时,先移除已绑定的语言。 

void MainWindow::slotCurrentTextChanged(const QString &str)
{static QTranslator* translator;if (translator != NULL){//先移除已绑定的语言qApp->removeTranslator(translator);delete translator;translator = NULL;}translator = new QTranslator;if(str == "English"){translator->load("D:/test_en.qm");qApp->installTranslator(translator);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com