How to use tr () for ui widgets
-
wrote on 21 Sept 2012, 12:05 last edited by
Hi all,
I want a multilingual application, in which language of the app changes as we select respective option from the drop down menu.
Noticeable thing here is that is I have used ui file in my code instead of creating it in the code, hence confused how to use tr()??
Thought of including in ui_Filename.h file...but I have to do it again and again when i remake the code, which I don't want. -
wrote on 21 Sept 2012, 12:47 last edited by
In the Designer, you can find and set the property text->"translatable".
-
wrote on 21 Sept 2012, 12:49 last edited by
With this, i don't have to put tr() everywhere like i would do if i have created in source code?
-
wrote on 21 Sept 2012, 13:08 last edited by
Th uic places a method called retranslateUI in the UI class. Just call that method.
-
wrote on 21 Sept 2012, 13:24 last edited by
still will when have to define retranslateui function, I have to use ui widgets and put tr() in it....How it helps??
Please help,
Thanks -
wrote on 21 Sept 2012, 13:32 last edited by
Using tr() is same as checking "translatable". You don't need to use tr() inside Designer - text property.
Just check ui->retranslateUi(mainWindow*) is there or not. ;) I dont think you need to re implement!
-
wrote on 21 Sept 2012, 14:00 last edited by
Note that user-visible strings in properties in Designer/Creator are by default already marked translatable. They will appear in your strings-to-be-translated by default. If you look at the code generated by uic, you will also see that these strings are translatable by default.
-
wrote on 22 Sept 2012, 05:24 last edited by
uic produes ui_*.h files. And If you see, retranslateUi, there, you'll find the strings that are passed to [[doc:QApplication::translate]].
-
wrote on 22 Sept 2012, 05:43 last edited by
Thanks everyone, I can now able to get all my widgets of ui in the translation file.
But still even after loading the translation files. language doesn't changed.....
I am simply doing this in main.cpp after creating Ts and qm files@QTranslator translator;
translator.load("setup_de ");
app.installTranslator(&translator);
@I know there is something wrong ;)...hope you can help.....I am finding Qlinguist very complicated...:(
Thanks...... -
wrote on 22 Sept 2012, 05:48 last edited by
You can "Edit" your post instead of re-posting.
@translator.load("setup_de ");@
is having an extra space at the end?
And do you have @TRANSLATIONS = setup_de.ts@ in your .pro file ?
-
wrote on 22 Sept 2012, 06:30 last edited by
I got this post twice by mistake...I know about the "edit" :)
Want to delete this post..... -
wrote on 22 Sept 2012, 06:33 last edited by
I have included in .ts file in my .pro file, and removed the extra space too...still didn't get language changed!!!
-
wrote on 22 Sept 2012, 06:36 last edited by
Happens! :)
By the way, make sure, your executable can find your qm file.EDIT :
Try giving absolute / relative path of your qm file. Say
@translator.load("../setup_de");@ And whats the result ? -
wrote on 22 Sept 2012, 06:53 last edited by
okay I am here little bit confused...Here I want my ui to change its language from english to say german.
Now, I have created a .ts file and saved each text written in my ui (Forms) with a german translation. Then I created a .qm file.
And in code (main.cpp) simply wrote :
@QTranslator translator;
translator.load("setup_de");
app.installTranslator(&translator);
@All this and done.....what was the use of retranslateUi()
Even though I am not able to make this happen, the other requirements of my code is I need to change same Ui in 5 lnguages each one happening on a click on a lineedit....Anyway this is the later part...I am facing problem in just changing into a single language...:(
What's missing?
-
wrote on 22 Sept 2012, 07:02 last edited by
lets do the basic steps first. At the moment, just dont worry about the retranslateUi.
Assume, your Ui texts are English.
-
in pro file : TRANSLATIONS = setup_de.ts
-
Install translator
@
QTranslator translator;
translator.load("/path/to/setup_de");
app.installTranslator(&translator);
@
3.lupdate *.pro
4.Open *.ts in Linguist. And give translation for each source texts.
5.lrelease *.pro
Now, you run your executable :)
EDIT : Note that path to setup_de is the path to setup_de.qm
-
-
wrote on 22 Sept 2012, 07:15 last edited by
Exactly followed these steps....:(
Tried giving absolute path to .qm file also still nothing....
My code is having many ui forms...I have translated only single screen's ui into german....expecting that after run, that screen only will show in german....
This cant be any reason for my problem?? -
wrote on 22 Sept 2012, 07:30 last edited by
Will check..... :)
-
wrote on 22 Sept 2012, 07:35 last edited by
Result is "True"
:P -
wrote on 22 Sept 2012, 09:24 last edited by
:(
Followed the steps for a new project in which there is just one form and one main.cpp and nothing else ....(just to try changing ui in other language)
It was working fine....But not happening in the code where there are so many Ui forms....what could be the reason?
7/27