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 <christian.stenger@qt.io>
This commit is contained in:
Eike Ziller
2024-12-13 11:14:28 +01:00
parent b626da4e2c
commit 705dcb17b8
23 changed files with 42 additions and 30 deletions

View File

@@ -155,7 +155,8 @@ void PluginDetailsView::update(PluginSpec *spec)
d->compatVersion->setText(spec->compatVersion()); d->compatVersion->setText(spec->compatVersion());
d->vendor->setText(spec->vendor()); d->vendor->setText(spec->vendor());
d->vendorId->setText(spec->vendorId()); 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) { const auto toHtmlLink = [](const QString &url) {
return QString::fromLatin1("<a href=\"%1\">%1</a>").arg(url); return QString::fromLatin1("<a href=\"%1\">%1</a>").arg(url);
}; };

View File

@@ -574,7 +574,7 @@ QString AndroidDevice::deviceTypeName() const
QString AndroidDevice::skinName() const QString AndroidDevice::skinName() const
{ {
const QString skin = avdSettings()->value("skin.name").toString(); 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 QString AndroidDevice::androidTargetName() const

View File

@@ -82,7 +82,7 @@ void DebugServerProviderChooser::populate()
{ {
const QSignalBlocker blocker(m_chooser); const QSignalBlocker blocker(m_chooser);
m_chooser->clear(); 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()) { for (const IDebugServerProvider *p : DebugServerProviderManager::providers()) {
if (!providerMatches(p)) if (!providerMatches(p))

View File

@@ -139,7 +139,7 @@ QVariant CMakeToolTreeItem::data(int column, int role) const
if (!m_id.isValid()) { if (!m_id.isValid()) {
if (role == Qt::DisplayRole && column == 0) if (role == Qt::DisplayRole && column == 0)
return Tr::tr("None"); return Tr::tr("None", "No CMake tool");
if (role == ProjectExplorer::KitAspect::IsNoneRole) if (role == ProjectExplorer::KitAspect::IsNoneRole)
return true; return true;
return {}; return {};

View File

@@ -371,7 +371,7 @@ QString IFindFilter::descriptionForFindFlags(FindFlags flags)
flagStrings.append(Tr::tr("Preserve case")); flagStrings.append(Tr::tr("Preserve case"));
QString description = Tr::tr("Flags: %1"); QString description = Tr::tr("Flags: %1");
if (flagStrings.isEmpty()) if (flagStrings.isEmpty())
description = description.arg(Tr::tr("None")); description = description.arg(Tr::tr("None", "No find flags"));
else else
description = description.arg(flagStrings.join(Tr::tr(", "))); description = description.arg(flagStrings.join(Tr::tr(", ")));
return description; return description;

View File

@@ -238,7 +238,10 @@ public:
setWindowTitle(Tr::tr("Member Function Implementations")); setWindowTitle(Tr::tr("Member Function Implementations"));
const auto defaultImplTargetComboBox = new QComboBox; 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()) if (!implFile.isEmpty())
implTargetStrings.append(implFile.fileName()); implTargetStrings.append(implFile.fileName());
defaultImplTargetComboBox->insertItems(0, implTargetStrings); defaultImplTargetComboBox->insertItems(0, implTargetStrings);

View File

@@ -60,7 +60,7 @@ public:
rootItem()->appendChild(new DebuggerTreeItem(item, false)); rootItem()->appendChild(new DebuggerTreeItem(item, false));
} }
DebuggerItem noneItem; DebuggerItem noneItem;
noneItem.setUnexpandedDisplayName(Tr::tr("None")); noneItem.setUnexpandedDisplayName(Tr::tr("None", "No debugger"));
rootItem()->appendChild(new DebuggerTreeItem(noneItem, false)); rootItem()->appendChild(new DebuggerTreeItem(noneItem, false));
} }

View File

@@ -70,7 +70,8 @@ QVariant ModuleItem::data(int column, int role) const
if (role == Qt::DisplayRole) if (role == Qt::DisplayRole)
switch (module.elfData.symbolsType) { switch (module.elfData.symbolsType) {
case UnknownSymbols: return Tr::tr("Unknown"); 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 PlainSymbols: return Tr::tr("Plain");
case FastSymbols: return Tr::tr("Fast"); case FastSymbols: return Tr::tr("Fast");
case LinkedSymbols: return Tr::tr("debuglnk"); case LinkedSymbols: return Tr::tr("debuglnk");

View File

@@ -271,7 +271,7 @@ void IosSigningSettingsWidget::populateProvisioningProfiles()
m_signEntityCombo->setItemData(index, profile->details(), Qt::ToolTipRole); m_signEntityCombo->setItemData(index, profile->details(), Qt::ToolTipRole);
} }
} else { } else {
m_signEntityCombo->addItem(Tr::tr("None")); m_signEntityCombo->addItem(Tr::tr("None", "No signing identity"));
} }
} }
// Maintain previous selection. // Maintain previous selection.

