У меня есть настольное приложение на базе Qt для Windows / Mac, которое локализовано для английского и немецкого языков.Приложение написано так, чтобы использовать системный язык для определения его языка запуска, используя API Qt QLocale:
QLocale sysLocale = QLocale::system();
QString translatorFileName = sysLocale.name(); // en_US, de_DE, etc
Это работало, как и ожидалось, в MacOS High Sierra (10.13.2).В Mojave (10.14.1) этот вызов теперь всегда возвращает английский для языкового компонента независимо от языка системы, т.е. если я изменю язык системы и регион на немецкий / Германия, я ожидаю, что de_DE
будет возвращено в качестве локалиимя, но Qt возвращает en_DE
.Я обнаружил, что изменение значения ключа CFBundleDevelopmentRegion
в файле Info.plist
приложения в некоторых ситуациях переопределяет языковой стандарт системы, но в High Sierra и Mojave он также ведет себя по-разному
Я открыл проблема на форумах с сообщениями об ошибках Qt, которая содержит более подробные сведения о том, связана ли эта проблема с Qt или с изменением API в Mojave.