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->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("<a href=\"%1\">%1</a>").arg(url);
};

View File

@@ -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

View File

@@ -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))

View File

@@ -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 {};

View File

@@ -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;

View File

@@ -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);

View File

@@ -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));
}

View File

@@ -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");

View File

@@ -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.

View File

@@ -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"));

View File

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

View File

@@ -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"),

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -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)

View File

@@ -1172,7 +1172,7 @@ Utils::ListModel<ProjectExplorer::Interpreter> *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 {};

View File

@@ -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");

View File

@@ -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);
});

View File

@@ -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

View File

@@ -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)

View File

@@ -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("<html><head/><body>\n"

View File

@@ -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:"));

View File

@@ -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)"));