wbauer created this revision. wbauer added a reviewer: Frameworks. wbauer added a project: Frameworks. Restricted Application added a project: Build System. Restricted Application added a subscriber: Build System. wbauer requested review of this revision.
REVISION SUMMARY For locales like de_AT, the current code only looks in share/locale/de_AT/ and share/locale/de-AT/ for translation catalogs, but not in share/locale/de/ where they most likely are. That's because bcp47Name() returns "de-AT" for de_AT (though in the case of de_DE e.g. it does return "de"). This patch instead tries to fall back to the general language by taking the part of the locale name before the first '_'. TEST PLAN Rebuilt kwidgetsaddons with this change. Unset $LANGUAGE (if set) and set $LANG=de_AT.UTF-8 (or set $LANGUAGE=de_AT in the first place) Ran systemsettings5 and enter some module. Without this patch the Help/Default/Reset/Apply buttons are untranslated because the kwidgetsaddons translations are not loaded (according to strace or added debug output they are only looked up in share/locale/de_AT/ and share/locale/de-AT/, they are in share/locale/de/ on my system). With this patch the buttons are translated, the translations are now loaded from share/locale/de/ (after trying share/locale/de_AT/ and failing). Also ran "kdesu xxx". "Password:", "Remember password", "Cancel" were untranslated in the password dialog before, they are translated to german now. Tests that passed before still pass. The new/modified test passes now too, it fails with the original code. REPOSITORY R240 Extra CMake Modules REVISION DETAIL https://phabricator.kde.org/D9793 AFFECTED FILES modules/ECMQmLoader.cpp.in tests/ECMPoQmToolsTest/check.cmake.in To: wbauer, #frameworks Cc: #build_system