I’m working on a Qt application that used to be a KDE application. In the old days, I just had to use some syntax like:
That ran my_app in German, and only my_app. It might not have been KDELANG, but it was some environment variable like that.
I’ve spent a ridiculous amount of time trying to coax this answer out of Google, and I give up. There must be some way to run a Qt (4.5 if that matters) application in some other language without switching over my entire locale to get there.
I tried it with the KDE game Kolf and
(export LANG=de_DE.UTF-8; kolf) (export LANG=en_US.UTF-8; kolf)
did the trick for me to switch it into German or English.
I verified it with the QT application qtparted
(export LANG=de_DE.UTF-8; qtparted)
also comes up in German on my English desktop. Obviously I had to install the German language files to get the translated app working.
Just like any other Linux application, Qt applications follow a rather convoluted way how the application message locale is selected: environment variable
LANGUAGE is given preference over
So any one of the following commands works to change the application’s locale for messages, as returned by
LANGUAGE=de ./my_app LANGUAGE= LC_ALL=de ./my_app LANGUAGE= LC_ALL= LC_MESSAGES=de ./my_app LANGUAGE= LC_ALL= LC_MESSAGES= LANG=de ./my_app
I tested this with Qt 5.12 under Lubuntu 19.10 (means, using the LXQt desktop).
It is entirely up to the Qt application how to adapt to the application locale as returned by
QLocale::system(). It may not evaluate
QLocale::system()at all, or fail to find its translation files etc..
You can also give the above commands in the form
env LANGUAGE=de ./application. The
envcommand has some more options to control which environment its child process will see.
The locale values specified in the environment variables (here
de) do not have to correspond to any locale that is installed system-wide and listed in
When specifying only a language (like
de), Qt will automatically expand it with a default country and return that in
QLocale::system().name(), for example
When specifying a wrong value (such as
xy), Qt will return the default
OK, it’s a long story, but it turns out the translations are, in fact, busted, and that’s the whole underlying problem here. The obvious thing I tried first works fine. Since this isn’t KDE, I just used plain:
Now that I’ve fixed the bug in the debugging code (oh, the irony) I can plainly see that the translation files (which do exist) aren’t getting loaded. Ah. Alrighty then. Carry on. Nothing to see here.
If you are using plasma desktop, install language package from under System Setting -> locale
and run app as follow :
fr represents french, you can choose language of your interest.