Skip to content

Commit d3af76d

Browse files
fix(plugin-manager): address review feedback from @spiros132
(A) Replace all .replace("{placeholder}", value) string interpolation with native tr(key, { placeholder: value }) API — 11 call-sites across two files: AvailableTabContent.qml (3 sites): - installPlugin(): panel.installing, panel.install-success, panel.install-error - version display: panel.version-prefix concat → panel.version-display interpolation InstalledTabContent.qml (8 sites): - _addPluginToBar(): panel.already-on-bar, panel.add-to-bar-success - uninstallDialog description binding: panel.uninstall-dialog-description - uninstallPlugin(): panel.uninstalling, panel.uninstall-success, panel.uninstall-error - update button onClicked: panel.install-success, panel.install-error - version display: double version-prefix concat → panel.version-update interpolation; single version-prefix concat → panel.version-display interpolation New i18n keys added to all 17 locale files: - panel.version-display: "v{version}" - panel.version-update: "v{from} → v{to}" (B) NTabView decision — Panel.qml left unchanged (StackLayout kept): NTabView uses implicitHeight for sizing and slide animation. The plugin-manager left column uses Layout.fillHeight: true with NScrollView children that have no meaningful implicitHeight — NTabView would collapse to zero height and produce broken animation. The existing NTabBar + StackLayout pattern is correct here. - Bump version 1.0.0 → 1.0.1
1 parent 89f3a59 commit d3af76d

20 files changed

Lines changed: 55 additions & 26 deletions

