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:
KDELANG=de ./my_app
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.
To change the language, select Tools > Options > Environment and select a language in the Language field. Select Restart Now to restart Qt Creator and have the change take effect.
Multilanguage support is easy done for android. Create a new values directory for the language with the suffix of the language code. For german: values-de or french: values-fr than copy your string. xml into that and translate each entry.
This Qt 5 platform theme applies the appearance settings of GNOME for Qt applications. It can be installed with the qgnomeplatform-qt5 package or the qgnomeplatform-gitAUR package for the development version.
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 LC_ALL
, LC_ALL
over LC_MESSAGES
, LC_MESSAGES
over LANG
(details).
So any one of the following commands works to change the application's locale for messages, as returned by QLocale::system().name()
:
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
Notes:
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 env
command 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 locale -a
.
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 de_DE
.
When specifying a wrong value (such as xy
), Qt will return the default C
locale from QLocale::system().name()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With