Alright, so I think I've found out why this doesn't work.

When doing the translation inside the TextTr component it loses the context.
The QT_TR_NOOP is in main.qml so "main" is the context in the translation files.
That's why it works when I do qsTr() in main.qml, but no translation is found 
when doing it from inside the component itself (context then becomes "TextTr" 
instead of "main")

This blog entry explains it pretty well 
http://imaginativethinking.ca/how-the-heck-can-i-use-qstr-with-variables/.

Seems like I'll have to switch to the ID based translations 
http://doc.qt.io/qt-5/linguist-id-based-i18n.html to make this approach work.

-Even

-----Original Message-----
From: Kristoffersen, Even (NO14) 
Sent: 24. mai 2016 11:58
To: Kristoffersen, Even (NO14) <[email protected]>
Cc: [email protected]
Subject: RE: [Interest] qsTr in components

Minimal example attached.

If I use the TextTr component "txt" property it does not show any translation 
at all even though txt goes through qsTr and the translation is loaded at 
creation time.
If I use " text: qsTr(x) + translator.refresh" directly from main.qml then it 
works.

You can switch between the modes by changing to the commented out lines 36 and 
73 in main.qml instead of line 35 and 72.

-Even


-----Original Message-----
From: Interest 
[mailto:[email protected]] On 
Behalf Of Kristoffersen, Even (NO14)
Sent: 23. mai 2016 15:24
To: Jason H <[email protected]>
Cc: [email protected]
Subject: Re: [Interest] qsTr in components

Yup,

translator is my C++ object exposed to QML, and refresh is the signal.
Not sure why it's not working, I'll try to create a minimal example and see if 
it's still an issue there.

This is with Qt 5.6 btw.

-Even

-----Original Message-----
From: Jason H [mailto:[email protected]] 
Sent: 23. mai 2016 15:17
To: Jason H <[email protected]>
Cc: Kristoffersen, Even (NO14) <[email protected]>; 
[email protected]
Subject: Re: [Interest] qsTr in components



> Sent: Monday, May 23, 2016 at 9:14 AM
> From: "Jason H" <[email protected]>
> To: "Kristoffersen, Even (NO14)" <[email protected]>
> Cc: "[email protected]" <[email protected]>
> Subject: Re: [Interest] qsTr in components
>
> 
> 
> > Sent: Monday, May 23, 2016 at 8:31 AM
> > From: "Kristoffersen, Even (NO14)" <[email protected]>
> > To: "[email protected]" <[email protected]>
> > Subject: [Interest] qsTr in components
> >
> > Hello all,
> > 
> > I've played around a bit with an approach inspired by 
> > http://wiki.qt.io/How_to_do_dynamic_translation_in_QML .
> > 
> 
> If you are following along, the example a few months ago, it works. I'm using 
> it, and in components too.
> 
> You need to add a C++ object, and expose it to QML.
> 
> it has a proeprty: Q_PROPERTY(QString null READ getNull NOTIFY 
> languageChanged )
> signals:
>       void languageChanged(QString language);
> 
> When you change the language, you emit that signal, that causes the 
> re-evaluation of all string with the langMgr.null added.

EDIT: Not sure why I used C++, it should be possible with QML. I think I used 
C++ so I could start the download of languages before the QML engine started. 
(My langmgr manages the languages, including downloads updates)

_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to