在脚本中有一个变量,其结果为 qsTr 或在 QML 中多次调用 qsTr

Having a variable in a script with the result of qsTr or call a lot of times qsTr in QML

这似乎是一个愚蠢的问题,但我有一个函数,其中有一个 for-cycle 并且我多次调用 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")
                                ]
                     } )
    }
}

当然根据文档 qsTr 是一个获得相应翻译的函数,所以如果我有一个太大的 for-cycle 我想在这种情况下有变量会好得多对于每个 qsTr 翻译,像这样:

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

大家怎么看?

根据official documentation

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

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

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


在您的例子中,将创建 5 个关键条目:"I/O Group"、"Entry"、"Panel"、"Loop"、"Device"。无论您在源代码中做了多少 for-cycles。


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


UPD:关于性能衡量,可以参考this project.

这张图片将向您展示先前声明而不是调用 qsTr(运行 和 testCount=9999999)的效率如何。