Qt5 の日本語化の記事はあるようですが、Qt6 CMake を使っての方法が探してもなかったので書いておきます。
プロジェクト作成時、言語を設定してもそのままでは日本語化できません。
手順は以下の通りです。
- 空の TS ファイルを作る
- CMakeLists.txt を更新する
- CMake を用いて単語を抽出する
- QtLinguist で日本語化する
- アプリ側で QM ファイルを読み込む
空のTSファイルを作る
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.1" language="ja_JP"> <context> </context> </TS>
CMakeLists.txt を更新する
find_package(Qt6 REQUIRED COMPONENTS LinguistTools) qt6_add_translations(I18n TS_FILES I18n_ja_JP.ts QM_FILES_OUTPUT_VARIABLE qm_files) install(FILES ${qm_files} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}
CMake を用いて単語を抽出する
cmake --build . --target update_translations
QtLinguist で日本語化する
アプリ側で QM ファイルを読み込む
QTranslator translator; const QStringList uiLanguages = QLocale::system().uiLanguages(); for (const QString &locale : uiLanguages) { const QString baseName = "I18n_" + QLocale(locale).name(); if (translator.load(baseName)) { a.installTranslator(&translator); break; } } QTranslator stdTranslator; for (const QString &locale : uiLanguages) { const QString baseName = "qt_" + QLocale(locale).name(); if (stdTranslator.load(baseName,QLibraryInfo::path(QLibraryInfo::TranslationsPath))) { a.installTranslator(&stdTranslator); break; } }
上記の方法で作成したプロジェクトです。参考まで。
https://github.com/easai/I18n.git