From 705dcb17b8adad1b6fd78a02ccb1d0b1d0ca3ddd Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 13 Dec 2024 11:14:28 +0100 Subject: [PATCH] Disambiguate translations for "None" Translations can be different depending on context. Give each usage a disambiguation text. Task-number: QTCREATORBUG-31978 Change-Id: I44ac524d7448787360e825fad1d430ded3f07659 Reviewed-by: Christian Stenger --- src/libs/extensionsystem/plugindetailsview.cpp | 3 ++- src/plugins/android/androiddevice.cpp | 2 +- src/plugins/baremetal/debugserverproviderchooser.cpp | 2 +- src/plugins/cmakeprojectmanager/cmakesettingspage.cpp | 2 +- src/plugins/coreplugin/find/ifindfilter.cpp | 2 +- .../cppeditor/quickfixes/insertfunctiondefinition.cpp | 5 ++++- src/plugins/debugger/debuggerkitaspect.cpp | 2 +- src/plugins/debugger/moduleshandler.cpp | 3 ++- src/plugins/ios/iosbuildconfiguration.cpp | 2 +- src/plugins/nim/project/nimcompilerbuildstep.cpp | 2 +- src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp | 7 ++++++- src/plugins/projectexplorer/projectexplorersettings.cpp | 3 ++- src/plugins/projectexplorer/toolchainkitaspect.cpp | 6 +++--- src/plugins/projectexplorer/toolchainmanager.cpp | 6 +++--- src/plugins/projectexplorer/toolchainoptionspage.cpp | 2 +- src/plugins/python/pythonsettings.cpp | 2 +- src/plugins/qmlprofiler/quick3dframemodel.cpp | 2 +- src/plugins/qmlprofiler/quick3dframeview.cpp | 4 ++-- src/plugins/qtsupport/qtkitaspect.cpp | 3 ++- src/plugins/qtsupport/qtoptionspage.cpp | 6 +++--- src/plugins/texteditor/behaviorsettingswidget.cpp | 2 +- src/plugins/texteditor/completionsettingspage.cpp | 2 +- src/plugins/valgrind/memchecktool.cpp | 2 +- 23 files changed, 42 insertions(+), 30 deletions(-) diff --git a/src/libs/extensionsystem/plugindetailsview.cpp b/src/libs/extensionsystem/plugindetailsview.cpp index eba1058dcbe..903e7410ac1 100644 --- a/src/libs/extensionsystem/plugindetailsview.cpp +++ b/src/libs/extensionsystem/plugindetailsview.cpp @@ -155,7 +155,8 @@ void PluginDetailsView::update(PluginSpec *spec) d->compatVersion->setText(spec->compatVersion()); d->vendor->setText(spec->vendor()); d->vendorId->setText(spec->vendorId()); - d->component->setText(spec->category().isEmpty() ? Tr::tr("None") : spec->category()); + d->component->setText( + spec->category().isEmpty() ? Tr::tr("None", "No category") : spec->category()); const auto toHtmlLink = [](const QString &url) { return QString::fromLatin1("%1").arg(url); }; diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index d29f149f5b7..e0d731420c3 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -574,7 +574,7 @@ QString AndroidDevice::deviceTypeName() const QString AndroidDevice::skinName() const { const QString skin = avdSettings()->value("skin.name").toString(); - return skin.isEmpty() ? Tr::tr("None") : skin; + return skin.isEmpty() ? Tr::tr("None", "No skin") : skin; } QString AndroidDevice::androidTargetName() const diff --git a/src/plugins/baremetal/debugserverproviderchooser.cpp b/src/plugins/baremetal/debugserverproviderchooser.cpp index ac05c88e0d4..dcf148cbbd4 100644 --- a/src/plugins/baremetal/debugserverproviderchooser.cpp +++ b/src/plugins/baremetal/debugserverproviderchooser.cpp @@ -82,7 +82,7 @@ void DebugServerProviderChooser::populate() { const QSignalBlocker blocker(m_chooser); m_chooser->clear(); - m_chooser->addItem(Tr::tr("None")); + m_chooser->addItem(Tr::tr("None", "No debug server provider")); for (const IDebugServerProvider *p : DebugServerProviderManager::providers()) { if (!providerMatches(p)) diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 5dc29c3df8a..36ee8406c00 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -139,7 +139,7 @@ QVariant CMakeToolTreeItem::data(int column, int role) const if (!m_id.isValid()) { if (role == Qt::DisplayRole && column == 0) - return Tr::tr("None"); + return Tr::tr("None", "No CMake tool"); if (role == ProjectExplorer::KitAspect::IsNoneRole) return true; return {}; diff --git a/src/plugins/coreplugin/find/ifindfilter.cpp b/src/plugins/coreplugin/find/ifindfilter.cpp index eca6c4f2a91..d7c251f71bb 100644 --- a/src/plugins/coreplugin/find/ifindfilter.cpp +++ b/src/plugins/coreplugin/find/ifindfilter.cpp @@ -371,7 +371,7 @@ QString IFindFilter::descriptionForFindFlags(FindFlags flags) flagStrings.append(Tr::tr("Preserve case")); QString description = Tr::tr("Flags: %1"); if (flagStrings.isEmpty()) - description = description.arg(Tr::tr("None")); + description = description.arg(Tr::tr("None", "No find flags")); else description = description.arg(flagStrings.join(Tr::tr(", "))); return description; diff --git a/src/plugins/cppeditor/quickfixes/insertfunctiondefinition.cpp b/src/plugins/cppeditor/quickfixes/insertfunctiondefinition.cpp index 3d95fc21f8e..204014dfebf 100644 --- a/src/plugins/cppeditor/quickfixes/insertfunctiondefinition.cpp +++ b/src/plugins/cppeditor/quickfixes/insertfunctiondefinition.cpp @@ -238,7 +238,10 @@ public: setWindowTitle(Tr::tr("Member Function Implementations")); const auto defaultImplTargetComboBox = new QComboBox; - QStringList implTargetStrings{Tr::tr("None"), Tr::tr("Inline"), Tr::tr("Outside Class")}; + QStringList implTargetStrings{ + Tr::tr("None", "No default implementation location"), + Tr::tr("Inline"), + Tr::tr("Outside Class")}; if (!implFile.isEmpty()) implTargetStrings.append(implFile.fileName()); defaultImplTargetComboBox->insertItems(0, implTargetStrings); diff --git a/src/plugins/debugger/debuggerkitaspect.cpp b/src/plugins/debugger/debuggerkitaspect.cpp index 6f578828434..895dc5b6fd5 100644 --- a/src/plugins/debugger/debuggerkitaspect.cpp +++ b/src/plugins/debugger/debuggerkitaspect.cpp @@ -60,7 +60,7 @@ public: rootItem()->appendChild(new DebuggerTreeItem(item, false)); } DebuggerItem noneItem; - noneItem.setUnexpandedDisplayName(Tr::tr("None")); + noneItem.setUnexpandedDisplayName(Tr::tr("None", "No debugger")); rootItem()->appendChild(new DebuggerTreeItem(noneItem, false)); } diff --git a/src/plugins/debugger/moduleshandler.cpp b/src/plugins/debugger/moduleshandler.cpp index a6b10b59ffe..bf56c71da38 100644 --- a/src/plugins/debugger/moduleshandler.cpp +++ b/src/plugins/debugger/moduleshandler.cpp @@ -70,7 +70,8 @@ QVariant ModuleItem::data(int column, int role) const if (role == Qt::DisplayRole) switch (module.elfData.symbolsType) { case UnknownSymbols: return Tr::tr("Unknown"); - case NoSymbols: return Tr::tr("None"); + case NoSymbols: + return Tr::tr("None", "Symbols Type (No debug information found)"); case PlainSymbols: return Tr::tr("Plain"); case FastSymbols: return Tr::tr("Fast"); case LinkedSymbols: return Tr::tr("debuglnk"); diff --git a/src/plugins/ios/iosbuildconfiguration.cpp b/src/plugins/ios/iosbuildconfiguration.cpp index bbca70a263e..eb3350b3510 100644 --- a/src/plugins/ios/iosbuildconfiguration.cpp +++ b/src/plugins/ios/iosbuildconfiguration.cpp @@ -271,7 +271,7 @@ void IosSigningSettingsWidget::populateProvisioningProfiles() m_signEntityCombo->setItemData(index, profile->details(), Qt::ToolTipRole); } } else { - m_signEntityCombo->addItem(Tr::tr("None")); + m_signEntityCombo->addItem(Tr::tr("None", "No signing identity")); } } // Maintain previous selection. diff --git a/src/plugins/nim/project/nimcompilerbuildstep.cpp b/src/plugins/nim/project/nimcompilerbuildstep.cpp index 8c2dfa67c40..ce820926bed 100644 --- a/src/plugins/nim/project/nimcompilerbuildstep.cpp +++ b/src/plugins/nim/project/nimcompilerbuildstep.cpp @@ -64,7 +64,7 @@ QWidget *NimCompilerBuildStep::createConfigWidget() commandTextEdit->setMinimumSize(QSize(0, 0)); auto defaultArgumentsComboBox = new QComboBox(widget); - defaultArgumentsComboBox->addItem(Tr::tr("None")); + defaultArgumentsComboBox->addItem(Tr::tr("None", "No default arguments")); defaultArgumentsComboBox->addItem(Tr::tr("Debug")); defaultArgumentsComboBox->addItem(Tr::tr("Release")); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp index 22768efca2f..18d90bca77c 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp @@ -139,7 +139,12 @@ void JsonProjectPage::initUiForSubProject() const QList currentProjects = ProjectManager::projects(); QList projectInfos; - projectInfos.append({Tr::tr("None"), Core::DocumentManager::projectsDirectory(), {}, {}, {}}); + projectInfos.append( + {Tr::tr("None", "Add to project: None"), + Core::DocumentManager::projectsDirectory(), + {}, + {}, + {}}); int index = -1; int counter = 1; // we've added None already for (const Project *proj : currentProjects) { diff --git a/src/plugins/projectexplorer/projectexplorersettings.cpp b/src/plugins/projectexplorer/projectexplorersettings.cpp index f940b8d1a5f..de18ec30002 100644 --- a/src/plugins/projectexplorer/projectexplorersettings.cpp +++ b/src/plugins/projectexplorer/projectexplorersettings.cpp @@ -346,7 +346,8 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget() const QSizePolicy cbSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); m_buildBeforeDeployComboBox->setSizePolicy(cbSizePolicy); m_stopBeforeBuildComboBox = new QComboBox; - m_stopBeforeBuildComboBox->addItem(Tr::tr("None"), int(StopBeforeBuild::None)); + m_stopBeforeBuildComboBox->addItem( + Tr::tr("None", "Stop applications before building: None"), int(StopBeforeBuild::None)); m_stopBeforeBuildComboBox->addItem(Tr::tr("All"), int(StopBeforeBuild::All)); m_stopBeforeBuildComboBox->addItem(Tr::tr("Same Project"), int(StopBeforeBuild::SameProject)); m_stopBeforeBuildComboBox->addItem(Tr::tr("Same Build Directory"), diff --git a/src/plugins/projectexplorer/toolchainkitaspect.cpp b/src/plugins/projectexplorer/toolchainkitaspect.cpp index d68d3b24ae8..05ce6d9b56e 100644 --- a/src/plugins/projectexplorer/toolchainkitaspect.cpp +++ b/src/plugins/projectexplorer/toolchainkitaspect.cpp @@ -338,7 +338,7 @@ QString ToolchainKitAspectFactory::displayNamePostfix(const Kit *k) const KitAspectFactory::ItemList ToolchainKitAspectFactory::toUserOutput(const Kit *k) const { Toolchain *tc = ToolchainKitAspect::cxxToolchain(k); - return {{Tr::tr("Compiler"), tc ? tc->displayName() : Tr::tr("None")}}; + return {{Tr::tr("Compiler"), tc ? tc->displayName() : Tr::tr("None", "No compiler")}}; } void ToolchainKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const @@ -356,7 +356,7 @@ void ToolchainKitAspectFactory::addToMacroExpander(Kit *kit, MacroExpander *expa expander->registerVariable("Compiler:Name", Tr::tr("Compiler"), [kit] { const Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit); - return tc ? tc->displayName() : Tr::tr("None"); + return tc ? tc->displayName() : Tr::tr("None", "No compiler"); }); expander->registerVariable("Compiler:Executable", Tr::tr("Path to the compiler executable"), @@ -369,7 +369,7 @@ void ToolchainKitAspectFactory::addToMacroExpander(Kit *kit, MacroExpander *expa expander->registerPrefix("Compiler:Name", Tr::tr("Compiler for different languages"), [kit](const QString &ls) { const Toolchain *tc = ToolchainKitAspect::toolchain(kit, findLanguage(ls)); - return tc ? tc->displayName() : Tr::tr("None"); + return tc ? tc->displayName() : Tr::tr("None", "No compiler"); }); expander->registerPrefix("Compiler:Executable", Tr::tr("Compiler executable for different languages"), [kit](const QString &ls) { diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp index c7d7ce786cf..e958049d86b 100644 --- a/src/plugins/projectexplorer/toolchainmanager.cpp +++ b/src/plugins/projectexplorer/toolchainmanager.cpp @@ -265,9 +265,9 @@ void ToolchainManager::registerLanguageCategory(const LanguageCategory &language QString ToolchainManager::displayNameOfLanguageId(const Utils::Id &id) { - QTC_ASSERT(id.isValid(), return Tr::tr("None")); + QTC_ASSERT(id.isValid(), return Tr::tr("None", "No compiler language")); QString display = d->m_displayNameForLanguage.value(id); - QTC_ASSERT(!display.isEmpty(), return Tr::tr("None")); + QTC_ASSERT(!display.isEmpty(), return Tr::tr("None", "No compiler language")); return display; } @@ -276,7 +276,7 @@ QString ToolchainManager::displayNameOfLanguageCategory(const LanguageCategory & if (int(category.size()) == 1) return displayNameOfLanguageId(*category.begin()); QString name = d->m_displayNameForCategory.value(category); - QTC_ASSERT(!name.isEmpty(), return Tr::tr("None")); + QTC_ASSERT(!name.isEmpty(), return Tr::tr("None", "No compiler category")); return name; } diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp index c3f09d1fecd..da6ee179327 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.cpp +++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp @@ -52,7 +52,7 @@ QVariant ToolchainTreeItem::data(int column, int role) const switch (role) { case Qt::DisplayRole: if (column == 0) - return bundle ? bundle->displayName() : Tr::tr("None"); + return bundle ? bundle->displayName() : Tr::tr("None", "Toolchain bundle display name"); return bundle->typeDisplayName(); case Qt::ToolTipRole: { if (!bundle) diff --git a/src/plugins/python/pythonsettings.cpp b/src/plugins/python/pythonsettings.cpp index 20eae05906b..e9fbff36b10 100644 --- a/src/plugins/python/pythonsettings.cpp +++ b/src/plugins/python/pythonsettings.cpp @@ -1172,7 +1172,7 @@ Utils::ListModel *createInterpreterModel(QObject * model->setDataAccessor([](const Interpreter &interpreter, int column, int role) -> QVariant { if (interpreter.id == "none") { if (role == Qt::DisplayRole) - return Tr::tr("None"); + return Tr::tr("None", "No Python interpreter"); if (role == KitAspect::IsNoneRole) return true; return {}; diff --git a/src/plugins/qmlprofiler/quick3dframemodel.cpp b/src/plugins/qmlprofiler/quick3dframemodel.cpp index ea8d09c2475..0774a9315c2 100644 --- a/src/plugins/qmlprofiler/quick3dframemodel.cpp +++ b/src/plugins/qmlprofiler/quick3dframemodel.cpp @@ -472,7 +472,7 @@ QStringList Quick3DFrameModel::frameNames(const QString &view3D) const void Quick3DFrameModel::setFilterFrame(const QString &frame) { - if (frame == Tr::tr("None")) { + if (frame == Tr::tr("None", "Compare Frame: None")) { m_filterFrame = -1; } else { QString title = Tr::tr("Frame"); diff --git a/src/plugins/qmlprofiler/quick3dframeview.cpp b/src/plugins/qmlprofiler/quick3dframeview.cpp index 64f51c9970f..d0b59afc703 100644 --- a/src/plugins/qmlprofiler/quick3dframeview.cpp +++ b/src/plugins/qmlprofiler/quick3dframeview.cpp @@ -85,7 +85,7 @@ Quick3DFrameView::Quick3DFrameView(QmlProfilerModelManager *profilerModelManager list << model->view3DNames(); view3DComboModel->setStringList(list); list.clear(); - list << Tr::tr("None"); + list << Tr::tr("None", "Compare Frame: None"); list << model->frameNames(Tr::tr("All")); frameComboModel->setStringList(list); }); @@ -93,7 +93,7 @@ Quick3DFrameView::Quick3DFrameView(QmlProfilerModelManager *profilerModelManager m_mainView->setFilterView3D(text); model->setFilterView3D(text); QStringList list; - list << Tr::tr("None"); + list << Tr::tr("None", "Compare Frame: None"); list << model->frameNames(text); frameComboModel->setStringList(list); }); diff --git a/src/plugins/qtsupport/qtkitaspect.cpp b/src/plugins/qtsupport/qtkitaspect.cpp index a69c7997864..45ce44b0f3a 100644 --- a/src/plugins/qtsupport/qtkitaspect.cpp +++ b/src/plugins/qtsupport/qtkitaspect.cpp @@ -286,7 +286,8 @@ QString QtKitAspectFactory::displayNamePostfix(const Kit *k) const KitAspectFactory::ItemList QtKitAspectFactory::toUserOutput(const Kit *k) const { QtVersion *version = QtKitAspect::qtVersion(k); - return {{Tr::tr("Qt version"), version ? version->displayName() : Tr::tr("None")}}; + return { + {Tr::tr("Qt version"), version ? version->displayName() : Tr::tr("None", "No Qt version")}}; } void QtKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp index e382b2f984d..62aabe6e7e2 100644 --- a/src/plugins/qtsupport/qtoptionspage.cpp +++ b/src/plugins/qtsupport/qtoptionspage.cpp @@ -169,7 +169,7 @@ QVariant QtVersionItem::data(int column, int role) const if (role == KitAspect::IsNoneRole && column == 0) return true; if (role == Qt::DisplayRole && column == 0) - return Tr::tr("None"); + return Tr::tr("None", "No Qt version"); if (role == KitAspect::IdRole) return -1; return TreeItem::data(column, role); @@ -438,8 +438,8 @@ QtSettingsPageWidget::QtSettingsPageWidget() m_documentationSetting->addItem(Tr::tr("Highest Version Only"), int(QtVersionManager::DocumentationSetting::HighestOnly)); m_documentationSetting->addItem(Tr::tr("All"), int(QtVersionManager::DocumentationSetting::All)); - m_documentationSetting->addItem(Tr::tr("None"), - int(QtVersionManager::DocumentationSetting::None)); + m_documentationSetting->addItem( + Tr::tr("None", "No documentation"), int(QtVersionManager::DocumentationSetting::None)); const int selectedIndex = m_documentationSetting->findData( int(QtVersionManager::documentationSetting())); if (selectedIndex >= 0) diff --git a/src/plugins/texteditor/behaviorsettingswidget.cpp b/src/plugins/texteditor/behaviorsettingswidget.cpp index 9bdc7ff444a..9fd1d49414a 100644 --- a/src/plugins/texteditor/behaviorsettingswidget.cpp +++ b/src/plugins/texteditor/behaviorsettingswidget.cpp @@ -74,7 +74,7 @@ BehaviorSettingsWidget::BehaviorSettingsWidget(QWidget *parent) d->tabKeyBehavior->addItem(Tr::tr("In Leading White Space")); d->smartBackspaceBehavior = new QComboBox; - d->smartBackspaceBehavior->addItem(Tr::tr("None")); + d->smartBackspaceBehavior->addItem(Tr::tr("None", "Backspace indentation: None")); d->smartBackspaceBehavior->addItem(Tr::tr("Follows Previous Indents")); d->smartBackspaceBehavior->addItem(Tr::tr("Unindents")); d->smartBackspaceBehavior->setToolTip(Tr::tr("\n" diff --git a/src/plugins/texteditor/completionsettingspage.cpp b/src/plugins/texteditor/completionsettingspage.cpp index 271eac8129b..5283cb5ce34 100644 --- a/src/plugins/texteditor/completionsettingspage.cpp +++ b/src/plugins/texteditor/completionsettingspage.cpp @@ -65,7 +65,7 @@ CompletionSettingsPageWidget::CompletionSettingsPageWidget(CompletionSettingsPag { m_caseSensitivity = new QComboBox; m_caseSensitivity->addItem(Tr::tr("Full")); - m_caseSensitivity->addItem(Tr::tr("None")); + m_caseSensitivity->addItem(Tr::tr("None", "Case-sensitivity: None")); m_caseSensitivity->addItem(Tr::tr("First Letter")); auto caseSensitivityLabel = new QLabel(Tr::tr("&Case-sensitivity:")); diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 24a277da57f..97ebcbba1e3 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -1224,7 +1224,7 @@ HeobDialog::HeobDialog(QWidget *parent) : auto leakDetailLabel = new QLabel(Tr::tr("Leak details:")); leakDetailLayout->addWidget(leakDetailLabel); m_leakDetailCombo = new QComboBox; - m_leakDetailCombo->addItem(Tr::tr("None")); + m_leakDetailCombo->addItem(Tr::tr("None", "Leak details: None")); m_leakDetailCombo->addItem(Tr::tr("Simple")); m_leakDetailCombo->addItem(Tr::tr("Detect Leak Types")); m_leakDetailCombo->addItem(Tr::tr("Detect Leak Types (Show Reachable)"));