如何使翻译 qml
Posted
技术标签:
【中文标题】如何使翻译 qml【英文标题】:How to make translations qml 【发布时间】:2014-02-20 10:19:27 【问题描述】:我想在我的工具栏上进行翻译。工具栏是一个列表模型:
import QtQuick 1.1
ListModel
id:tBar
ListElement
buttonText: QT_TR_NOOP("Cars In Speed Function")
bottomText: ""
event: "carsInSpdFn"
buttonLevel: "0"
buttonBurst: false
icon: "qrc:/icons/histogram_128x128_w.png"
color: "#369c3b"
active: true
permissionLevel: 0
ListElement
buttonText: QT_TR_NOOP("Clear all logs")
bottomText: ""
event: "cleraAllLogs"
buttonLevel: "0"
buttonBurst: false
icon: "qrc:/icons/trash_128x128_w.png"
color: "steelblue"
active: true
permissionLevel: 3
该列表在文件中调用到属性变量值。 主文件:
/..
DynamicApp
id: statistics
objectName: "Statistics"
toolbarModel: ToolbarModel
title: qsTr("Statistics management")
icon: "qrc:/icons/statistics_128x128_w.png"
../
DynamicApp 是定义应用程序窗口的 qml 文件。定义了toolbarModel,它是“属性变体”。 动态应用:
/..
Rectangle
id: app
width: main.width
height: main.height
color: layout_id.bgColor
opacity: 0
property variant parameter;
property bool useToolbar: true
property bool useTopbar: true
property bool activeApp: false
property variant toolbarModel
property string title: ""
property string icon: ""
../
我知道如何通过 qsTr 或 qsTranslate 翻译模型列表,但我不知道如何将其转换为属性变体,因为它调用了所有文件工具栏模型。 您能解释一下如何在我的应用中翻译此列表吗?
【问题讨论】:
【参考方案1】:对于翻译,您需要将其添加到您的 APP.pro 中。你需要做一个 hack 来添加 QML 翻译,这样 lupdate 才能真正到达它们。例如,在我们的项目中,我们有:
# English
TRANSLATIONS += settings/language/set_language/setting_en.ts
# Spanish
TRANSLATIONS += settings/language/set_language/setting_es.ts
之后,为了在 lupdate 中包含 qml 文件,我们做了一个在互联网上找到的技巧
evil_hack_hahaha_add_what_ever_you_want_etc
SOURCES += path_to_qml/*.qml \
path_to_qml2/*.qml \
...
之后,在控制台中运行
lupdate NAMEOFPROFILE.pro
现在您将生成 .ts 文件,包括 qml 文件。
完成翻译工作后,记得要
lrelease NAMEOFPROFILE.pro
祝你好运!
【讨论】:
以上是关于如何使翻译 qml的主要内容,如果未能解决你的问题,请参考以下文章
Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程翻译QSetting )建议收藏
Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程翻译QSetting )建议收藏