@jeanmilost said in Translations - No way to change language in runtime except with a blank string?:
This refreshes all bindings. though (not only texts), which might be suboptimal (using empty string hack will have better performance). But best test this in your app and decide for yourself.
On another side, using the string hack may be more complicated to maintain in a huge project (e.g easy to forget empty strings on several translations), in addition to generate several side effects in my project (e.g I see qsTr("MyCaption") + WTranslation.emptyString in every component on my designer instead of just MyCaption). So if the performance isn't too bad, I will clearly favorise this option over the string hack.
Of course, these are good arguments.
I don't know your project, of course, but in a general case users would not be unhappy even if language switch was slow (1-3 seconds), it should be enough to add a loading popup or something. How it will be in practice, depends of course. Depending on how screens are loaded and general app architecture, there can be thousands of active bindings, or just a few dozen. In an optimistic case reevaluation of them all will take mere miliseconds.