Как перевести свойство ListElement с помощью Ubuntu SDK
У меня запущено первое приложение Ubuntu Touch QML, и я хочу его перевести. Всякий раз, когда я использую строку пользовательского интерфейса в файлах qml, я старался использовать i18n.tr("мой текст").
Теперь мне нужно сгенерировать файлы pot, po и mo. Я нашел этот вопрос и соответствующий ответ, даже если я не уверен, что он актуален (например, снимок экрана, сделанный zeokila, не соответствует тому, что я вижу в моей версии QtCreator...?).
Может быть, существует всеобъемлющее руководство?
Так что мой вопрос конкретно такой:
Каким образом строки в свойствах ListElement могут быть учтены xgettext при создании файла банка?
Я не могу использовать i18n.tr здесь, так как это приводит к ошибке "ListElement: невозможно использовать скрипт для значения свойства".
Используя обычные Qt qsTr() и lupdate, вы можете использовать QT_TR_NOOP(), чтобы сделать эти строки видимыми для lupdate.
Как это сделать с помощью xgettext?
1 ответ
Единственный обходной путь для ошибки "ListElement: Невозможно использовать скрипт для значения свойства", о которой я знаю, - это полагаться на свойство dynamicRoles:
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")
}
}
Создание ListElement таким способом позволит вам вызвать i18n.tr()
а также xgettext
правильно добавляет его в файл банка:
# 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 <LL@li.org>\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 ""