plugin-manager/AvailableTabContent.qml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,17 @@ ColumnLayout {
6262
function installPlugin(pluginMetadata) {
6363
if (!pluginApi) return;
6464
var title = pluginApi.tr("panel.title")
65-
var msg = pluginApi.tr("panel.installing")
66-
msg = msg.replace("{plugin}", pluginMetadata.name)
65+
var msg = pluginApi.tr("panel.installing", { plugin: pluginMetadata.name })
6766
ToastService.showNotice(title, msg);
6867

6968
PluginService.installPlugin(pluginMetadata, false, function (success, error, registeredKey) {
7069
if (!pluginApi) return;
7170
if (success) {
72-
var successMsg = pluginApi.tr("panel.install-success")
73-
successMsg = successMsg.replace("{plugin}", pluginMetadata.name)
71+
var successMsg = pluginApi.tr("panel.install-success", { plugin: pluginMetadata.name })
7472
ToastService.showNotice(title, successMsg);
7573
PluginService.enablePlugin(registeredKey);
7674
} else {
77-
var errorMsg = pluginApi.tr("panel.install-error")
78-
errorMsg = errorMsg.replace("{error}", error || pluginApi.tr("panel.unknown-error"))
75+
var errorMsg = pluginApi.tr("panel.install-error", { error: error || pluginApi.tr("panel.unknown-error") })
7976
ToastService.showError(title, errorMsg);
8077
}
8178
});
@@ -349,7 +346,7 @@ ColumnLayout {
349346
Layout.fillWidth: true
350347

351348
NText {
352-
text: pluginApi?.tr("panel.version-prefix") + modelData.version
349+
text: pluginApi?.tr("panel.version-display", { version: modelData.version })
353350
font.pointSize: Style.fontSizeXS
354351
color: Color.mOnSurfaceVariant
355352
}

plugin-manager/InstalledTabContent.qml

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ ColumnLayout {
5151
var arr = widgets[sections[s]]
5252
for (var i = 0; i < arr.length; i++) {
5353
if (arr[i] && arr[i].id === widgetId) {
54-
var alreadyMsg = pluginApi.tr("panel.already-on-bar").replace("{plugin}", pluginName || pluginId)
54+
var alreadyMsg = pluginApi.tr("panel.already-on-bar", { plugin: pluginName || pluginId })
5555
ToastService.showNotice(pluginApi.tr("panel.title"), alreadyMsg)
5656
return
5757
}
@@ -72,7 +72,7 @@ ColumnLayout {
7272
Settings.setScreenOverride(screenName, "widgets", widgets)
7373
BarService.widgetsRevision++
7474

75-
var successMsg = pluginApi.tr("panel.add-to-bar-success").replace("{plugin}", pluginName || pluginId)
75+
var successMsg = pluginApi.tr("panel.add-to-bar-success", { plugin: pluginName || pluginId })
7676
ToastService.showNotice(pluginApi.tr("panel.title"), successMsg)
7777
}
7878

@@ -119,8 +119,7 @@ ColumnLayout {
119119
label: pluginApi?.tr("panel.uninstall-dialog-title")
120120
description: {
121121
if (!pluginApi) return ""
122-
var base = pluginApi.tr("panel.uninstall-dialog-description")
123-
return base.replace("{plugin}", uninstallDialog.pluginToUninstall?.name || "")
122+
return pluginApi.tr("panel.uninstall-dialog-description", { plugin: uninstallDialog.pluginToUninstall?.name || "" })
124123
}
125124
}
126125

@@ -170,19 +169,16 @@ ColumnLayout {
170169

171170
if (!pluginApi) return;
172171
var title = pluginApi.tr("panel.title")
173-
var msg = pluginApi.tr("panel.uninstalling")
174-
msg = msg.replace("{plugin}", pluginName)
172+
var msg = pluginApi.tr("panel.uninstalling", { plugin: pluginName })
175173
ToastService.showNotice(title, msg);
176174

177175
PluginService.uninstallPlugin(pluginId, function (success, error) {
178176
if (!pluginApi) return;
179177
if (success) {
180-
var successMsg = pluginApi.tr("panel.uninstall-success")
181-
successMsg = successMsg.replace("{plugin}", pluginName)
178+
var successMsg = pluginApi.tr("panel.uninstall-success", { plugin: pluginName })
182179
ToastService.showNotice(title, successMsg);
183180
} else {
184-
var errorMsg = pluginApi.tr("panel.uninstall-error")
185-
errorMsg = errorMsg.replace("{error}", error || pluginApi.tr("panel.unknown-error"))
181+
var errorMsg = pluginApi.tr("panel.uninstall-error", { error: error || pluginApi.tr("panel.unknown-error") })
186182
ToastService.showError(title, errorMsg);
187183
}
188184
});
@@ -490,13 +486,11 @@ ColumnLayout {
490486
if (!api) return;
491487
if (success) {
492488
var title = api.tr("panel.title")
493-
var msg = api.tr("panel.install-success")
494-
msg = msg.replace("{plugin}", pname)
489+
var msg = api.tr("panel.install-success", { plugin: pname })
495490
ToastService.showNotice(title, msg);
496491
} else {
497492
var title2 = api.tr("panel.title")
498-
var errMsg = api.tr("panel.install-error")
499-
errMsg = errMsg.replace("{error}", error || api.tr("panel.unknown-error"))
493+
var errMsg = api.tr("panel.install-error", { error: error || api.tr("panel.unknown-error") })
500494
ToastService.showError(title2, errMsg);
501495
}
502496
});
@@ -537,9 +531,9 @@ ColumnLayout {
537531
NText {
538532
text: {
539533
if (modelData.updateInfo) {
540-
return pluginApi?.tr("panel.version-prefix") + modelData.version + "" + pluginApi?.tr("panel.version-prefix") + modelData.updateInfo.availableVersion
534+
return pluginApi?.tr("panel.version-update", { from: modelData.version, to: modelData.updateInfo.availableVersion })
541535
}
542-
return pluginApi?.tr("panel.version-prefix") + modelData.version;
536+
return pluginApi?.tr("panel.version-display", { version: modelData.version });
543537
}
544538
font.pointSize: Style.fontSizeXS
545539
color: modelData.updateInfo ? Color.mPrimary : Color.mOnSurfaceVariant

plugin-manager/i18n/de.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"add-to-bar-success": "{plugin} zur Leiste hinzugefügt",
4848
"already-on-bar": "{plugin} ist bereits auf der Leiste",
4949
"version-prefix": "v",
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
5052
"separator": ""
5153
},
5254
"settings": {

plugin-manager/i18n/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747
"add-to-bar-success": "Added {plugin} to bar",
4848
"already-on-bar": "{plugin} is already on the bar",
4949
"version-prefix": "v",
50-
"separator": "\u2022"
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
52+
"separator": ""
5153
},
5254
"settings": {
5355
"iconColor": {

plugin-manager/i18n/es.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"add-to-bar-success": "{plugin} añadido a la barra",
4848
"already-on-bar": "{plugin} ya está en la barra",
4949
"version-prefix": "v",
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
5052
"separator": ""
5153
},
5254
"settings": {

plugin-manager/i18n/fr.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"add-to-bar-success": "{plugin} ajouté à la barre",
4848
"already-on-bar": "{plugin} est déjà sur la barre",
4949
"version-prefix": "v",
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
5052
"separator": ""
5153
},
5254
"settings": {

plugin-manager/i18n/hu.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"add-to-bar-success": "{plugin} hozzáadva a sávhoz",
4848
"already-on-bar": "{plugin} már a sávon van",
4949
"version-prefix": "v",
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
5052
"separator": ""
5153
},
5254
"settings": {

plugin-manager/i18n/it.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"add-to-bar-success": "{plugin} aggiunto alla barra",
4848
"already-on-bar": "{plugin} è già nella barra",
4949
"version-prefix": "v",
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
5052
"separator": ""
5153
},
5254
"settings": {

plugin-manager/i18n/ja.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"add-to-bar-success": "{plugin} をバーに追加しました",
4848
"already-on-bar": "{plugin} はすでにバーにあります",
4949
"version-prefix": "v",
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
5052
"separator": ""
5153
},
5254
"settings": {

plugin-manager/i18n/ko-KR.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
"add-to-bar-success": "{plugin}이(가) 바에 추가됨",
4848
"already-on-bar": "{plugin}이(가) 이미 바에 있습니다",
4949
"version-prefix": "v",
50+
"version-display": "v{version}",
51+
"version-update": "v{from} → v{to}",
5052
"separator": ""
5153
},
5254
"settings": {

0 commit comments

Comments
 (0)