Ответ 1
Ваш пример работает для меня, если я помещу файл .qm в "правильное" место. (См. Ниже.) Убедитесь, что вы выполняете все действия:
- Запустите
lupdate
, чтобы создать файл .ts. - Сделайте свой перевод в Linguist и сохраните файл .ts.
- Запустите
lrelease
, чтобы скомпилировать файл .ts в файл .qm. - Скопируйте файл .qm в нужное место.
Я предполагаю, что №4 идет плохо. В документации для QTranslator::load
указано:
Если каталог не указан, каталог приложения используется исполняемый файл (т.е. как applicationDirPath()).
Однако мне пришлось поместить файл .qm в папку выше исполняемый файл, чтобы он работал как есть. Если я не ошибаюсь в документах, это ошибка Qt, но простая в использовании. Если я явно указал каталог как app.applicationDirPath
, он работал в исполняемой папке. Вы также можете указать отдельный каталог. Например:
translator.load("app_zh_CN.qm");
работает с:
[MyApp]
app_zh_CN.qm
[debug]
MyApp.exe
translator.load("app_zh_CN.qm", app.applicationDirPath());
работает с:
[MyApp]
[debug]
app_zh_CN.qm
MyApp.exe