feat: Add possibility for translation

This commit is contained in:
Petr Mironychev
2025-07-04 00:40:05 +02:00
parent 21814e8809
commit 0bdf77f38d
4 changed files with 1045 additions and 4 deletions

View File

@ -11,9 +11,11 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
find_package(QtCreator REQUIRED COMPONENTS Core)
find_package(Qt6 COMPONENTS Core Gui Quick Widgets Network Test REQUIRED)
find_package(Qt6 COMPONENTS Core Gui Quick Widgets Network Test LinguistTools REQUIRED)
find_package(GTest)
qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES en)
# IDE_VERSION is defined by QtCreator package
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" version_match ${IDE_VERSION})
set(QODEASSIST_QT_CREATOR_VERSION_MAJOR ${CMAKE_MATCH_1})
@ -126,3 +128,9 @@ if (QtCreatorExecutable)
)
set_target_properties(RunQtCreator PROPERTIES FOLDER "qtc_runnable")
endif()
qt_add_translations(TARGETS QodeAssist
TS_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/resources/translations
RESOURCE_PREFIX "/translations"
LUPDATE_OPTIONS -no-obsolete
)

View File

@ -1,3 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_001"></TS>

View File

@ -40,6 +40,7 @@
#include <QMainWindow>
#include <QMenu>
#include <QMessageBox>
#include <QTranslator>
#include "ConfigurationManager.hpp"
#include "QodeAssistClient.hpp"
@ -89,6 +90,23 @@ public:
delete m_navigationPanel;
}
void loadTranslations()
{
const QString langId = Core::ICore::userInterfaceLanguage();
QTranslator *translator = new QTranslator(qApp);
QString resourcePath = QString(":/translations/QodeAssist_%1.qm").arg(langId);
bool success = translator->load(resourcePath);
if (success) {
qApp->installTranslator(translator);
qDebug() << "Loaded translation from resources:" << resourcePath;
} else {
delete translator;
qDebug() << "No translation found for language:" << langId;
}
}
void initialize() final
{
#if QODEASSIST_QT_CREATOR_VERSION >= QT_VERSION_CHECK(15, 0, 83)
@ -97,6 +115,7 @@ public:
Constants::QODE_ASSIST_GENERAL_OPTIONS_DISPLAY_CATEGORY,
":/resources/images/qoderassist-icon.png");
#endif
loadTranslations();
Providers::registerProviders();
Templates::registerTemplates();

File diff suppressed because it is too large Load Diff