D9793: Fall back to language name for translations lookup if locale name fails
Wolfgang Bauer
noreply at phabricator.kde.org
Thu Jan 11 18:04:50 UTC 2018
wbauer added a comment.
In https://phabricator.kde.org/D9793#189494, @safaalfulaij wrote:
> I went through Qt code, as Qt applications are opened with my language correctly where KF ones (those with QM) don't.
I tested with your ar_BH locale meanwhile, and it is fixed too, i.e. LANGUAGE="ar_BH" didn't work either, and both LANG="ar_BH.UTF-8"/LANGUAGE="" and LANGUAGE="ar_BH" do work now.
> The whole issue is that we have each locale's translations in a separate folder (`ar/LC_MESSAGES`, `en/LC_MESSAGES`, `de/LC_MESSAGES`, etc.)
Why is this an issue?
There's no difference really in loading ar/LC_MESSAGES/xxx.qm and LC_MESSAGES/xxx_ar.qm (or something like that), i.e. you would have the same problem if all translations would be in the same folder.
> Qt uses internally `find_translation` <https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qtranslator.cpp#n631> which goes through a list of guesses to find the correct language, according to the LANGUAGE preferences and the locale itself.
> Maybe we can borrow that code and utilize it, that would be much better.
The only relevant differences I can see is that it replaces all occurences of '-' with '_' (which is necessary only because it gets the languages from QLocale::uiLanguages()), and that it doesn't cut off at the first '_', but creates entries cut off at every one. (i.e. "de_XX_YY" would yield "de_XX_YY", "de_XX" and "de" to try, IIUIC)
I could do something similar, i.e. lookup translations in a while loop and cut off at the right-most '_' if a lookup fails until it succeeds.
The current code does get the locale/language from Qt anyway. (it calls QLocale::system(), which does respect LANG and LANGUAGE )
It probably would also be a good idea to get a list of languages via QLocale::uiLanguages() instead like that find_translation() function does (that would also support things like LANGUAGE="de:ar"). But that's unrelated to this fix IMHO.
REPOSITORY
R240 Extra CMake Modules
REVISION DETAIL
https://phabricator.kde.org/D9793
To: wbauer, #frameworks
Cc: safaalfulaij, #build_system
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-buildsystem/attachments/20180111/8def6f09/attachment.html>
More information about the Kde-buildsystem
mailing list