QmlJSEditor: Convert to using Tr::tr

Change-Id: I7e6bc774cdac0ead8ef944a46db120d290419f18
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Alessandro Portale
2022-08-25 12:46:47 +02:00
parent 016fb66c96
commit 0a6523e7f1
25 changed files with 139 additions and 748 deletions

View File

@@ -3,6 +3,7 @@
#include "qmljscomponentfromobjectdef.h"
#include "qmljscomponentnamedialog.h"
#include "qmljseditortr.h"
#include "qmljsquickfixassist.h"
#include <coreplugin/icore.h>
@@ -54,8 +55,7 @@ public:
m_componentName.prepend("My");
}
setDescription(QCoreApplication::translate("QmlJSEditor::ComponentFromObjectDef",
"Move Component into Separate File"));
setDescription(Tr::tr("Move Component into Separate File"));
}
Operation(const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface,

View File

@@ -2,6 +2,7 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljscomponentnamedialog.h"
#include "qmljseditortr.h"
#include <utils/classnamevalidatinglineedit.h>
#include <utils/layoutbuilder.h>
@@ -21,23 +22,23 @@ using namespace QmlJSEditor::Internal;
ComponentNameDialog::ComponentNameDialog(QWidget *parent) :
QDialog(parent)
{
setWindowTitle(tr("Move Component into Separate File"));
setWindowTitle(Tr::tr("Move Component into Separate File"));
m_componentNameEdit = new Utils::ClassNameValidatingLineEdit;
m_componentNameEdit->setPlaceholderText(tr("Component Name"));
m_componentNameEdit->setPlaceholderText(Tr::tr("Component Name"));
m_messageLabel = new QLabel;
m_pathEdit = new Utils::PathChooser;
m_label = new QLabel;
m_listWidget = new QListWidget;
m_plainTextEdit = new QPlainTextEdit;
m_checkBox = new QCheckBox(tr("ui.qml file"));
m_checkBox = new QCheckBox(Tr::tr("ui.qml file"));
m_buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
using namespace Utils::Layouting;
Column {
Form {
tr("Component name:"), m_componentNameEdit, br,
Tr::tr("Component name:"), m_componentNameEdit, br,
empty, m_messageLabel, br,
tr("Path:"), m_pathEdit, br,
Tr::tr("Path:"), m_pathEdit, br,
},
m_label,
Row { m_listWidget, m_plainTextEdit },
@@ -76,7 +77,7 @@ bool ComponentNameDialog::go(QString *proposedName,
d.m_pathEdit->setExpectedKind(Utils::PathChooser::ExistingDirectory);
d.m_pathEdit->setHistoryCompleter(QLatin1String("QmlJs.Component.History"));
d.m_pathEdit->setPath(*proposedPath);
d.m_label->setText(tr("Property assignments for %1:").arg(oldFileName));
d.m_label->setText(Tr::tr("Property assignments for %1:").arg(oldFileName));
d.m_checkBox->setChecked(isUiFile);
d.m_checkBox->setVisible(isUiFile);
d.m_sourcePreview = sourcePreview;
@@ -166,13 +167,13 @@ QString ComponentNameDialog::isValid() const
QString compName = m_componentNameEdit->text();
if (compName.isEmpty() || !compName[0].isUpper())
return tr("Invalid component name.");
return Tr::tr("Invalid component name.");
if (!m_pathEdit->isValid())
return tr("Invalid path.");
return Tr::tr("Invalid path.");
if (m_pathEdit->filePath().pathAppended(compName + ".qml").exists())
return tr("Component already exists.");
return Tr::tr("Component already exists.");
return QString();
}

View File

@@ -3,6 +3,7 @@
#include "qmljseditingsettingspage.h"
#include "qmljseditorconstants.h"
#include "qmljseditortr.h"
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>
@@ -140,22 +141,22 @@ public:
QmlJsEditingSettingsPageWidget()
{
auto s = QmlJsEditingSettings::get();
autoFormatOnSave = new QCheckBox(tr("Enable auto format on file save"));
autoFormatOnSave = new QCheckBox(Tr::tr("Enable auto format on file save"));
autoFormatOnSave->setChecked(s.autoFormatOnSave());
autoFormatOnlyCurrentProject =
new QCheckBox(tr("Restrict to files contained in the current project"));
new QCheckBox(Tr::tr("Restrict to files contained in the current project"));
autoFormatOnlyCurrentProject->setChecked(s.autoFormatOnlyCurrentProject());
autoFormatOnlyCurrentProject->setEnabled(autoFormatOnSave->isChecked());
pinContextPane = new QCheckBox(tr("Pin Qt Quick Toolbar"));
pinContextPane = new QCheckBox(Tr::tr("Pin Qt Quick Toolbar"));
pinContextPane->setChecked(s.pinContextPane());
enableContextPane = new QCheckBox(tr("Always show Qt Quick Toolbar"));
enableContextPane = new QCheckBox(Tr::tr("Always show Qt Quick Toolbar"));
enableContextPane->setChecked(s.enableContextPane());
foldAuxData = new QCheckBox(tr("Auto-fold auxiliary data"));
foldAuxData = new QCheckBox(Tr::tr("Auto-fold auxiliary data"));
foldAuxData->setChecked(s.foldAuxData());
uiQmlOpenComboBox = new QComboBox;
uiQmlOpenComboBox->addItem(tr("Always Ask"), "");
uiQmlOpenComboBox->addItem(tr("Qt Design Studio"), Core::Constants::MODE_DESIGN);
uiQmlOpenComboBox->addItem(tr("Qt Creator"), Core::Constants::MODE_EDIT);
uiQmlOpenComboBox->addItem(Tr::tr("Always Ask"), "");
uiQmlOpenComboBox->addItem(Tr::tr("Qt Design Studio"), Core::Constants::MODE_DESIGN);
uiQmlOpenComboBox->addItem(Tr::tr("Qt Creator"), Core::Constants::MODE_EDIT);
const int comboIndex = qMax(0, uiQmlOpenComboBox->findData(s.uiQmlOpenMode()));
uiQmlOpenComboBox->setCurrentIndex(comboIndex);
uiQmlOpenComboBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
@@ -164,18 +165,18 @@ public:
using namespace Utils::Layouting;
Column {
Group {
title(tr("Automatic Formatting on File Save")),
title(Tr::tr("Automatic Formatting on File Save")),
Column { autoFormatOnSave, autoFormatOnlyCurrentProject },
},
Group {
title(tr("Qt Quick Toolbars")),
title(Tr::tr("Qt Quick Toolbars")),
Column { pinContextPane, enableContextPane },
},
Group {
title(tr("Features")),
title(Tr::tr("Features")),
Column {
foldAuxData,
Form { tr("Open .ui.qml files with:"), uiQmlOpenComboBox },
Form { Tr::tr("Open .ui.qml files with:"), uiQmlOpenComboBox },
},
},
st,
@@ -217,7 +218,7 @@ QmlJsEditingSettings QmlJsEditingSettings::get()
QmlJsEditingSettingsPage::QmlJsEditingSettingsPage()
{
setId("C.QmlJsEditing");
setDisplayName(QmlJsEditingSettingsPageWidget::tr("QML/JS Editing"));
setDisplayName(Tr::tr("QML/JS Editing"));
setCategory(Constants::SETTINGS_CATEGORY_QML);
setWidgetCreator([] { return new QmlJsEditingSettingsPageWidget; });
}

View File

@@ -5,16 +5,17 @@
#include "qmljsautocompleter.h"
#include "qmljscompletionassist.h"
#include "qmljseditingsettingspage.h"
#include "qmljseditorconstants.h"
#include "qmljseditordocument.h"
#include "qmljseditorplugin.h"
#include "qmljseditortr.h"
#include "qmljsfindreferences.h"
#include "qmljshighlighter.h"
#include "qmljshoverhandler.h"
#include "qmljsquickfixassist.h"
#include "qmloutlinemodel.h"
#include "quicktoolbar.h"
#include "qmljseditingsettingspage.h"
#include <qmljs/qmljsbind.h>
#include <qmljs/qmljsevaluate.h>
@@ -317,7 +318,7 @@ void QmlJSEditorWidget::updateContextPane()
QTextCursor tc(document());
tc.setPosition(end);
marker.cursor = tc;
marker.tooltip = tr("Show Qt Quick ToolBar");
marker.tooltip = Tr::tr("Show Qt Quick ToolBar");
marker.type = QT_QUICK_TOOLBAR_MARKER_ID;
marker.callback = [this](TextEditorWidget *) {
showContextPane();
@@ -700,15 +701,15 @@ void QmlJSEditorWidget::inspectElementUnderCursor() const
const CppComponentValue *cppValue = findCppComponentToInspect(semanticInfo, cursorPosition);
if (!cppValue) {
QString title = tr("Code Model Not Available");
QString title = Tr::tr("Code Model Not Available");
const QString documentId = QML_JS_EDITOR_PLUGIN + QStringLiteral(".NothingToShow");
EditorManager::openEditorWithContents(Core::Constants::K_DEFAULT_TEXT_EDITOR_ID, &title,
tr("Code model not available.").toUtf8(), documentId,
Tr::tr("Code model not available.").toUtf8(), documentId,
EditorManager::IgnoreNavigationHistory);
return;
}
QString title = tr("Code Model of %1").arg(cppValue->metaObject()->className());
QString title = Tr::tr("Code Model of %1").arg(cppValue->metaObject()->className());
const QString documentId = QML_JS_EDITOR_PLUGIN + QStringLiteral(".Class.")
+ cppValue->metaObject()->className();
IEditor *outputEditor = EditorManager::openEditorWithContents(
@@ -851,7 +852,7 @@ void QmlJSEditorWidget::contextMenuEvent(QContextMenuEvent *e)
{
QPointer<QMenu> menu(new QMenu(this));
QMenu *refactoringMenu = new QMenu(tr("Refactoring"), menu);
QMenu *refactoringMenu = new QMenu(Tr::tr("Refactoring"), menu);
if (!m_qmlJsEditorDocument->isSemanticInfoOutdated()) {
AssistInterface *interface = createAssistInterface(QuickFix, ExplicitlyInvoked);

View File

@@ -6,6 +6,7 @@
#include "qmljseditorconstants.h"
#include "qmljseditordocument_p.h"
#include "qmljseditorplugin.h"
#include "qmljseditortr.h"
#include "qmljshighlighter.h"
#include "qmljsquickfixassist.h"
#include "qmljssemantichighlighter.h"
@@ -690,8 +691,8 @@ void QmlJSEditorDocument::setIsDesignModePreferred(bool value)
if (value) {
if (infoBar()->canInfoBeAdded(QML_UI_FILE_WARNING)) {
Utils::InfoBarEntry info(QML_UI_FILE_WARNING,
tr("This file should only be edited in <b>Design</b> mode."));
info.addCustomButton(tr("Switch Mode"), []() {
Tr::tr("This file should only be edited in <b>Design</b> mode."));
info.addCustomButton(Tr::tr("Switch Mode"), []() {
Core::ModeManager::activateMode(Core::Constants::MODE_DESIGN);
});
infoBar()->addInfo(info);

View File

@@ -6,6 +6,7 @@
#include "qmljseditorconstants.h"
#include "qmljseditordocument.h"
#include "qmljseditorplugin.h"
#include "qmljseditortr.h"
#include "qmljshighlighter.h"
#include "qmljsoutline.h"
#include "qmljsquickfixassist.h"
@@ -109,7 +110,7 @@ bool QmlJSEditorPlugin::initialize(const QStringList &arguments, QString *errorM
QmlJSEditorPluginPrivate::QmlJSEditorPluginPrivate()
{
TextEditor::SnippetProvider::registerGroup(Constants::QML_SNIPPETS_GROUP_ID,
QmlJSEditorPlugin::tr("QML", "SnippetProvider"),
Tr::tr("QML", "SnippetProvider"),
&QmlJSEditorFactory::decorateEditor);
QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance();
@@ -148,20 +149,20 @@ QmlJSEditorPluginPrivate::QmlJSEditorPluginPrivate()
contextMenu->addAction(cmd);
qmlToolsMenu->addAction(cmd);
QAction *semanticScan = new QAction(QmlJSEditorPlugin::tr("Run Checks"), this);
QAction *semanticScan = new QAction(Tr::tr("Run Checks"), this);
cmd = ActionManager::registerAction(semanticScan, Id("QmlJSEditor.RunSemanticScan"));
cmd->setDefaultKeySequence(QKeySequence(QmlJSEditorPlugin::tr("Ctrl+Shift+C")));
cmd->setDefaultKeySequence(QKeySequence(Tr::tr("Ctrl+Shift+C")));
connect(semanticScan, &QAction::triggered, this, &QmlJSEditorPluginPrivate::runSemanticScan);
qmlToolsMenu->addAction(cmd);
m_reformatFileAction = new QAction(QmlJSEditorPlugin::tr("Reformat File"), this);
m_reformatFileAction = new QAction(Tr::tr("Reformat File"), this);
cmd = ActionManager::registerAction(m_reformatFileAction,
Id("QmlJSEditor.ReformatFile"),
context);
connect(m_reformatFileAction, &QAction::triggered, this, &QmlJSEditorPluginPrivate::reformatFile);
qmlToolsMenu->addAction(cmd);
QAction *inspectElementAction = new QAction(QmlJSEditorPlugin::tr("Inspect API for Element Under Cursor"), this);
QAction *inspectElementAction = new QAction(Tr::tr("Inspect API for Element Under Cursor"), this);
cmd = ActionManager::registerAction(inspectElementAction,
Id("QmlJSEditor.InspectElementUnderCursor"),
context);
@@ -171,7 +172,7 @@ QmlJSEditorPluginPrivate::QmlJSEditorPluginPrivate()
});
qmlToolsMenu->addAction(cmd);
QAction *showQuickToolbar = new QAction(QmlJSEditorPlugin::tr("Show Qt Quick Toolbar"), this);
QAction *showQuickToolbar = new QAction(Tr::tr("Show Qt Quick Toolbar"), this);
cmd = ActionManager::registerAction(showQuickToolbar, Constants::SHOW_QT_QUICK_HELPER, context);
cmd->setDefaultKeySequence(useMacShortcuts ? QKeySequence(Qt::META | Qt::ALT | Qt::Key_Space)
: QKeySequence(Qt::CTRL | Qt::ALT | Qt::Key_Space));
@@ -204,8 +205,8 @@ void QmlJSEditorPlugin::extensionsInitialized()
FileIconProvider::registerIconOverlayForMimeType(ProjectExplorer::Constants::FILEOVERLAY_UI,
"application/x-qt.ui+qml");
TaskHub::addCategory(Constants::TASK_CATEGORY_QML, tr("QML"));
TaskHub::addCategory(Constants::TASK_CATEGORY_QML_ANALYSIS, tr("QML Analysis"), false);
TaskHub::addCategory(Constants::TASK_CATEGORY_QML, Tr::tr("QML"));
TaskHub::addCategory(Constants::TASK_CATEGORY_QML_ANALYSIS, Tr::tr("QML Analysis"), false);
}
ExtensionSystem::IPlugin::ShutdownFlag QmlJSEditorPlugin::aboutToShutdown()

View File

@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljseditortr.h"
#include "qmljsfindreferences.h"
#include <coreplugin/editormanager/editormanager.h>
@@ -992,7 +993,7 @@ void FindReferences::displayResults(int first, int last)
Usage dummy = m_watcher.future().resultAt(0);
const QString replacement = dummy.path.toString();
const QString symbolName = dummy.lineText;
const QString label = tr("QML/JS Usages:");
const QString label = Tr::tr("QML/JS Usages:");
if (replacement.isEmpty()) {
m_currentSearch = SearchResultWindow::instance()->startNewSearch(
@@ -1014,7 +1015,7 @@ void FindReferences::displayResults(int first, int last)
SearchResultWindow::instance()->popup(IOutputPane::Flags(IOutputPane::ModeSwitch | IOutputPane::WithFocus));
FutureProgress *progress = ProgressManager::addTask(m_watcher.future(),
tr("Searching for Usages"),
Tr::tr("Searching for Usages"),
"QmlJSEditor.TaskSearch");
connect(progress, &FutureProgress::clicked, m_currentSearch.data(), &SearchResult::popup);

View File

@@ -1,11 +1,12 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljshoverhandler.h"
#include "qmlexpressionundercursor.h"
#include "qmljseditor.h"
#include "qmljseditorconstants.h"
#include "qmljseditordocument.h"
#include "qmlexpressionundercursor.h"
#include "qmljseditortr.h"
#include "qmljshoverhandler.h"
#include <coreplugin/icore.h>
#include <coreplugin/editormanager/ieditor.h>
@@ -342,14 +343,14 @@ void QmlJSHoverHandler::handleImport(const ScopeChain &scopeChain, AST::UiImport
if (import.info.ast() == node) {
if (import.info.type() == ImportType::Library
&& !import.libraryPath.isEmpty()) {
QString msg = tr("Library at %1").arg(import.libraryPath.toString());
QString msg = Tr::tr("Library at %1").arg(import.libraryPath.toString());
const LibraryInfo &libraryInfo = scopeChain.context()->snapshot().libraryInfo(import.libraryPath);
if (libraryInfo.pluginTypeInfoStatus() == LibraryInfo::DumpDone) {
msg += QLatin1Char('\n');
msg += tr("Dumped plugins successfully.");
msg += Tr::tr("Dumped plugins successfully.");
} else if (libraryInfo.pluginTypeInfoStatus() == LibraryInfo::TypeInfoFileDone) {
msg += QLatin1Char('\n');
msg += tr("Read typeinfo files successfully.");
msg += Tr::tr("Read typeinfo files successfully.");
}
setToolTip(msg);
} else {

View File

@@ -1,10 +1,11 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljsoutline.h"
#include "qmloutlinemodel.h"
#include "qmljseditor.h"
#include "qmljseditortr.h"
#include "qmljsoutline.h"
#include "qmljsoutlinetreeview.h"
#include "qmloutlinemodel.h"
#include <coreplugin/find/itemviewfind.h>
#include <coreplugin/icore.h>
@@ -113,7 +114,7 @@ QmlJSOutlineWidget::QmlJSOutlineWidget(QWidget *parent)
layout->addWidget(Core::ItemViewFind::createSearchableWrapper(m_treeView));
m_showBindingsAction = new QAction(this);
m_showBindingsAction->setText(tr("Show All Bindings"));
m_showBindingsAction->setText(Tr::tr("Show All Bindings"));
m_showBindingsAction->setCheckable(true);
m_showBindingsAction->setChecked(true);
connect(m_showBindingsAction, &QAction::toggled, this, &QmlJSOutlineWidget::setShowBindings);

View File

@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljseditortr.h"
#include "qmljsoutlinetreeview.h"
#include "qmloutlinemodel.h"
@@ -35,9 +36,9 @@ void QmlJSOutlineTreeView::contextMenuEvent(QContextMenuEvent *event)
QMenu contextMenu;
connect(contextMenu.addAction(tr("Expand All")), &QAction::triggered,
connect(contextMenu.addAction(Tr::tr("Expand All")), &QAction::triggered,
this, &QmlJSOutlineTreeView::expandAll);
connect(contextMenu.addAction(tr("Collapse All")), &QAction::triggered,
connect(contextMenu.addAction(Tr::tr("Collapse All")), &QAction::triggered,
this, &QmlJSOutlineTreeView::collapseAllExceptRoot);
contextMenu.exec(event->globalPos());

View File

@@ -1,11 +1,12 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljsquickfix.h"
#include "qmljscomponentfromobjectdef.h"
#include "qmljswrapinloader.h"
#include "qmljseditor.h"
#include "qmljseditortr.h"
#include "qmljsquickfix.h"
#include "qmljsquickfixassist.h"
#include "qmljswrapinloader.h"
#include <extensionsystem/iplugin.h>
#include <extensionsystem/pluginmanager.h>
@@ -46,8 +47,7 @@ public:
: QmlJSQuickFixOperation(interface, 0)
, _objectInitializer(objectInitializer)
{
setDescription(QApplication::translate("QmlJSEditor::QuickFix",
"Split Initializer"));
setDescription(Tr::tr("Split Initializer"));
}
void performChanges(QmlJSRefactoringFilePtr currentFile,
@@ -113,7 +113,7 @@ public:
: QmlJSQuickFixOperation(interface, 0)
, _message(message)
{
setDescription(tr("Add a Comment to Suppress This Message"));
setDescription(Tr::tr("Add a Comment to Suppress This Message"));
}
void performChanges(QmlJSRefactoringFilePtr currentFile,

View File

@@ -1,6 +1,7 @@
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljseditortr.h"
#include "qmljstextmark.h"
#include <utils/qtcassert.h>
@@ -70,8 +71,8 @@ void QmlJSTextMark::init(bool warning, const QString &message)
: Utils::Icons::CODEMODEL_ERROR.icon());
setColor(warning ? Utils::Theme::CodeModel_Warning_TextMarkColor
: Utils::Theme::CodeModel_Error_TextMarkColor);
setDefaultToolTip(warning ? QApplication::translate("QmlJS Code Model Marks", "Code Model Warning")
: QApplication::translate("QmlJS Code Model Marks", "Code Model Error"));
setDefaultToolTip(warning ? Tr::tr("Code Model Warning")
: Tr::tr("Code Model Error"));
setToolTip(message);
setPriority(warning ? TextEditor::TextMark::NormalPriority
: TextEditor::TextMark::HighPriority);

View File

@@ -1,8 +1,9 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "qmljswrapinloader.h"
#include "qmljseditortr.h"
#include "qmljsquickfixassist.h"
#include "qmljswrapinloader.h"
#include <coreplugin/idocument.h>
@@ -73,7 +74,7 @@ public:
{
Q_ASSERT(m_objDef);
setDescription(tr("Wrap Component in Loader"));
setDescription(Tr::tr("Wrap Component in Loader"));
}
QString findFreeName(const QString &base)
@@ -113,11 +114,11 @@ public:
FindIds::Result innerIds = FindIds()(m_objDef);
innerIds.remove(id);
QString comment = tr("// TODO: Move position bindings from the component to the Loader.\n"
QString comment = Tr::tr("// TODO: Move position bindings from the component to the Loader.\n"
"// Check all uses of 'parent' inside the root element of the component.")
+ QLatin1Char('\n');
if (idBinding) {
comment += tr("// Rename all outer uses of the id \"%1\" to \"%2.item\".").arg(
comment += Tr::tr("// Rename all outer uses of the id \"%1\" to \"%2.item\".").arg(
id, loaderId) + QLatin1Char('\n');
}
@@ -125,7 +126,7 @@ public:
QString innerIdForwarders;
for (auto it = innerIds.cbegin(), end = innerIds.cend(); it != end; ++it) {
const QString innerId = it.key();
comment += tr("// Rename all outer uses of the id \"%1\" to \"%2.item.%1\".\n").arg(
comment += Tr::tr("// Rename all outer uses of the id \"%1\" to \"%2.item.%1\".\n").arg(
innerId, loaderId);
changes.replace(it.value().begin(), it.value().end(), QString::fromLatin1("inner_%1").arg(innerId));
innerIdForwarders += QString::fromLatin1("\nproperty alias %1: inner_%1").arg(innerId);