QT使用TRANSLATIONS添加多国翻译(详细过程)

本文主要描述linux系统中,使用QT添加多国语言翻译的方法,使用TRANSLATIONS+lupdate+lrelease等工具,按照步骤添加全局地址,创建文件,完成多国语言翻译功能。

1.添加目录

1.1创建项目目录

在项目中创建文件夹路径

自定义路径,本文以 resource/language/ 为例

1.2项目中创建文件在pro或者pri文件中,添加文件名

复制代码
TRANSLATIONS += \
    ./resource/language/zh_CN.ts \
    ./resource/language/en_US.ts

示例图

2.创建文件

提取QT项目中用qsTr包裹的文本,生成ts后缀名文件

2.1添加环境变量

(仅linux系统,windows类似或者直接使用)

2.1.1添加lupdate和lrelease的环境变量,快捷使用

先找到QT版本下的bin目录,最后几个文件夹是 ***/bin

2.1.2按下ctrl+Alt+T,打开控制台

输入指令查看自己电脑目录下文件是哪个,本文是.bashrc

复制代码
ls ~/.bash*

2.1.3输入指令,编写该文件

复制代码
vi ~/.bashrc

2.1.4在最后一行输入指令,添加全局变量,具体路径按照个人电脑的bin

复制代码
export PATH=/media/QT5.15/5.15.2/gcc_64/bin:$PATH

如图,输入完毕,保存并退出文件

2.1.5输入指令启用设置,使其生效

复制代码
source ~/.bashrc

2.1.6输入指令查看版本

复制代码
lupdate -version

显示有版本输出时,说明全局变量添加成功

3.生成ts文件

3.1使用lupdate生成ts文件

3.1.1在任意目录输入指令,前面是pro路径,后面aaa.pro是项目名

复制代码
lupdate /home/xxx/xxx/aaa.pro

3.1.2在同pro控制台输入指令

复制代码
lupdate aaa.pro

自动创建项目文件,如图所示

4.编辑翻译

4.1使用QT自带的 linguist 工具翻译

任意目录,输入linguist,打开软件

复制代码
linguist

打开成功显示如下图

4.2添加翻译

点击文件 - 打开 ,选择需要翻译的ts文件

打开后如下图

修改内容:

1.当前页所有翻译完成并勾选后,自动打钩

2.默认问号

3.翻译完成后点击问号,打钩标记,不点击不影响

4.翻译内容

5.注释信息

4.3保存(很重要)

点击左上脚-文件-保存

5.生成qm文件

5.1linguist中生成

保存文件后,点击左上角 - 文件 - 发布

5.2方法同3,使用lrelease操作

在pro同目录,打开控制台,输入如下指令,aaa.pro是项目pro名称

复制代码
lrelease aaa.pro

5.3生成

查看如下图生成文件

6.项目中调用翻译文件

6.1添加文件到项目中

右击,添加现有文件,将qm文件导入

6.2创建函数,区分使用的翻译文件

复制代码
#include <Window.hpp>
#include <QCoreApplication>
void setLanguage(int value)//输入区分的翻译类型
{
    qWarning()<<"value"<<value;
    if(language_value != value){
        bool is_translate = true;
        QCoreApplication::removeTranslator(&m_translator);
        switch(value){
        case 0:
            is_translate = m_translator.load(":/language/zh_CN.qm");
            break;
        case 1:
            is_translate = m_translator.load(":/language/zh_CN.qm");
            break;
        case 2:
            is_translate = m_translator.load(":/language/en_US.qm");
            break;
        default:
            is_translate = m_translator.load(":/language/zh_CN.qm");
            break;
        }
        QCoreApplication::installTranslator(&m_translator);
        qWarning()<<"是否正确打开文件"<<is_translate;
        Window::instance()->engine()->retranslate();

        language_value = value;
    }
}

6.3查找文件路径

右击qm文件,点击 copy Path 或者点击 copy URL,复制路径

替换代码中load加载的路径

7使用翻译函数

调用setLanguage(int value)方法,根据不同翻译,给value赋值即可

setLanguage(1);

7快捷工具添加和使用

7.1打开配置

7.1.1点击工具

7.1.2点击 外部 - 配置 进入如下界面

7.1.3点击左下角 添加 - 目录

7.1.4出现新目录,双击可改名

7.1.5点击选中刚刚创建的 新类别

点击左下角 添加 - 添加工具 ,如下图

7.1.6根据lupdate和lrelease添加不同参数

update

复制代码
%{CurrentDocument:Project:QT_INSTALL_BINS}/lupdate

%{CurrentDocument:Project:FilePath}

%{CurrentDocument:Project:Path}

release

复制代码
%{CurrentDocument:Project:QT_INSTALL_BINS}/lrelease

%{CurrentDocument:Project:FilePath}

%{CurrentDocument:Project:Path}

工具添加完毕

7.2工具使用

点击 工具 - 外部 - 刚刚创建的工具目录 - 工具名称lupdate或lrelease

根据选择的工具,自动执行lupdate和lrelease

8.注意

lrelease效果和linguist的发布是一样的

记得保存

相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner1 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz6 天前
QML Hello World 入门示例
qt
xcyxiner9 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner10 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner10 天前
DicomViewer (添加模型类)3
qt
xcyxiner11 天前
DicomViewer (目录调整) 2
qt
xcyxiner11 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
桥田智能13 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
森G13 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt