McuSupport: Make plugin UI translatable

After refactoring, the package labels are sourced at run-time from json
kit files. Added a QMap containing all the known labels used to map
labels to their translation, McuPackage::packageLabelTranslations.

Task-number: QTCREATORBUG-27177
Change-Id: Ibd530a0f9c5dbbdf8c7d5eafa53785fb713c9d0a
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Dawid Śliwa <dawid.sliwa@qt.io>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Sivert Krøvel
2022-10-06 13:08:00 +02:00
parent 894f1b81c8
commit 907c36217d
4 changed files with 51 additions and 6 deletions

View File

@@ -4,6 +4,7 @@
#include "mcupackage.h"
#include "mcusupportversiondetection.h"
#include "settingshandler.h"
#include "mcusupporttr.h"
#include <baremetal/baremetalconstants.h>
#include <coreplugin/icore.h>
@@ -175,7 +176,7 @@ void McuPackage::updateStatusUi()
QString McuPackage::statusText() const
{
const QString displayPackagePath = m_path.toUserOutput();
const QString displayVersions = m_versions.join(" or ");
const QString displayVersions = m_versions.join(tr(" or "));
const QString outDetectionPath = m_detectionPath.toUserOutput();
const QString displayRequiredPath = m_versions.empty() ? outDetectionPath
: QString("%1 %2").arg(outDetectionPath,
@@ -266,6 +267,43 @@ QWidget *McuPackage::widget()
return widget;
}
const QMap<QString, QString> McuPackage::packageLabelTranslations {
//Board SDKs
{"Board SDK for MIMXRT1050-EVK", Tr::tr("Board SDK for MIMXRT1050-EVK")},
{"Board SDK MIMXRT1060-EVK", Tr::tr("Board SDK MIMXRT1060-EVK")},
{"Board SDK for MIMXRT1060-EVK", Tr::tr("Board SDK for MIMXRT1060-EVK")},
{"Board SDK for MIMXRT1064-EVK", Tr::tr("Board SDK for MIMXRT1064-EVK")},
{"Board SDK for MIMXRT1170-EVK", Tr::tr("Board SDK for MIMXRT1170-EVK")},
{"Board SDK for STM32F469I-Discovery", Tr::tr("Board SDK for STM32F469I-Discovery")},
{"Board SDK for STM32F769I-Discovery", Tr::tr("Board SDK for STM32F769I-Discovery")},
{"Board SDK for STM32H750B-Discovery", Tr::tr("Board SDK for STM32H750B-Discovery")},
{"Board SDK", Tr::tr("Board SDK")},
{"Flexible Software Package for Renesas RA MCU Family", Tr::tr("Flexible Software Package for Renesas RA MCU Family")},
{"Graphics Driver for Traveo II Cluster Series", Tr::tr("Graphics Driver for Traveo II Cluster Series")},
{"Renesas Graphics Library", Tr::tr("Renesas Graphics Library")},
//Flashing tools
{"Cypress Auto Flash Utility", Tr::tr("Cypress Auto Flash Utility")},
{"MCUXpresso IDE", Tr::tr("MCUXpresso IDE")},
{"Path to SEGGER J-Link", Tr::tr("Path to SEGGER J-Link")},
{"Path to Renesas Flash Programmer", Tr::tr("Path to Renesas Flash Programmer")},
{"STM32CubeProgrammer", Tr::tr("STM32CubeProgrammer")},
//Compilers/Toolchains
{"Green Hills Compiler for ARM", Tr::tr("Green Hills Compiler for ARM")},
{"IAR ARM Compiler", Tr::tr("IAR ARM Compiler")},
{"Green Hills Compiler", Tr::tr("Green Hills Compiler")},
{"GNU Arm Embedded Toolchain", Tr::tr("GNU Arm Embedded Toolchain")},
{"GNU Toolchain", Tr::tr("GNU Toolchain")},
{"MSVC Toolchain", Tr::tr("MSVC Toolchain")},
//FreeRTOS
{"FreeRTOS SDK for MIMXRT1050-EVK", Tr::tr("FreeRTOS SDK for MIMXRT1050-EVK")},
{"FreeRTOS SDK for MIMXRT1064-EVK", Tr::tr("FreeRTOS SDK for MIMXRT1064-EVK")},
{"FreeRTOS SDK for MIMXRT1170-EVK", Tr::tr("FreeRTOS SDK for MIMXRT1170-EVK")},
{"FreeRTOS SDK for EK-RA6M3G", Tr::tr("FreeRTOS SDK for EK-RA6M3G")},
{"FreeRTOS SDK for STM32F769I-Discovery", Tr::tr("FreeRTOS SDK for STM32F769I-Discovery")},
//Other
{"Path to project for Renesas e2 Studio", Tr::tr("Path to project for Renesas e2 Studio")}
};
McuToolChainPackage::McuToolChainPackage(const SettingsHandler::Ptr &settingsHandler,
const QString &label,
const FilePath &defaultPath,

View File

@@ -45,6 +45,8 @@ public:
~McuPackage() override = default;
static const QMap<QString, QString> packageLabelTranslations;
QString label() const override;
QString cmakeVariableName() const override;
QString environmentVariableName() const override;

View File

@@ -225,8 +225,8 @@ void McuSupportOptionsWidget::updateStatus()
: tr("A kit for the selected target can be created."));
} else {
m_kitCreationInfoLabel->setType(Utils::InfoLabel::NotOk);
m_kitCreationInfoLabel->setText("Provide the package paths in order to create a kit "
"for your target.");
m_kitCreationInfoLabel->setText(tr("Provide the package paths in order to create a kit "
"for your target."));
}
}
@@ -238,8 +238,8 @@ void McuSupportOptionsWidget::updateStatus()
m_statusInfoLabel->setVisible(!cMakeAvailable);
if (m_statusInfoLabel->isVisible()) {
m_statusInfoLabel->setType(Utils::InfoLabel::NotOk);
m_statusInfoLabel->setText("No CMake tool was detected. Add a CMake tool in the "
"<a href=\"cmake\">CMake options</a> and press Apply.");
m_statusInfoLabel->setText(tr("No CMake tool was detected. Add a CMake tool in the "
"<a href=\"cmake\">CMake options</a> and press Apply."));
}
}
}

View File

@@ -640,7 +640,12 @@ static PackageDescription parsePackage(const QJsonObject &cmakeEntry)
else
defaultPathString = cmakeEntry["defaultValue"].toString();
return {cmakeEntry["label"].toString(),
QString label = cmakeEntry["label"].toString();
//Apply translations
label = McuPackage::packageLabelTranslations.value(label, label);
return {label,
cmakeEntry["envVar"].toString(),
cmakeEntry["cmakeVar"].toString(),
cmakeEntry["description"].toString(),