QT多国语言,翻译家使用(中英切换示例)

简介

原本的语言是英文,转化成中文,如果想增加其他语言,可以增加好几个.qm文件来实现。

注意:

对用户可见的文本信息全部使用tr()进行封装

步骤

1. 在.pro文件中加入

TRANSLATIONS += Resource/main_widget_zh.ts \
Resource/main_widget_en.ts

2. 选择工具中的外部/语言家(更新翻译),生成.ts文件

在这里插入图片描述
在这里插入图片描述

3. 打开翻译家,把生成的.ts文件在QT语言家中进行翻译。

在这里插入图片描述

4. 选择工具中的外部/语言家(发布翻译),生成.qm文件

(1).打开.ts文件
在这里插入图片描述
(2). 选择要翻译的tr()文件内容。
在这里插入图片描述
(3). 点击发布
在这里插入图片描述
(4). 生成 .qm文件
在这里插入图片描述

5. 加入资源文件

在这里插入图片描述

在这里插入图片描述

6. 加入代码

main.cpp处理如下

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTranslator translator;
    translator.load(":/qm/main_widget_zh");  //安装默认语言
    a.installTranslator(&translator);

    MainWindow w;
    w.setTranslator(&translator);
    w.show();

    return a.exec();
}

MainWindow.h处理如下

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void translateUI();
    void setTranslator(QTranslator* translator);
private:
    Ui::MainWindow *ui;
    QTranslator *translator;

protected:  //mouse
    void changeEvent(QEvent *event);
    
private slots:
     void on_pushButton_2_clicked();
     void on_pushButton_3_clicked();

MainWindow.cpp处理如下

void MainWindow::translateUI()
{
    this->setWindowTitle(tr("main widget"));
    ui->pushButton->setText(tr("Language"));  //重新加载UI文本
}

void MainWindow::setTranslator(QTranslator* translator)
{
    this->translator = translator;
}

/* 语言切换后,首先会进入changeEvent函数,判断当事件类型为QEvent::LanguageChange时,
*  就会执行translateUI函数进行文本重新显示。
*/
void MainWindow::changeEvent(QEvent *event)
{
    switch (event->type())
    {
    case QEvent::LanguageChange:
        translateUI();
        break;
    default:
        QWidget::changeEvent(event);
    }
}

void MainWindow::on_pushButton_2_clicked()
{
    translator->load(":/qm/main_widget_zh");  //设置为中文
}

void MainWindow::on_pushButton_3_clicked()
{
    translator->load(":/qm/main_widget_en");  //设置为英文
}

效果

1.中文显示
在这里插入图片描述
2.英文显示
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt中实现国际化和多语言切换需要以下步骤: 1. 在Qt项目中创建一个“ts”文件,用于存储翻译后的资源。可以使用Qt自带的工具“Qt Linguist”来创建和编辑这些文件。 2. 在Qt项目中使用Qt的翻译API来翻译界面元素。例如,使用tr()函数来标记需要翻译的字符串。 3. 使用lupdate工具来生成一个“.ts”文件,其中包含需要翻译的所有字符串。 4. 使用Qt Linguist编辑器来翻译这些字符串,并将它们保存到“.ts”文件中。 5. 使用lrelease工具来生成一个二进制的翻译文件“qm”文件,其中包含翻译后的资源。 6. 在Qt项目中加载这些翻译文件,并在运行时切换语言。 下面是一个简单的示例代码,演示如何在Qt中实现多语言切换: ```cpp #include <QApplication> #include <QTranslator> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 加载翻译文件 QTranslator translator; translator.load("myapp_zh.qm"); app.installTranslator(&translator); // 设置界面元素的翻译 QLabel label(tr("Hello World!")); label.show(); return app.exec(); } ``` 在上面的例子中,我们使用QTranslator类来加载翻译文件,并使用installTranslator()函数将其安装到应用程序中。我们还使用了tr()函数来标记需要翻译的字符串。 当应用程序启动时,它将自动加载当前系统语言对应的翻译文件。如果用户切换语言,我们只需要重新加载对应的翻译文件即可。 希望这可以帮助你实现Qt中的国际化和多语言切换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的小熊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值