Ensure i18n is used with double quotes and add CI check

Apparently i18n doesn't support string literals with single quotes as
parameters. Fix occurrences of this and add a CI check to ensure this
won't happen in the future.
This commit is contained in:
Devin Lin 2025-08-10 14:52:25 -04:00
parent 749c0de5d5
commit c76e19037c
11 changed files with 28 additions and 27 deletions

View file

@ -10,6 +10,7 @@ include:
- /gitlab-templates/alpine-qt6.yml - /gitlab-templates/alpine-qt6.yml
- /gitlab-templates/xml-lint.yml - /gitlab-templates/xml-lint.yml
- /gitlab-templates/yaml-lint.yml - /gitlab-templates/yaml-lint.yml
- /gitlab-templates/qml-lint.yml
posix-script-compliance: posix-script-compliance:
image: image:

View file

@ -374,7 +374,7 @@ Item {
PC3.ToolTip { PC3.ToolTip {
visible: widgetDelegate.editMode && pressed visible: widgetDelegate.editMode && pressed
text: i18n('Release to configure, drag to move') text: i18n("Release to configure, drag to move")
} }
WidgetDelegateConfig { WidgetDelegateConfig {

View file

@ -116,7 +116,7 @@ Folio.WidgetContainer {
visible: root.widget && !root.widget.visualApplet visible: root.widget && !root.widget.visualApplet
color: 'white' color: 'white'
wrapMode: Text.Wrap wrapMode: Text.Wrap
text: i18n('This widget was not found.') text: i18n("This widget was not found.")
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
anchors.left: parent.left anchors.left: parent.left
@ -134,7 +134,7 @@ Folio.WidgetContainer {
PC3.Button { PC3.Button {
id: configurationRequiredButton id: configurationRequiredButton
anchors.centerIn: parent anchors.centerIn: parent
text: i18n('Configure…') text: i18n("Configure…")
icon.name: 'configure' icon.name: 'configure'
visible: root.widget && root.widget.applet && root.widget.applet.configurationRequired visible: root.widget && root.widget.applet && root.widget.applet.configurationRequired
onClicked: root.widget.applet.internalAction('configure').trigger(); onClicked: root.widget.applet.internalAction('configure').trigger();

View file

@ -192,7 +192,7 @@ Item {
PC3.Button { PC3.Button {
id: button id: button
icon.name: 'settings-configure' icon.name: 'settings-configure'
text: i18n('Options') text: i18n("Options")
display: (resizeFrame.handleContainer.width > Kirigami.Units.gridUnit * 7) ? PC3.Button.TextBesideIcon : PC3.Button.IconOnly display: (resizeFrame.handleContainer.width > Kirigami.Units.gridUnit * 7) ? PC3.Button.TextBesideIcon : PC3.Button.IconOnly
readonly property var handleContainer: resizeFrame.handleContainer readonly property var handleContainer: resizeFrame.handleContainer
@ -206,7 +206,7 @@ Item {
id: contextMenuDialog id: contextMenuDialog
preferredWidth: Kirigami.Units.gridUnit * 20 preferredWidth: Kirigami.Units.gridUnit * 20
padding: 0 padding: 0
title: i18n('Widget Options') title: i18n("Widget Options")
// workaround: remove background so that it doesn't remain if the widget is deleted (and this is de-initialized without closing) // workaround: remove background so that it doesn't remain if the widget is deleted (and this is de-initialized without closing)
QQC2.Overlay.modal: null QQC2.Overlay.modal: null
@ -246,14 +246,14 @@ Item {
Kirigami.Action { Kirigami.Action {
id: removeDelegateAction id: removeDelegateAction
icon.name: 'edit-delete-remove' icon.name: 'edit-delete-remove'
text: i18n('Remove widget') text: i18n("Remove widget")
onTriggered: root.removeRequested() onTriggered: root.removeRequested()
} }
Kirigami.Action { Kirigami.Action {
id: configureAppletAction id: configureAppletAction
icon.name: 'settings-configure' icon.name: 'settings-configure'
text: i18n('Configure widget') text: i18n("Configure widget")
onTriggered: root.widget.applet.internalAction('configure').trigger(); onTriggered: root.widget.applet.internalAction('configure').trigger();
} }
} }

View file

@ -31,8 +31,8 @@ Loader {
sourceComponent: Kirigami.PromptDialog { sourceComponent: Kirigami.PromptDialog {
id: menu id: menu
title: i18n('Confirm Folder Deletion') title: i18n("Confirm Folder Deletion")
subtitle: i18n('Are you sure you want to delete this folder?') subtitle: i18n("Are you sure you want to delete this folder?")
standardButtons: Kirigami.Dialog.Yes | Kirigami.Dialog.Cancel standardButtons: Kirigami.Dialog.Yes | Kirigami.Dialog.Cancel
onAccepted: root.accepted() onAccepted: root.accepted()

View file

@ -79,7 +79,7 @@ Item {
QQC2.Label { QQC2.Label {
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
text: i18n('Wallpapers') text: i18n("Wallpapers")
font.bold: true font.bold: true
} }
} }
@ -107,7 +107,7 @@ Item {
QQC2.Label { QQC2.Label {
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
text: i18n('Settings') text: i18n("Settings")
font.bold: true font.bold: true
} }
} }
@ -136,7 +136,7 @@ Item {
QQC2.Label { QQC2.Label {
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
text: i18n('Widgets') text: i18n("Widgets")
font.bold: true font.bold: true
} }
} }

View file

@ -102,7 +102,7 @@ Window {
anchors.centerIn: parent anchors.centerIn: parent
implicitHeight: folio.HomeScreenState.pageCellHeight implicitHeight: folio.HomeScreenState.pageCellHeight
implicitWidth: folio.HomeScreenState.pageCellWidth implicitWidth: folio.HomeScreenState.pageCellWidth
name: i18n('Application') name: i18n("Application")
contentItem: DelegateAppIcon { contentItem: DelegateAppIcon {
height: root.folio.FolioSettings.delegateIconSize height: root.folio.FolioSettings.delegateIconSize
@ -254,7 +254,7 @@ Window {
FormCard.FormCard { FormCard.FormCard {
FormCard.FormSwitchDelegate { FormCard.FormSwitchDelegate {
text: i18n('Show background') text: i18n("Show background")
checked: folio.FolioSettings.showFavouritesBarBackground checked: folio.FolioSettings.showFavouritesBarBackground
onCheckedChanged: { onCheckedChanged: {
if (checked !== folio.FolioSettings.showFavouritesBarBackground) { if (checked !== folio.FolioSettings.showFavouritesBarBackground) {
@ -307,7 +307,7 @@ Window {
FormCard.FormButtonDelegate { FormCard.FormButtonDelegate {
id: exportSettings id: exportSettings
text: i18n('Export layout') text: i18n("Export layout")
icon.name: 'document-export' icon.name: 'document-export'
onClicked: exportFileDialog.open() onClicked: exportFileDialog.open()
} }
@ -316,7 +316,7 @@ Window {
FormCard.FormButtonDelegate { FormCard.FormButtonDelegate {
id: importSettings id: importSettings
text: i18n('Import layout') text: i18n("Import layout")
icon.name: 'document-import' icon.name: 'document-import'
onClicked: importFileDialog.open() onClicked: importFileDialog.open()
} }

View file

@ -68,7 +68,7 @@ Item {
QQC2.Label { QQC2.Label {
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
text: i18n('Wallpapers') text: i18n("Wallpapers")
font.bold: true font.bold: true
} }
} }
@ -96,7 +96,7 @@ Item {
QQC2.Label { QQC2.Label {
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
text: i18n('Settings') text: i18n("Settings")
font.bold: true font.bold: true
} }
} }

View file

@ -75,21 +75,21 @@ FormCard.AbstractFormDelegate {
} }
Controls.ToolButton { Controls.ToolButton {
icon.name: "network-connect" icon.name: "network-connect"
text: i18n('Connect') text: i18n("Connect")
visible: ConnectionState != PlasmaNM.Enums.Activated && root.editMode visible: ConnectionState != PlasmaNM.Enums.Activated && root.editMode
display: Controls.ToolButton.IconOnly display: Controls.ToolButton.IconOnly
onClicked: changeState() onClicked: changeState()
} }
Controls.ToolButton { Controls.ToolButton {
icon.name: "network-disconnect" icon.name: "network-disconnect"
text: i18n('Disconnect') text: i18n("Disconnect")
visible: ConnectionState == PlasmaNM.Enums.Activated && root.editMode visible: ConnectionState == PlasmaNM.Enums.Activated && root.editMode
display: Controls.ToolButton.IconOnly display: Controls.ToolButton.IconOnly
onClicked: handler.deactivateConnection(ConnectionPath, DevicePath) onClicked: handler.deactivateConnection(ConnectionPath, DevicePath)
} }
Controls.ToolButton { Controls.ToolButton {
icon.name: "configure" icon.name: "configure"
text: i18n('Configure') text: i18n("Configure")
visible: (Uuid != "") && root.editMode visible: (Uuid != "") && root.editMode
display: Controls.ToolButton.IconOnly display: Controls.ToolButton.IconOnly
onClicked: { onClicked: {
@ -98,7 +98,7 @@ FormCard.AbstractFormDelegate {
} }
Controls.ToolButton { Controls.ToolButton {
icon.name: "entry-delete" icon.name: "entry-delete"
text: i18n('Delete') text: i18n("Delete")
visible: (Uuid != "") && root.editMode visible: (Uuid != "") && root.editMode
display: Controls.ToolButton.IconOnly display: Controls.ToolButton.IconOnly
onClicked: handler.removeConnection(ConnectionPath) onClicked: handler.removeConnection(ConnectionPath)

View file

@ -25,7 +25,7 @@ ColumnLayout {
description: AIP.WaydroidState.ipAddress description: AIP.WaydroidState.ipAddress
trailing: PC3.Button { trailing: PC3.Button {
visible: AIP.WaydroidState.ipAddress !== "" visible: AIP.WaydroidState.ipAddress !== ""
text: i18n('Copy') text: i18n("Copy")
icon.name: 'edit-copy-symbolic' icon.name: 'edit-copy-symbolic'
onClicked: AIP.WaydroidState.copyToClipboard(AIP.WaydroidState.ipAddress) onClicked: AIP.WaydroidState.copyToClipboard(AIP.WaydroidState.ipAddress)
} }
@ -62,7 +62,7 @@ ColumnLayout {
title: i18nc("@title:window", "Confirm Waydroid Reset") title: i18nc("@title:window", "Confirm Waydroid Reset")
subtitle: i18n("Are you sure you want to reset Waydroid ? This is a destructive action, and will wipe all user data.") subtitle: i18n("Are you sure you want to reset Waydroid ? This is a destructive action, and will wipe all user data.")
standardButtons: Kirigami.Dialog.Ok | Kirigami.Dialog.Cancel standardButtons: Kirigami.Dialog.Ok | Kirigami.Dialog.Cancel
onAccepted: AIP.WaydroidState.resetWaydroidQml() onAccepted: AIP.WaydroidState.resetWaydroidQml()
} }
@ -141,4 +141,4 @@ ColumnLayout {
} }
} }
} }
} }

View file

@ -20,7 +20,7 @@ SceneEffect {
ShortcutHandler { ShortcutHandler {
name: 'Mobile Task Switcher' name: 'Mobile Task Switcher'
text: i18n('Toggle Mobile Task Switcher') text: i18n("Toggle Mobile Task Switcher")
sequence: 'Meta+C' sequence: 'Meta+C'
onActivated: taskSwitcherState.toggle() onActivated: taskSwitcherState.toggle()
@ -36,4 +36,4 @@ SceneEffect {
taskSwitcherState.init(root); taskSwitcherState.init(root);
} }
} }
} }