Quickshell qstr seems not to be working, trying to implement custom translation

Add Chinese (zh_CN) translations for Quickshell interface and settings
This commit is contained in:
月月
2025-06-17 12:29:21 +08:00
parent 54dfad1d5b
commit b32734b9f5
50 changed files with 1324 additions and 187 deletions
@@ -5,6 +5,7 @@ import "./calendar"
import "./notifications"
import "./todo"
import "./volumeMixer"
import "root:/services/"
import Qt5Compat.GraphicalEffects
import QtQuick
import QtQuick.Controls
@@ -17,7 +18,7 @@ Rectangle {
color: Appearance.colors.colLayer1
property int selectedTab: 0
property var tabButtonList: [{"icon": "notifications", "name": qsTr("Notifications")}, {"icon": "volume_up", "name": qsTr("Volume mixer")}]
property var tabButtonList: [{"icon": "notifications", "name": Translation.tr("Notifications")}, {"icon": "volume_up", "name": Translation.tr("Volume mixer")}]
Keys.onPressed: (event) => {
if (event.key === Qt.Key_PageDown || event.key === Qt.Key_PageUp) {
@@ -4,6 +4,7 @@ import "root:/modules/common"
import "root:/modules/common/widgets"
import "root:/modules/common/functions/string_utils.js" as StringUtils
import "./quickToggles/"
import "root:/services/"
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
@@ -119,7 +120,7 @@ Scope {
StyledText {
font.pixelSize: Appearance.font.pixelSize.normal
color: Appearance.colors.colOnLayer0
text: StringUtils.format(qsTr("Uptime: {0}"), DateTime.uptime)
text: StringUtils.format(Translation.tr("Uptime: {0}"), DateTime.uptime)
textFormat: Text.MarkdownText
}
@@ -136,7 +137,7 @@ Scope {
Quickshell.reload(true)
}
StyledToolTip {
content: qsTr("Reload Hyprland & Quickshell")
content: Translation.tr("Reload Hyprland & Quickshell")
}
}
QuickToggleButton {
@@ -147,7 +148,7 @@ Scope {
Hyprland.dispatch(`global quickshell:sidebarRightClose`)
}
StyledToolTip {
content: qsTr("Plasma Settings")
content: Translation.tr("Plasma Settings")
}
}
QuickToggleButton {
@@ -157,7 +158,7 @@ Scope {
Hyprland.dispatch("global quickshell:sessionOpen")
}
StyledToolTip {
content: qsTr("Session")
content: Translation.tr("Session")
}
}
}
@@ -218,7 +219,7 @@ Scope {
GlobalShortcut {
name: "sidebarRightToggle"
description: qsTr("Toggles right sidebar on press")
description: Translation.tr("Toggles right sidebar on press")
onPressed: {
GlobalStates.sidebarRightOpen = !GlobalStates.sidebarRightOpen;
@@ -227,7 +228,7 @@ Scope {
}
GlobalShortcut {
name: "sidebarRightOpen"
description: qsTr("Opens right sidebar on press")
description: Translation.tr("Opens right sidebar on press")
onPressed: {
GlobalStates.sidebarRightOpen = true;
@@ -236,7 +237,7 @@ Scope {
}
GlobalShortcut {
name: "sidebarRightClose"
description: qsTr("Closes right sidebar on press")
description: Translation.tr("Closes right sidebar on press")
onPressed: {
GlobalStates.sidebarRightOpen = false;
@@ -48,7 +48,7 @@ Item {
CalendarHeaderButton {
clip: true
buttonText: `${monthShift != 0 ? "• " : ""}${viewingDate.toLocaleDateString(Qt.locale(), "MMMM yyyy")}`
tooltipText: (monthShift === 0) ? "" : qsTr("Jump to current month")
tooltipText: (monthShift === 0) ? "" : Translation.tr("Jump to current month")
onClicked: {
monthShift = 0;
}
@@ -1,6 +1,7 @@
import "root:/modules/common"
import "root:/modules/common/widgets"
import "root:/services"
import "root:/services/"
import Qt5Compat.GraphicalEffects
import QtQuick
import QtQuick.Controls
@@ -61,7 +62,7 @@ Item {
font.pixelSize: Appearance.font.pixelSize.normal
color: Appearance.m3colors.m3outline
horizontalAlignment: Text.AlignHCenter
text: qsTr("No notifications")
text: Translation.tr("No notifications")
}
}
}
@@ -101,7 +102,7 @@ Item {
NotificationStatusButton {
buttonIcon: "notifications_paused"
buttonText: qsTr("Silent")
buttonText: Translation.tr("Silent")
toggled: Notifications.silent
onClicked: () => {
Notifications.silent = !Notifications.silent;
@@ -109,7 +110,7 @@ Item {
}
NotificationStatusButton {
buttonIcon: "clear_all"
buttonText: qsTr("Clear")
buttonText: Translation.tr("Clear")
onClicked: () => {
Notifications.discardAllNotifications()
}
@@ -28,9 +28,9 @@ QuickToggleButton {
}
}
StyledToolTip {
content: StringUtils.format(qsTr("{0} | Right-click to configure"),
content: StringUtils.format(Translation.tr("{0} | Right-click to configure"),
(Bluetooth.bluetoothEnabled && Bluetooth.bluetoothDeviceName.length > 0) ?
Bluetooth.bluetoothDeviceName : qsTr("Bluetooth"))
Bluetooth.bluetoothDeviceName : Translation.tr("Bluetooth"))
}
}
@@ -1,6 +1,7 @@
import "root:/modules/common"
import "root:/modules/common/widgets"
import "../"
import "root:/services/"
import Quickshell
import Quickshell.Io
import Quickshell.Hyprland
@@ -21,6 +22,6 @@ QuickToggleButton {
}
StyledToolTip {
content: qsTr("Game mode")
content: Translation.tr("Game mode")
}
}
@@ -1,6 +1,7 @@
import "root:/modules/common"
import "root:/modules/common/widgets"
import "../"
import "root:/services/"
import Quickshell.Io
import Quickshell
import Quickshell.Hyprland
@@ -27,6 +28,6 @@ QuickToggleButton {
}
}
StyledToolTip {
content: qsTr("Keep system awake")
content: Translation.tr("Keep system awake")
}
}
@@ -3,6 +3,7 @@ import "root:/modules/common"
import "root:/modules/common/widgets"
import "root:/modules/common/functions/string_utils.js" as StringUtils
import "../"
import "root:/services/"
import QtQuick
import Quickshell
import Quickshell.Io
@@ -28,6 +29,6 @@ QuickToggleButton {
}
}
StyledToolTip {
content: StringUtils.format(qsTr("{0} | Right-click to configure"), Network.networkName)
content: StringUtils.format(Translation.tr("{0} | Right-click to configure"), Network.networkName)
}
}
@@ -1,6 +1,7 @@
import "root:/modules/common"
import "root:/modules/common/widgets"
import "../"
import "root:/services/"
import Quickshell.Io
import Quickshell
@@ -37,6 +38,6 @@ QuickToggleButton {
}
}
StyledToolTip {
content: qsTr("Night Light")
content: Translation.tr("Night Light")
}
}
@@ -10,7 +10,7 @@ import QtQuick.Layouts
Item {
id: root
property int currentTab: 0
property var tabButtonList: [{"icon": "checklist", "name": qsTr("Unfinished")}, {"name": qsTr("Done"), "icon": "check_circle"}]
property var tabButtonList: [{"icon": "checklist", "name": Translation.tr("Unfinished")}, {"name": Translation.tr("Done"), "icon": "check_circle"}]
property bool showAddDialog: false
property int dialogMargins: 20
property int fabSize: 48
@@ -134,7 +134,7 @@ Item {
TaskList {
listBottomPadding: root.fabSize + root.fabMargins * 2
emptyPlaceholderIcon: "check_circle"
emptyPlaceholderText: qsTr("Nothing here!")
emptyPlaceholderText: Translation.tr("Nothing here!")
taskList: Todo.list
.map(function(item, i) { return Object.assign({}, item, {originalIndex: i}); })
.filter(function(item) { return !item.done; })
@@ -142,7 +142,7 @@ Item {
TaskList {
listBottomPadding: root.fabSize + root.fabMargins * 2
emptyPlaceholderIcon: "checklist"
emptyPlaceholderText: qsTr("Finished tasks will go here")
emptyPlaceholderText: Translation.tr("Finished tasks will go here")
taskList: Todo.list
.map(function(item, i) { return Object.assign({}, item, {originalIndex: i}); })
.filter(function(item) { return item.done; })
@@ -252,7 +252,7 @@ Item {
Layout.alignment: Qt.AlignLeft
color: Appearance.m3colors.m3onSurface
font.pixelSize: Appearance.font.pixelSize.larger
text: qsTr("Add task")
text: Translation.tr("Add task")
}
TextField {
@@ -265,7 +265,7 @@ Item {
renderType: Text.NativeRendering
selectedTextColor: Appearance.m3colors.m3onSecondaryContainer
selectionColor: Appearance.colors.colSecondaryContainer
placeholderText: qsTr("Task description")
placeholderText: Translation.tr("Task description")
placeholderTextColor: Appearance.m3colors.m3outline
focus: root.showAddDialog
onAccepted: dialog.addTask()
@@ -293,11 +293,11 @@ Item {
spacing: 5
DialogButton {
buttonText: qsTr("Cancel")
buttonText: Translation.tr("Cancel")
onClicked: root.showAddDialog = false
}
DialogButton {
buttonText: qsTr("Add")
buttonText: Translation.tr("Add")
enabled: todoInput.text.length > 0
onClicked: dialog.addTask()
}
@@ -1,6 +1,7 @@
import "root:/modules/common"
import "root:/modules/common/widgets"
import "root:/services"
import "root:/services/"
import Qt5Compat.GraphicalEffects
import QtQuick
import QtQuick.Controls
@@ -40,14 +41,14 @@ GroupButton {
Layout.fillWidth: true
elide: Text.ElideRight
font.pixelSize: Appearance.font.pixelSize.normal
text: input ? qsTr("Input") : qsTr("Output")
text: input ? Translation.tr("Input") : Translation.tr("Output")
color: Appearance.colors.colOnLayer2
}
StyledText {
Layout.fillWidth: true
elide: Text.ElideRight
font.pixelSize: Appearance.font.pixelSize.smaller
text: (input ? Pipewire.defaultAudioSource?.description : Pipewire.defaultAudioSink?.description) ?? qsTr("Unknown")
text: (input ? Pipewire.defaultAudioSource?.description : Pipewire.defaultAudioSink?.description) ?? Translation.tr("Unknown")
color: Appearance.m3colors.m3outline
}
}
@@ -1,6 +1,7 @@
import "root:/modules/common"
import "root:/modules/common/widgets"
import "root:/services"
import "root:/services/"
import Qt5Compat.GraphicalEffects
import QtQuick
import QtQuick.Controls
@@ -108,7 +109,7 @@ Item {
font.pixelSize: Appearance.font.pixelSize.normal
color: Appearance.m3colors.m3outline
horizontalAlignment: Text.AlignHCenter
text: qsTr("No audio source")
text: Translation.tr("No audio source")
}
}
}
@@ -262,13 +263,13 @@ Item {
Layout.alignment: Qt.AlignRight
DialogButton {
buttonText: qsTr("Cancel")
buttonText: Translation.tr("Cancel")
onClicked: {
root.showDeviceSelector = false
}
}
DialogButton {
buttonText: qsTr("OK")
buttonText: Translation.tr("OK")
onClicked: {
root.showDeviceSelector = false
if (root.selectedDevice) {