View File

@@ -64,7 +64,7 @@ QWidget *NimCompilerBuildStep::createConfigWidget()
commandTextEdit->setMinimumSize(QSize(0, 0)); commandTextEdit->setMinimumSize(QSize(0, 0));
auto defaultArgumentsComboBox = new QComboBox(widget); 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("Debug"));
defaultArgumentsComboBox->addItem(Tr::tr("Release")); defaultArgumentsComboBox->addItem(Tr::tr("Release"));

View File

@@ -139,7 +139,12 @@ void JsonProjectPage::initUiForSubProject()
const QList<Project *> currentProjects = ProjectManager::projects(); const QList<Project *> currentProjects = ProjectManager::projects();
QList<ProjectInfo> projectInfos; QList<ProjectInfo> 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 index = -1;
int counter = 1; // we've added None already int counter = 1; // we've added None already
for (const Project *proj : currentProjects) { for (const Project *proj : currentProjects) {

View File

@@ -346,7 +346,8 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget()
const QSizePolicy cbSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); const QSizePolicy cbSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
m_buildBeforeDeployComboBox->setSizePolicy(cbSizePolicy); m_buildBeforeDeployComboBox->setSizePolicy(cbSizePolicy);
m_stopBeforeBuildComboBox = new QComboBox; 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("All"), int(StopBeforeBuild::All));
m_stopBeforeBuildComboBox->addItem(Tr::tr("Same Project"), int(StopBeforeBuild::SameProject)); m_stopBeforeBuildComboBox->addItem(Tr::tr("Same Project"), int(StopBeforeBuild::SameProject));
m_stopBeforeBuildComboBox->addItem(Tr::tr("Same Build Directory"), m_stopBeforeBuildComboBox->addItem(Tr::tr("Same Build Directory"),

View File

@@ -338,7 +338,7 @@ QString ToolchainKitAspectFactory::displayNamePostfix(const Kit *k) const
KitAspectFactory::ItemList ToolchainKitAspectFactory::toUserOutput(const Kit *k) const KitAspectFactory::ItemList ToolchainKitAspectFactory::toUserOutput(const Kit *k) const
{ {
Toolchain *tc = ToolchainKitAspect::cxxToolchain(k); 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 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"), expander->registerVariable("Compiler:Name", Tr::tr("Compiler"),
[kit] { [kit] {
const Toolchain *tc = ToolchainKitAspect::cxxToolchain(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"), 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"), expander->registerPrefix("Compiler:Name", Tr::tr("Compiler for different languages"),
[kit](const QString &ls) { [kit](const QString &ls) {
const Toolchain *tc = ToolchainKitAspect::toolchain(kit, findLanguage(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"), expander->registerPrefix("Compiler:Executable", Tr::tr("Compiler executable for different languages"),
[kit](const QString &ls) { [kit](const QString &ls) {

View File

@@ -265,9 +265,9 @@ void ToolchainManager::registerLanguageCategory(const LanguageCategory &language
QString ToolchainManager::displayNameOfLanguageId(const Utils::Id &id) 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); 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; return display;
} }
@@ -276,7 +276,7 @@ QString ToolchainManager::displayNameOfLanguageCategory(const LanguageCategory &
if (int(category.size()) == 1) if (int(category.size()) == 1)
return displayNameOfLanguageId(*category.begin()); return displayNameOfLanguageId(*category.begin());
QString name = d->m_displayNameForCategory.value(category); 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; return name;
} }

View File

@@ -52,7 +52,7 @@ QVariant ToolchainTreeItem::data(int column, int role) const
switch (role) { switch (role) {
case Qt::DisplayRole: case Qt::DisplayRole:
if (column == 0) if (column == 0)
return bundle ? bundle->displayName() : Tr::tr("None"); return bundle ? bundle->displayName() : Tr::tr("None", "Toolchain bundle display name");
return bundle->typeDisplayName(); return bundle->typeDisplayName();
case Qt::ToolTipRole: { case Qt::ToolTipRole: {
if (!bundle) if (!bundle)

View File

@@ -1172,7 +1172,7 @@ Utils::ListModel<ProjectExplorer::Interpreter> *createInterpreterModel(QObject *
model->setDataAccessor([](const Interpreter &interpreter, int column, int role) -> QVariant { model->setDataAccessor([](const Interpreter &interpreter, int column, int role) -> QVariant {
if (interpreter.id == "none") { if (interpreter.id == "none") {
if (role == Qt::DisplayRole) if (role == Qt::DisplayRole)
return Tr::tr("None"); return Tr::tr("None", "No Python interpreter");
if (role == KitAspect::IsNoneRole) if (role == KitAspect::IsNoneRole)
return true; return true;
return {}; return {};

View File

@@ -472,7 +472,7 @@ QStringList Quick3DFrameModel::frameNames(const QString &view3D) const
void Quick3DFrameModel::setFilterFrame(const QString &frame) void Quick3DFrameModel::setFilterFrame(const QString &frame)
{ {
if (frame == Tr::tr("None")) { if (frame == Tr::tr("None", "Compare Frame: None")) {
m_filterFrame = -1; m_filterFrame = -1;
} else { } else {
QString title = Tr::tr("Frame"); QString title = Tr::tr("Frame");

View File

@@ -85,7 +85,7 @@ Quick3DFrameView::Quick3DFrameView(QmlProfilerModelManager *profilerModelManager
list << model->view3DNames(); list << model->view3DNames();
view3DComboModel->setStringList(list); view3DComboModel->setStringList(list);
list.clear(); list.clear();
list << Tr::tr("None"); list << Tr::tr("None", "Compare Frame: None");
list << model->frameNames(Tr::tr("All")); list << model->frameNames(Tr::tr("All"));
frameComboModel->setStringList(list); frameComboModel->setStringList(list);
}); });
@@ -93,7 +93,7 @@ Quick3DFrameView::Quick3DFrameView(QmlProfilerModelManager *profilerModelManager
m_mainView->setFilterView3D(text); m_mainView->setFilterView3D(text);
model->setFilterView3D(text); model->setFilterView3D(text);
QStringList list; QStringList list;
list << Tr::tr("None"); list << Tr::tr("None", "Compare Frame: None");
list << model->frameNames(text); list << model->frameNames(text);
frameComboModel->setStringList(list); frameComboModel->setStringList(list);
}); });

View File

@@ -286,7 +286,8 @@ QString QtKitAspectFactory::displayNamePostfix(const Kit *k) const
KitAspectFactory::ItemList QtKitAspectFactory::toUserOutput(const Kit *k) const KitAspectFactory::ItemList QtKitAspectFactory::toUserOutput(const Kit *k) const
{ {
QtVersion *version = QtKitAspect::qtVersion(k); 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 void QtKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const

View File

@@ -169,7 +169,7 @@ QVariant QtVersionItem::data(int column, int role) const
if (role == KitAspect::IsNoneRole && column == 0) if (role == KitAspect::IsNoneRole && column == 0)
return true; return true;
if (role == Qt::DisplayRole && column == 0) if (role == Qt::DisplayRole && column == 0)
return Tr::tr("None"); return Tr::tr("None", "No Qt version");
if (role == KitAspect::IdRole) if (role == KitAspect::IdRole)
return -1; return -1;
return TreeItem::data(column, role); return TreeItem::data(column, role);
@@ -438,8 +438,8 @@ QtSettingsPageWidget::QtSettingsPageWidget()
m_documentationSetting->addItem(Tr::tr("Highest Version Only"), m_documentationSetting->addItem(Tr::tr("Highest Version Only"),
int(QtVersionManager::DocumentationSetting::HighestOnly)); int(QtVersionManager::DocumentationSetting::HighestOnly));
m_documentationSetting->addItem(Tr::tr("All"), int(QtVersionManager::DocumentationSetting::All)); m_documentationSetting->addItem(Tr::tr("All"), int(QtVersionManager::DocumentationSetting::All));
m_documentationSetting->addItem(Tr::tr("None"), m_documentationSetting->addItem(
int(QtVersionManager::DocumentationSetting::None)); Tr::tr("None", "No documentation"), int(QtVersionManager::DocumentationSetting::None));
const int selectedIndex = m_documentationSetting->findData( const int selectedIndex = m_documentationSetting->findData(
int(QtVersionManager::documentationSetting())); int(QtVersionManager::documentationSetting()));
if (selectedIndex >= 0) if (selectedIndex >= 0)

View File

@@ -74,7 +74,7 @@ BehaviorSettingsWidget::BehaviorSettingsWidget(QWidget *parent)
d->tabKeyBehavior->addItem(Tr::tr("In Leading White Space")); d->tabKeyBehavior->addItem(Tr::tr("In Leading White Space"));
d->smartBackspaceBehavior = new QComboBox; 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("Follows Previous Indents"));
d->smartBackspaceBehavior->addItem(Tr::tr("Unindents")); d->smartBackspaceBehavior->addItem(Tr::tr("Unindents"));
d->smartBackspaceBehavior->setToolTip(Tr::tr("<html><head/><body>\n" d->smartBackspaceBehavior->setToolTip(Tr::tr("<html><head/><body>\n"

View File

@@ -65,7 +65,7 @@ CompletionSettingsPageWidget::CompletionSettingsPageWidget(CompletionSettingsPag
{ {
m_caseSensitivity = new QComboBox; m_caseSensitivity = new QComboBox;
m_caseSensitivity->addItem(Tr::tr("Full")); 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")); m_caseSensitivity->addItem(Tr::tr("First Letter"));
auto caseSensitivityLabel = new QLabel(Tr::tr("&Case-sensitivity:")); auto caseSensitivityLabel = new QLabel(Tr::tr("&Case-sensitivity:"));

View File

@@ -1224,7 +1224,7 @@ HeobDialog::HeobDialog(QWidget *parent) :
auto leakDetailLabel = new QLabel(Tr::tr("Leak details:")); auto leakDetailLabel = new QLabel(Tr::tr("Leak details:"));
leakDetailLayout->addWidget(leakDetailLabel); leakDetailLayout->addWidget(leakDetailLabel);
m_leakDetailCombo = new QComboBox; 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("Simple"));
m_leakDetailCombo->addItem(Tr::tr("Detect Leak Types")); m_leakDetailCombo->addItem(Tr::tr("Detect Leak Types"));
m_leakDetailCombo->addItem(Tr::tr("Detect Leak Types (Show Reachable)")); m_leakDetailCombo->addItem(Tr::tr("Detect Leak Types (Show Reachable)"));