mirror of https://github.com/qt/qtdoc.git
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
// Copyright (C) 2025 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
#include "translator.h"
|
|
#include <QApplication>
|
|
#include <QDir>
|
|
|
|
using namespace Qt::StringLiterals;
|
|
|
|
void Translator::setLanguage(QLocale::Language lang)
|
|
{
|
|
m_trLocale = QLocale(lang);
|
|
}
|
|
|
|
void Translator::install()
|
|
{
|
|
if (m_baseName.isEmpty()) {
|
|
qWarning() << "The basename of the translation is not set. Ignoring.";
|
|
return;
|
|
}
|
|
if (!m_translator.isEmpty())
|
|
qApp->removeTranslator(&m_translator);
|
|
|
|
if (m_translator.load(m_trLocale, m_baseName, "_"_L1, ":/i18n/"_L1)
|
|
&& qApp->installTranslator(&m_translator)) {
|
|
qInfo() << "Loaded translation" << m_translator.filePath();
|
|
} else {
|
|
if (m_trLocale.language() != QLocale::English) {
|
|
qWarning() << "Failed to load translation" << m_baseName <<
|
|
"for locale" << m_trLocale.name() << ". Falling back to English translation";
|
|
setLanguage(QLocale::English);
|
|
}
|
|
}
|
|
}
|
|
|
|
Translator::~Translator()
|
|
{
|
|
qApp->removeTranslator(&m_translator);
|
|
}
|