Como traduzir a propriedade ListElement com o Ubuntu SDK

3

Tenho o meu primeiro aplicativo Ubuntu Touch QML em execução e estou disposto a traduzi-lo. Sempre que eu uso uma string de interface do usuário nos arquivos qml, tive o cuidado de usar o i18n.tr ("meu texto").

Então, agora preciso gerar os arquivos pot, po e mo. Eu encontrei esta pergunta e uma resposta relevante, mesmo se eu não tenho certeza se isso está atualizado (por exemplo, a captura de tela tirada por zeokila não corresponde ao que eu vejo na minha versão do QtCreator ...?).

Talvez exista um howto abrangente?

Então, minha pergunta é especificamente esta:

como as strings em propriedades de ListElement podem ser consideradas pelo xgettext ao gerar o arquivo de pot?

Não consigo usar i18n.tr aqui, pois isso resulta em um erro "ListElement: não é possível usar script para valor da propriedade".

Com Qt simples qsTr () e lupdate, você pode usar QT_TR_NOOP () para tornar estas strings visíveis para lupdate.

Como fazer isso com o xgettext?

    
por alci 21.05.2014 / 18:17

1 resposta

4

A única solução alternativa para o erro "ListElement: não é possível usar o script para o valor da propriedade" que eu sei é confiar no 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")
     }

}

Criando o ListElement dessa maneira, você pode chamar i18n.tr() e xgettext o adicionam corretamente ao arquivo do pote:

# 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 ""
    
por Sylvain Pineau 03.06.2014 / 18:27