如何使用 Ubuntu SDK 转换 ListElement 属性

如何使用 Ubuntu SDK 转换 ListElement 属性

我已经运行了我的第一个 Ubuntu Touch QML 应用程序,我愿意翻译它。每当我在 qml 文件中使用 UI 字符串时,我都会小心使用 i18n.tr("my text")。

所以现在我需要生成 pot、po 和 mo 文件。我发现了这个问题以及相关的答案,即使我不确定这是否是最新的(例如,zeokila 拍摄的屏幕截图与我在 QtCreator 版本中看到的不符……?)。

也许存在一个全面的操作指南?

所以我的问题具体是这样的:

在生成 pot 文件时,xgettext 如何考虑 ListElement 属性中的字符串?

我不能在这里使用 i18n.tr,因为这会导致“ListElement:不能使用脚本作为属性值”错误。

使用普通的 Qt qsTr() 和 lupdate,您可以使用 QT_TR_NOOP() 使这些字符串对 lupdate 可见。

如何使用 xgettext 来做到这一点?

答案1

我知道的“ListElement:无法使用脚本作为属性值”错误的唯一解决方法是依靠动态角色财产:

import QtQuick 2.0
import Ubuntu.Components 0.1


Rectangle {
    width: 200 // this is a property
    height: 200

    Item{
        ListModel {
            id: myListModel;
            dynamicRoles: true
        }
        Component.onCompleted: {
            myListModel.append({ "name": i18n.tr("Hello") } )
            foo.text = myListModel.get(0).name;
        }
    }

    Item {
        Text {
            id: foo
            }
    }

     Button {
         anchors.centerIn: parent
         text: i18n.tr("Press me")
     }

}

创建列表元素这样您就可以调用i18n.tr()xgettext正确将其添加到 pot 文件中:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-03 18:19+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: foo.qml:15
msgid "Hello"
msgstr ""

#: foo.qml:28
msgid "Press me"
msgstr ""

相关内容