首页 > 解决方案 > 在脚本中有一个带有 qsTr 结果的变量,或者在 QML 中多次调用 qsTr

问题描述

这似乎是一个愚蠢的问题,但我有一个函数,我有一个 for 循环并且我qsTr多次调用函数,比如这个:

function example() {
    var groups = []
    for (var g=0; g<io_data.length; g++) {
        groups.push( { "label": qsTr("I/O Group"),
                        "value": String(g+1),
                        "headers": [
                                    qsTr("Entry"),
                                    qsTr("Panel"),
                                    qsTr("Loop"),
                                    qsTr("Device")
                                ]
                     } )
    }
}

当然根据文档是一个获取对应翻译的函数,所以如果我有一个太大的for循环,我想在这种情况下为每个翻译qsTr都有变量会更好,如下所示:qsTr

var ioGroupLabel = qsTr("I/O Group")

你们有什么感想?

标签: qtqmltranslation

解决方案


根据官方文档

标记字符串的最常用方法是使用 qsTr() 函数。例如:

Text {
    id: txt1;
    text: qsTr("Back");
}

此代码使“返回”成为翻译文件中的关键条目。在运行时,翻译系统查找关键字“Back”,然后获取当前系统语言环境的相应翻译值。结果返回到 text 属性,用户界面将显示当前语言环境的“Back”的适当翻译。


在您的情况下,将创建 5 个关键条目:“I/O 组”、“条目”、“面板”、“循环”、“设备”。无论您在源代码中执行了多少 for 循环。


一般而言,如果您知道可以减少特定函数(例如qsTr)的调用量而无需太多开销,那就去做吧。


UPD:关于性能测量,你可以参考这个项目

这张图片将向您展示先前声明而不是调用qsTr(run with testCount=9999999) 的效率。 在此处输入图像描述


推荐阅读