目录
- 1.在工程手动创建`languages`文件夹
- 2.修改`CMakeLists.txt`
- 3.在qml上随便添加一下文字内容
- 4.`执行CMake`
- 5.把`.ts`和`.qm`添加到项目中
- 6.翻译成英文的示例
- 7.在main里面加载语言文件
- 8.启动软件自动获取电脑的语言
- 遗留问题
参考:Qt 项目(CMake)设置国际化支持
1.在工程手动创建languages
文件夹
2.修改CMakeLists.txt
set(TS_FILES
"${CMAKE_SOURCE_DIR}/languages/aidi_zh_CN.ts"
"${CMAKE_SOURCE_DIR}/languages/aidi_en_US.ts"
)
# 模拟更新和发布的命令代码
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)
# 生成ts和qm文件
foreach(_ts_file ${TS_FILES})
execute_process(
COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_ts_file})
execute_process(
COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file})
endforeach()
3.在qml上随便添加一下文字内容
例如:
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Column {
id: column
y: 20
spacing: 20//子项之间的间距
Text {
id:sfsd
text: qsTr("苹果")
}
Text {
text: qsTr("香蕉")
}
Text {
text: qsTr("西瓜")
}
}
}
文本需要使用qsTr( )
包裹
4.执行CMake
5.把.ts
和.qm
添加到项目中
6.翻译成英文的示例
选中.ts
文件,使用Qt语言家打开
7.在main里面加载语言文件
#include <QTranslator>
QTranslator qtTranslator;
qtTranslator.load(":/languages/aidi_en_US.qm");//英文
// qtTranslator.load(":/languages/aidi_zh_CN.qm");//中文
app.installTranslator(&qtTranslator);
效果
8.启动软件自动获取电脑的语言
QLocale::Language lab = QLocale::system().language();
if(QLocale::Chinese == lab)
{
qDebug() << "电脑系统用的是中文n" ;
}
else if(QLocale::English== lab){
qDebug() << "电脑系统用的是英文n" ;
}
遗留问题
我只是实现了在main()函数里加载语言,
如果在程序中修改语言->记录语言配置->需要将程序重启->再加载相应的语言文件
如何实现修改语言,可以立马生效的方法,知道的欢迎在评论区留言!