From 5460c20ac3618fe2864e121dbcb4b29b82df7466 Mon Sep 17 00:00:00 2001 From: bbedward Date: Mon, 6 Oct 2025 16:00:50 -0400 Subject: [PATCH] Localization framework --- Modals/Clipboard/ClipboardContent.qml | 2 +- Modals/Clipboard/ClipboardKeyboardHints.qml | 2 +- Modals/DankColorPickerModal.qml | 16 +- Modals/FileBrowser/FileBrowserModal.qml | 4 +- Modals/FileBrowser/FileInfo.qml | 2 +- Modals/NetworkInfoModal.qml | 4 +- Modals/PowerMenuModal.qml | 32 +- Modals/ProcessListModal.qml | 4 +- Modals/Settings/PowerSettings.qml | 16 +- Modals/Settings/SettingsModal.qml | 2 +- Modals/Spotlight/SpotlightContextMenu.qml | 2 +- Modals/WifiPasswordModal.qml | 8 +- Modules/AppDrawer/AppDrawerPopout.qml | 4 +- .../BuiltinPlugins/VpnWidget.qml | 6 +- .../ControlCenter/Components/EditControls.qml | 8 +- .../Details/AudioInputDetail.qml | 2 +- .../Details/AudioOutputDetail.qml | 2 +- .../ControlCenter/Details/BatteryDetail.qml | 6 +- .../Details/BluetoothCodecSelector.qml | 2 +- .../ControlCenter/Details/BluetoothDetail.qml | 8 +- .../ControlCenter/Details/NetworkDetail.qml | 10 +- Modules/ControlCenter/PowerMenu.qml | 10 +- Modules/DankBar/Popouts/BatteryPopout.qml | 6 +- Modules/DankBar/Popouts/VpnPopout.qml | 8 +- Modules/DankBar/Widgets/CpuMonitor.qml | 2 +- Modules/DankBar/Widgets/CpuTemperature.qml | 2 +- Modules/DankBar/Widgets/DiskUsage.qml | 2 +- Modules/DankBar/Widgets/GpuTemperature.qml | 2 +- Modules/DankBar/Widgets/RamMonitor.qml | 2 +- Modules/DankBar/Widgets/RunningApps.qml | 2 +- Modules/DankBar/Widgets/SystemTrayBar.qml | 2 +- Modules/DankDash/DankDashPopout.qml | 8 +- Modules/DankDash/MediaPlayerTab.qml | 6 +- .../DankDash/Overview/MediaOverviewCard.qml | 2 +- .../DankDash/Overview/WeatherOverviewCard.qml | 2 +- Modules/DankDash/WeatherTab.qml | 18 +- Modules/Dock/DockContextMenu.qml | 2 +- Modules/Greetd/GreeterContent.qml | 4 +- Modules/Lock/Keyboard.qml | 2 +- Modules/Lock/LockScreenContent.qml | 4 +- Modules/Notepad/NotepadSettings.qml | 16 +- .../Notifications/Center/NotificationCard.qml | 4 +- .../Center/NotificationEmptyState.qml | 2 +- .../Center/NotificationHeader.qml | 6 +- .../Center/NotificationKeyboardHints.qml | 2 +- .../Center/NotificationSettings.qml | 16 +- .../Notifications/Popup/NotificationPopup.qml | 2 +- Modules/Plugins/ListSetting.qml | 4 +- Modules/Plugins/ListSettingWithInput.qml | 8 +- Modules/ProcessList/PerformanceTab.qml | 8 +- Modules/ProcessList/ProcessContextMenu.qml | 8 +- Modules/ProcessList/ProcessListView.qml | 2 +- Modules/ProcessList/SystemOverview.qml | 8 +- Modules/ProcessList/SystemTab.qml | 16 +- Modules/Settings/AboutTab.qml | 22 +- Modules/Settings/DankBarTab.qml | 30 +- Modules/Settings/DisplaysTab.qml | 10 +- Modules/Settings/DockTab.qml | 24 +- Modules/Settings/LauncherTab.qml | 6 +- Modules/Settings/PersonalizationTab.qml | 100 +- Modules/Settings/PluginsTab.qml | 46 +- Modules/Settings/ThemeColorsTab.qml | 20 +- Modules/Settings/TimeTab.qml | 38 +- Modules/Settings/WeatherTab.qml | 26 +- Modules/Settings/WidgetSelectionPopup.qml | 4 +- Modules/Settings/WidgetTweaksTab.qml | 34 +- Modules/Settings/WidgetsTabSection.qml | 10 +- Modules/SystemUpdatePopout.qml | 6 +- Modules/Toast.qml | 2 +- Services/AppSearchService.qml | 52 +- Services/NotepadStorageService.qml | 6 +- Widgets/DankDropdown.qml | 2 +- Widgets/DankIconPicker.qml | 22 +- Widgets/DankLocationSearch.qml | 2 +- translations/README.md | 64 + translations/WORKFLOW.md | 185 ++ translations/en.json | 2132 ++++++++++++++ translations/extract_translations.py | 92 + translations/template.json | 2487 +++++++++++++++++ 79 files changed, 5356 insertions(+), 396 deletions(-) create mode 100644 translations/README.md create mode 100644 translations/WORKFLOW.md create mode 100644 translations/en.json create mode 100755 translations/extract_translations.py create mode 100644 translations/template.json diff --git a/Modals/Clipboard/ClipboardContent.qml b/Modals/Clipboard/ClipboardContent.qml index bc299c33..348762d1 100644 --- a/Modals/Clipboard/ClipboardContent.qml +++ b/Modals/Clipboard/ClipboardContent.qml @@ -116,7 +116,7 @@ Item { } StyledText { - text: "No clipboard entries found" + text: qsTr("No clipboard entries found") anchors.centerIn: parent font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText diff --git a/Modals/Clipboard/ClipboardKeyboardHints.qml b/Modals/Clipboard/ClipboardKeyboardHints.qml index a7aeb8a5..21062f79 100644 --- a/Modals/Clipboard/ClipboardKeyboardHints.qml +++ b/Modals/Clipboard/ClipboardKeyboardHints.qml @@ -26,7 +26,7 @@ Rectangle { } StyledText { - text: "Shift+Del: Clear All • Esc: Close" + text: qsTr("Shift+Del: Clear All • Esc: Close") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText anchors.horizontalCenter: parent.horizontalCenter diff --git a/Modals/DankColorPickerModal.qml b/Modals/DankColorPickerModal.qml index 4e84cf50..7ce1f3ba 100644 --- a/Modals/DankColorPickerModal.qml +++ b/Modals/DankColorPickerModal.qml @@ -188,7 +188,7 @@ PanelWindow { } StyledText { - text: "Select a color from the palette or use custom sliders" + text: qsTr("Select a color from the palette or use custom sliders") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceTextMedium } @@ -346,7 +346,7 @@ PanelWindow { spacing: Theme.spacingS StyledText { - text: "Material Colors" + text: qsTr("Material Colors") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -394,7 +394,7 @@ PanelWindow { spacing: Theme.spacingXS StyledText { - text: "Recent Colors" + text: qsTr("Recent Colors") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -444,7 +444,7 @@ PanelWindow { spacing: Theme.spacingXS StyledText { - text: "Opacity" + text: qsTr("Opacity") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -480,7 +480,7 @@ PanelWindow { spacing: Theme.spacingS StyledText { - text: "Hex:" + text: qsTr("Hex:") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceTextMedium anchors.verticalCenter: parent.verticalCenter @@ -518,7 +518,7 @@ PanelWindow { DankButton { width: 80 buttonHeight: 36 - text: "Apply" + text: qsTr("Apply") backgroundColor: Theme.primary textColor: Theme.background anchors.verticalCenter: parent.verticalCenter @@ -545,7 +545,7 @@ PanelWindow { DankButton { width: 70 buttonHeight: 36 - text: "Cancel" + text: qsTr("Cancel") backgroundColor: "transparent" textColor: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter @@ -564,7 +564,7 @@ PanelWindow { DankButton { width: 70 buttonHeight: 36 - text: "Copy" + text: qsTr("Copy") backgroundColor: Theme.primary textColor: Theme.background anchors.verticalCenter: parent.verticalCenter diff --git a/Modals/FileBrowser/FileBrowserModal.qml b/Modals/FileBrowser/FileBrowserModal.qml index 0e5c5409..552db4e2 100644 --- a/Modals/FileBrowser/FileBrowserModal.qml +++ b/Modals/FileBrowser/FileBrowserModal.qml @@ -755,7 +755,7 @@ DankModal { width: parent.width - saveButton.width - Theme.spacingM height: 40 text: defaultFileName - placeholderText: "Enter filename..." + placeholderText: qsTr("Enter filename...") ignoreLeftRightKeys: false focus: saveMode topPadding: Theme.spacingS @@ -788,7 +788,7 @@ DankModal { StyledText { anchors.centerIn: parent - text: "Save" + text: qsTr("Save") color: fileNameInput.text.trim() !== "" ? Theme.primaryText : Theme.surfaceVariantText font.pixelSize: Theme.fontSizeMedium } diff --git a/Modals/FileBrowser/FileInfo.qml b/Modals/FileBrowser/FileInfo.qml index bcf7a6b9..d9a7df1a 100644 --- a/Modals/FileBrowser/FileInfo.qml +++ b/Modals/FileBrowser/FileInfo.qml @@ -134,7 +134,7 @@ Rectangle { } StyledText { - text: "File Information" + text: qsTr("File Information") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium diff --git a/Modals/NetworkInfoModal.qml b/Modals/NetworkInfoModal.qml index d780bb8e..a090e34b 100644 --- a/Modals/NetworkInfoModal.qml +++ b/Modals/NetworkInfoModal.qml @@ -56,7 +56,7 @@ DankModal { spacing: Theme.spacingXS StyledText { - text: "Network Information" + text: qsTr("Network Information") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -126,7 +126,7 @@ DankModal { id: closeText anchors.centerIn: parent - text: "Close" + text: qsTr("Close") font.pixelSize: Theme.fontSizeMedium color: Theme.background font.weight: Font.Medium diff --git a/Modals/PowerMenuModal.qml b/Modals/PowerMenuModal.qml index 5d3a1a6a..e9b90712 100644 --- a/Modals/PowerMenuModal.qml +++ b/Modals/PowerMenuModal.qml @@ -32,24 +32,24 @@ DankModal { close(); const actions = { "logout": { - "title": "Log Out", - "message": "Are you sure you want to log out?" + "title": qsTr("Log Out"), + "message": qsTr("Are you sure you want to log out?") }, "suspend": { - "title": "Suspend", - "message": "Are you sure you want to suspend the system?" + "title": qsTr("Suspend"), + "message": qsTr("Are you sure you want to suspend the system?") }, "hibernate": { - "title": "Hibernate", - "message": "Are you sure you want to hibernate the system?" + "title": qsTr("Hibernate"), + "message": qsTr("Are you sure you want to hibernate the system?") }, "reboot": { - "title": "Reboot", - "message": "Are you sure you want to reboot the system?" + "title": qsTr("Reboot"), + "message": qsTr("Are you sure you want to reboot the system?") }, "poweroff": { - "title": "Power Off", - "message": "Are you sure you want to power off the system?" + "title": qsTr("Power Off"), + "message": qsTr("Are you sure you want to power off the system?") } } const selected = actions[action] @@ -144,7 +144,7 @@ DankModal { width: parent.width StyledText { - text: "Power Options" + text: qsTr("Power Options") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -201,7 +201,7 @@ DankModal { } StyledText { - text: "Log Out" + text: qsTr("Log Out") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -254,7 +254,7 @@ DankModal { } StyledText { - text: "Suspend" + text: qsTr("Suspend") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -308,7 +308,7 @@ DankModal { } StyledText { - text: "Hibernate" + text: qsTr("Hibernate") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -362,7 +362,7 @@ DankModal { } StyledText { - text: "Reboot" + text: qsTr("Reboot") font.pixelSize: Theme.fontSizeMedium color: rebootArea.containsMouse ? Theme.warning : Theme.surfaceText font.weight: Font.Medium @@ -416,7 +416,7 @@ DankModal { } StyledText { - text: "Power Off" + text: qsTr("Power Off") font.pixelSize: Theme.fontSizeMedium color: powerOffArea.containsMouse ? Theme.error : Theme.surfaceText font.weight: Font.Medium diff --git a/Modals/ProcessListModal.qml b/Modals/ProcessListModal.qml index c490d7fc..20423cbc 100644 --- a/Modals/ProcessListModal.qml +++ b/Modals/ProcessListModal.qml @@ -123,7 +123,7 @@ DankModal { } StyledText { - text: "System Monitor Unavailable" + text: qsTr("System Monitor Unavailable") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Bold color: Theme.error @@ -154,7 +154,7 @@ DankModal { height: 40 StyledText { - text: "System Monitor" + text: qsTr("System Monitor") font.pixelSize: Theme.fontSizeLarge + 4 font.weight: Font.Bold color: Theme.surfaceText diff --git a/Modals/Settings/PowerSettings.qml b/Modals/Settings/PowerSettings.qml index 29102be0..76d7142b 100644 --- a/Modals/Settings/PowerSettings.qml +++ b/Modals/Settings/PowerSettings.qml @@ -19,7 +19,7 @@ Item { spacing: Theme.spacingXL StyledText { - text: "Battery not detected - only AC power settings available" + text: qsTr("Battery not detected - only AC power settings available") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText visible: !BatteryService.batteryAvailable @@ -51,7 +51,7 @@ Item { } StyledText { - text: "Idle Settings" + text: qsTr("Idle Settings") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -79,7 +79,7 @@ Item { property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"] property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800] - text: "Automatically lock after" + text: qsTr("Automatically lock after") options: timeoutOptions Connections { @@ -115,7 +115,7 @@ Item { property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"] property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800] - text: "Turn off monitors after" + text: qsTr("Turn off monitors after") options: timeoutOptions Connections { @@ -151,7 +151,7 @@ Item { property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"] property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800] - text: "Suspend system after" + text: qsTr("Suspend system after") options: timeoutOptions Connections { @@ -187,7 +187,7 @@ Item { property var timeoutOptions: ["Never", "1 minute", "2 minutes", "3 minutes", "5 minutes", "10 minutes", "15 minutes", "20 minutes", "30 minutes", "1 hour", "1 hour 30 minutes", "2 hours", "3 hours"] property var timeoutValues: [0, 60, 120, 180, 300, 600, 900, 1200, 1800, 3600, 5400, 7200, 10800] - text: "Hibernate system after" + text: qsTr("Hibernate system after") options: timeoutOptions visible: SessionService.hibernateSupported @@ -221,14 +221,14 @@ Item { DankToggle { width: parent.width - text: "Lock before suspend" + text: qsTr("Lock before suspend") description: "Automatically lock the screen when the system prepares to suspend" checked: SessionData.lockBeforeSuspend onToggled: checked => SessionData.setLockBeforeSuspend(checked) } StyledText { - text: "Idle monitoring not supported - requires newer Quickshell version" + text: qsTr("Idle monitoring not supported - requires newer Quickshell version") font.pixelSize: Theme.fontSizeSmall color: Theme.error anchors.horizontalCenter: parent.horizontalCenter diff --git a/Modals/Settings/SettingsModal.qml b/Modals/Settings/SettingsModal.qml index 2c88e7df..5e63c901 100644 --- a/Modals/Settings/SettingsModal.qml +++ b/Modals/Settings/SettingsModal.qml @@ -144,7 +144,7 @@ DankModal { } StyledText { - text: "Settings" + text: qsTr("Settings") font.pixelSize: Theme.fontSizeXLarge color: Theme.surfaceText font.weight: Font.Medium diff --git a/Modals/Spotlight/SpotlightContextMenu.qml b/Modals/Spotlight/SpotlightContextMenu.qml index ba170da4..944b60be 100644 --- a/Modals/Spotlight/SpotlightContextMenu.qml +++ b/Modals/Spotlight/SpotlightContextMenu.qml @@ -244,7 +244,7 @@ Rectangle { } StyledText { - text: "Launch" + text: qsTr("Launch") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal diff --git a/Modals/WifiPasswordModal.qml b/Modals/WifiPasswordModal.qml index 36e425d4..513c87e0 100644 --- a/Modals/WifiPasswordModal.qml +++ b/Modals/WifiPasswordModal.qml @@ -78,7 +78,7 @@ DankModal { spacing: Theme.spacingXS StyledText { - text: "Connect to Wi-Fi" + text: qsTr("Connect to Wi-Fi") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -201,7 +201,7 @@ DankModal { } StyledText { - text: "Show password" + text: qsTr("Show password") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter @@ -229,7 +229,7 @@ DankModal { id: cancelText anchors.centerIn: parent - text: "Cancel" + text: qsTr("Cancel") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -260,7 +260,7 @@ DankModal { id: connectText anchors.centerIn: parent - text: "Connect" + text: qsTr("Connect") font.pixelSize: Theme.fontSizeMedium color: Theme.background font.weight: Font.Medium diff --git a/Modules/AppDrawer/AppDrawerPopout.qml b/Modules/AppDrawer/AppDrawerPopout.qml index 4c2a475f..34a67854 100644 --- a/Modules/AppDrawer/AppDrawerPopout.qml +++ b/Modules/AppDrawer/AppDrawerPopout.qml @@ -186,7 +186,7 @@ DankPopout { StyledText { anchors.verticalCenter: parent.verticalCenter - text: "Applications" + text: qsTr("Applications") font.pixelSize: Theme.fontSizeLarge + 4 font.weight: Font.Bold color: Theme.surfaceText @@ -888,7 +888,7 @@ DankPopout { } StyledText { - text: "Launch" + text: qsTr("Launch") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal diff --git a/Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml b/Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml index 0abd87ce..13c9a62f 100644 --- a/Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml +++ b/Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml @@ -82,7 +82,7 @@ PluginComponent { } StyledText { - text: "Disconnect" + text: qsTr("Disconnect") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -133,14 +133,14 @@ PluginComponent { } StyledText { - text: "No VPN profiles found" + text: qsTr("No VPN profiles found") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText anchors.horizontalCenter: parent.horizontalCenter } StyledText { - text: "Add a VPN in NetworkManager" + text: qsTr("Add a VPN in NetworkManager") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText anchors.horizontalCenter: parent.horizontalCenter diff --git a/Modules/ControlCenter/Components/EditControls.qml b/Modules/ControlCenter/Components/EditControls.qml index b81034a0..355a942f 100644 --- a/Modules/ControlCenter/Components/EditControls.qml +++ b/Modules/ControlCenter/Components/EditControls.qml @@ -55,7 +55,7 @@ Row { } Typography { - text: "Add Widget" + text: qsTr("Add Widget") style: Typography.Style.Subtitle color: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter @@ -155,7 +155,7 @@ Row { } Typography { - text: "Add Widget" + text: qsTr("Add Widget") style: Typography.Style.Button color: Theme.primary anchors.verticalCenter: parent.verticalCenter @@ -189,7 +189,7 @@ Row { } Typography { - text: "Defaults" + text: qsTr("Defaults") style: Typography.Style.Button color: Theme.warning anchors.verticalCenter: parent.verticalCenter @@ -223,7 +223,7 @@ Row { } Typography { - text: "Reset" + text: qsTr("Reset") style: Typography.Style.Button color: Theme.error anchors.verticalCenter: parent.verticalCenter diff --git a/Modules/ControlCenter/Details/AudioInputDetail.qml b/Modules/ControlCenter/Details/AudioInputDetail.qml index b2208196..d2c06122 100644 --- a/Modules/ControlCenter/Details/AudioInputDetail.qml +++ b/Modules/ControlCenter/Details/AudioInputDetail.qml @@ -30,7 +30,7 @@ Rectangle { StyledText { id: headerText - text: "Input Devices" + text: qsTr("Input Devices") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium diff --git a/Modules/ControlCenter/Details/AudioOutputDetail.qml b/Modules/ControlCenter/Details/AudioOutputDetail.qml index 154d55df..959c5467 100644 --- a/Modules/ControlCenter/Details/AudioOutputDetail.qml +++ b/Modules/ControlCenter/Details/AudioOutputDetail.qml @@ -30,7 +30,7 @@ Rectangle { StyledText { id: headerText - text: "Audio Devices" + text: qsTr("Audio Devices") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium diff --git a/Modules/ControlCenter/Details/BatteryDetail.qml b/Modules/ControlCenter/Details/BatteryDetail.qml index fecef5e5..5972c9d4 100644 --- a/Modules/ControlCenter/Details/BatteryDetail.qml +++ b/Modules/ControlCenter/Details/BatteryDetail.qml @@ -133,7 +133,7 @@ Rectangle { spacing: Theme.spacingXS StyledText { - text: "Health" + text: qsTr("Health") font.pixelSize: Theme.fontSizeSmall color: Theme.primary font.weight: Font.Medium @@ -168,7 +168,7 @@ Rectangle { spacing: Theme.spacingXS StyledText { - text: "Capacity" + text: qsTr("Capacity") font.pixelSize: Theme.fontSizeSmall color: Theme.primary font.weight: Font.Medium @@ -237,7 +237,7 @@ Rectangle { width: parent.width - Theme.iconSize - Theme.spacingM StyledText { - text: "Power Profile Degradation" + text: qsTr("Power Profile Degradation") font.pixelSize: Theme.fontSizeLarge color: Theme.error font.weight: Font.Medium diff --git a/Modules/ControlCenter/Details/BluetoothCodecSelector.qml b/Modules/ControlCenter/Details/BluetoothCodecSelector.qml index 419fd651..dc850723 100644 --- a/Modules/ControlCenter/Details/BluetoothCodecSelector.qml +++ b/Modules/ControlCenter/Details/BluetoothCodecSelector.qml @@ -170,7 +170,7 @@ Item { } StyledText { - text: "Audio Codec Selection" + text: qsTr("Audio Codec Selection") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceTextMedium } diff --git a/Modules/ControlCenter/Details/BluetoothDetail.qml b/Modules/ControlCenter/Details/BluetoothDetail.qml index f676e0c7..69311686 100644 --- a/Modules/ControlCenter/Details/BluetoothDetail.qml +++ b/Modules/ControlCenter/Details/BluetoothDetail.qml @@ -39,7 +39,7 @@ Rectangle { StyledText { id: headerText - text: "Bluetooth Settings" + text: qsTr("Bluetooth Settings") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -422,7 +422,7 @@ Rectangle { StyledText { anchors.centerIn: parent - text: "No Bluetooth adapter found" + text: qsTr("No Bluetooth adapter found") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText } @@ -473,7 +473,7 @@ Rectangle { } MenuItem { - text: "Audio Codec" + text: qsTr("Audio Codec") height: bluetoothContextMenu.currentDevice && BluetoothService.isAudioDevice(bluetoothContextMenu.currentDevice) && bluetoothContextMenu.currentDevice.connected ? 32 : 0 visible: bluetoothContextMenu.currentDevice && BluetoothService.isAudioDevice(bluetoothContextMenu.currentDevice) && bluetoothContextMenu.currentDevice.connected @@ -498,7 +498,7 @@ Rectangle { } MenuItem { - text: "Forget Device" + text: qsTr("Forget Device") height: 32 contentItem: StyledText { diff --git a/Modules/ControlCenter/Details/NetworkDetail.qml b/Modules/ControlCenter/Details/NetworkDetail.qml index 0c3618d4..d9e5fe08 100644 --- a/Modules/ControlCenter/Details/NetworkDetail.qml +++ b/Modules/ControlCenter/Details/NetworkDetail.qml @@ -44,7 +44,7 @@ Rectangle { StyledText { id: headerText - text: "Network Settings" + text: qsTr("Network Settings") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -136,7 +136,7 @@ Rectangle { StyledText { anchors.horizontalCenter: parent.horizontalCenter - text: "WiFi is off" + text: qsTr("WiFi is off") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -154,7 +154,7 @@ Rectangle { StyledText { anchors.centerIn: parent - text: "Enable WiFi" + text: qsTr("Enable WiFi") color: Theme.primary font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium @@ -380,7 +380,7 @@ Rectangle { } MenuItem { - text: "Network Info" + text: qsTr("Network Info") height: 32 contentItem: StyledText { @@ -403,7 +403,7 @@ Rectangle { } MenuItem { - text: "Forget Network" + text: qsTr("Forget Network") height: networkContextMenu.currentSaved || networkContextMenu.currentConnected ? 32 : 0 visible: networkContextMenu.currentSaved || networkContextMenu.currentConnected diff --git a/Modules/ControlCenter/PowerMenu.qml b/Modules/ControlCenter/PowerMenu.qml index dd45688b..647b248d 100644 --- a/Modules/ControlCenter/PowerMenu.qml +++ b/Modules/ControlCenter/PowerMenu.qml @@ -65,7 +65,7 @@ PanelWindow { width: parent.width StyledText { - text: "Power Options" + text: qsTr("Power Options") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -118,7 +118,7 @@ PanelWindow { } StyledText { - text: "Log Out" + text: qsTr("Log Out") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -168,7 +168,7 @@ PanelWindow { } StyledText { - text: "Suspend" + text: qsTr("Suspend") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -218,7 +218,7 @@ PanelWindow { } StyledText { - text: "Reboot" + text: qsTr("Reboot") font.pixelSize: Theme.fontSizeMedium color: rebootArea.containsMouse ? Theme.warning : Theme.surfaceText font.weight: Font.Medium @@ -268,7 +268,7 @@ PanelWindow { } StyledText { - text: "Power Off" + text: qsTr("Power Off") font.pixelSize: Theme.fontSizeMedium color: powerOffArea.containsMouse ? Theme.error : Theme.surfaceText font.weight: Font.Medium diff --git a/Modules/DankBar/Popouts/BatteryPopout.qml b/Modules/DankBar/Popouts/BatteryPopout.qml index 1ddb8096..493dab5c 100644 --- a/Modules/DankBar/Popouts/BatteryPopout.qml +++ b/Modules/DankBar/Popouts/BatteryPopout.qml @@ -311,7 +311,7 @@ DankPopout { spacing: Theme.spacingXS StyledText { - text: "Health" + text: qsTr("Health") font.pixelSize: Theme.fontSizeSmall color: Theme.primary font.weight: Font.Medium @@ -346,7 +346,7 @@ DankPopout { spacing: Theme.spacingXS StyledText { - text: "Capacity" + text: qsTr("Capacity") font.pixelSize: Theme.fontSizeSmall color: Theme.primary font.weight: Font.Medium @@ -415,7 +415,7 @@ DankPopout { width: parent.width - Theme.iconSize - Theme.spacingM StyledText { - text: "Power Profile Degradation" + text: qsTr("Power Profile Degradation") font.pixelSize: Theme.fontSizeLarge color: Theme.error font.weight: Font.Medium diff --git a/Modules/DankBar/Popouts/VpnPopout.qml b/Modules/DankBar/Popouts/VpnPopout.qml index 48e38b17..1f5133dd 100644 --- a/Modules/DankBar/Popouts/VpnPopout.qml +++ b/Modules/DankBar/Popouts/VpnPopout.qml @@ -96,7 +96,7 @@ DankPopout { height: 32 StyledText { - text: "VPN Connections" + text: qsTr("VPN Connections") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -206,7 +206,7 @@ DankPopout { } StyledText { - text: "Disconnect" + text: qsTr("Disconnect") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -262,14 +262,14 @@ DankPopout { } StyledText { - text: "No VPN profiles found" + text: qsTr("No VPN profiles found") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText anchors.horizontalCenter: parent.horizontalCenter } StyledText { - text: "Add a VPN in NetworkManager" + text: qsTr("Add a VPN in NetworkManager") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText anchors.horizontalCenter: parent.horizontalCenter diff --git a/Modules/DankBar/Widgets/CpuMonitor.qml b/Modules/DankBar/Widgets/CpuMonitor.qml index 1a6014a2..43e25d14 100644 --- a/Modules/DankBar/Widgets/CpuMonitor.qml +++ b/Modules/DankBar/Widgets/CpuMonitor.qml @@ -140,7 +140,7 @@ Rectangle { id: cpuBaseline font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium - text: "100%" + text: qsTr("100%") } width: root.minimumWidth ? Math.max(cpuBaseline.width, paintedWidth) : paintedWidth diff --git a/Modules/DankBar/Widgets/CpuTemperature.qml b/Modules/DankBar/Widgets/CpuTemperature.qml index e1e0b588..986ce37f 100644 --- a/Modules/DankBar/Widgets/CpuTemperature.qml +++ b/Modules/DankBar/Widgets/CpuTemperature.qml @@ -140,7 +140,7 @@ Rectangle { id: tempBaseline font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium - text: "100°" + text: qsTr("100°") } width: root.minimumWidth ? Math.max(tempBaseline.width, paintedWidth) : paintedWidth diff --git a/Modules/DankBar/Widgets/DiskUsage.qml b/Modules/DankBar/Widgets/DiskUsage.qml index 3172ff03..4cb8bf4a 100644 --- a/Modules/DankBar/Widgets/DiskUsage.qml +++ b/Modules/DankBar/Widgets/DiskUsage.qml @@ -225,7 +225,7 @@ Rectangle { id: diskBaseline font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium - text: "100%" + text: qsTr("100%") } width: Math.max(diskBaseline.width, paintedWidth) diff --git a/Modules/DankBar/Widgets/GpuTemperature.qml b/Modules/DankBar/Widgets/GpuTemperature.qml index 6f8eda12..5955147a 100644 --- a/Modules/DankBar/Widgets/GpuTemperature.qml +++ b/Modules/DankBar/Widgets/GpuTemperature.qml @@ -207,7 +207,7 @@ Rectangle { id: gpuTempBaseline font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium - text: "100°" + text: qsTr("100°") } width: root.minimumWidth ? Math.max(gpuTempBaseline.width, paintedWidth) : paintedWidth diff --git a/Modules/DankBar/Widgets/RamMonitor.qml b/Modules/DankBar/Widgets/RamMonitor.qml index da4727a5..eab240cb 100644 --- a/Modules/DankBar/Widgets/RamMonitor.qml +++ b/Modules/DankBar/Widgets/RamMonitor.qml @@ -141,7 +141,7 @@ Rectangle { id: ramBaseline font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium - text: "100%" + text: qsTr("100%") } width: root.minimumWidth ? Math.max(ramBaseline.width, paintedWidth) : paintedWidth diff --git a/Modules/DankBar/Widgets/RunningApps.qml b/Modules/DankBar/Widgets/RunningApps.qml index f47ea161..eb8ebc0f 100644 --- a/Modules/DankBar/Widgets/RunningApps.qml +++ b/Modules/DankBar/Widgets/RunningApps.qml @@ -610,7 +610,7 @@ Rectangle { StyledText { anchors.centerIn: parent - text: "Close" + text: qsTr("Close") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal diff --git a/Modules/DankBar/Widgets/SystemTrayBar.qml b/Modules/DankBar/Widgets/SystemTrayBar.qml index 7d51e80b..904699da 100644 --- a/Modules/DankBar/Widgets/SystemTrayBar.qml +++ b/Modules/DankBar/Widgets/SystemTrayBar.qml @@ -445,7 +445,7 @@ Rectangle { } StyledText { - text: "Back" + text: qsTr("Back") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter diff --git a/Modules/DankDash/DankDashPopout.qml b/Modules/DankDash/DankDashPopout.qml index c9d9d19a..dd561d9e 100644 --- a/Modules/DankDash/DankDashPopout.qml +++ b/Modules/DankDash/DankDashPopout.qml @@ -131,15 +131,15 @@ DankPopout { model: { let tabs = [ - { icon: "dashboard", text: "Overview" }, - { icon: "music_note", text: "Media" } + { icon: "dashboard", text: qsTr("Overview") }, + { icon: "music_note", text: qsTr("Media") } ] if (SettingsData.weatherEnabled) { - tabs.push({ icon: "wb_sunny", text: "Weather" }) + tabs.push({ icon: "wb_sunny", text: qsTr("Weather") }) } - tabs.push({ icon: "settings", text: "Settings", isAction: true }) + tabs.push({ icon: "settings", text: qsTr("Settings"), isAction: true }) return tabs } diff --git a/Modules/DankDash/MediaPlayerTab.qml b/Modules/DankDash/MediaPlayerTab.qml index 6b2b6473..efc2d4fc 100644 --- a/Modules/DankDash/MediaPlayerTab.qml +++ b/Modules/DankDash/MediaPlayerTab.qml @@ -305,7 +305,7 @@ Item { } StyledText { - text: "No Active Players" + text: qsTr("No Active Players") font.pixelSize: Theme.fontSizeLarge color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter @@ -406,7 +406,7 @@ Item { anchors.margins: Theme.spacingM StyledText { - text: "Audio Output Devices (" + audioDevicesDropdown.availableDevices.length + ")" + text: qsTr("Audio Output Devices (") + audioDevicesDropdown.availableDevices.length + ")" font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -564,7 +564,7 @@ Item { anchors.margins: Theme.spacingM StyledText { - text: "Media Players (" + (allPlayers?.length || 0) + ")" + text: qsTr("Media Players (") + (allPlayers?.length || 0) + ")" font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText diff --git a/Modules/DankDash/Overview/MediaOverviewCard.qml b/Modules/DankDash/Overview/MediaOverviewCard.qml index 44999282..60fd9d5f 100644 --- a/Modules/DankDash/Overview/MediaOverviewCard.qml +++ b/Modules/DankDash/Overview/MediaOverviewCard.qml @@ -53,7 +53,7 @@ Card { } StyledText { - text: "No Media" + text: qsTr("No Media") font.pixelSize: Theme.fontSizeSmall color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter diff --git a/Modules/DankDash/Overview/WeatherOverviewCard.qml b/Modules/DankDash/Overview/WeatherOverviewCard.qml index 00a2e526..e5e84bf0 100644 --- a/Modules/DankDash/Overview/WeatherOverviewCard.qml +++ b/Modules/DankDash/Overview/WeatherOverviewCard.qml @@ -33,7 +33,7 @@ Card { } Button { - text: "Refresh" + text: qsTr("Refresh") flat: true visible: !WeatherService.weather.loading anchors.horizontalCenter: parent.horizontalCenter diff --git a/Modules/DankDash/WeatherTab.qml b/Modules/DankDash/WeatherTab.qml index 02f1782b..162c055b 100644 --- a/Modules/DankDash/WeatherTab.qml +++ b/Modules/DankDash/WeatherTab.qml @@ -24,7 +24,7 @@ Item { } StyledText { - text: "No Weather Data Available" + text: qsTr("No Weather Data Available") font.pixelSize: Theme.fontSizeLarge color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter @@ -257,7 +257,7 @@ Item { spacing: 2 StyledText { - text: "Feels Like" + text: qsTr("Feels Like") font.pixelSize: Theme.fontSizeSmall color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter @@ -304,7 +304,7 @@ Item { spacing: 2 StyledText { - text: "Humidity" + text: qsTr("Humidity") font.pixelSize: Theme.fontSizeSmall color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter @@ -351,7 +351,7 @@ Item { spacing: 2 StyledText { - text: "Wind" + text: qsTr("Wind") font.pixelSize: Theme.fontSizeSmall color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter @@ -398,7 +398,7 @@ Item { spacing: 2 StyledText { - text: "Pressure" + text: qsTr("Pressure") font.pixelSize: Theme.fontSizeSmall color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter @@ -445,7 +445,7 @@ Item { spacing: 2 StyledText { - text: "Rain Chance" + text: qsTr("Rain Chance") font.pixelSize: Theme.fontSizeSmall color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter @@ -492,14 +492,14 @@ Item { spacing: 2 StyledText { - text: "Visibility" + text: qsTr("Visibility") font.pixelSize: Theme.fontSizeSmall color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.7) anchors.horizontalCenter: parent.horizontalCenter } StyledText { - text: "Good" + text: qsTr("Good") font.pixelSize: Theme.fontSizeSmall + 1 color: Theme.surfaceText font.weight: Font.Medium @@ -522,7 +522,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "7-Day Forecast" + text: qsTr("7-Day Forecast") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium diff --git a/Modules/Dock/DockContextMenu.qml b/Modules/Dock/DockContextMenu.qml index 80d13e7c..d7703fb4 100644 --- a/Modules/Dock/DockContextMenu.qml +++ b/Modules/Dock/DockContextMenu.qml @@ -225,7 +225,7 @@ PanelWindow { anchors.right: closeButton.left anchors.rightMargin: Theme.spacingXS anchors.verticalCenter: parent.verticalCenter - text: (modelData && modelData.title) ? modelData.title : "(Unnamed)" + text: (modelData && modelData.title) ? modelData.title: qsTr("(Unnamed)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal diff --git a/Modules/Greetd/GreeterContent.qml b/Modules/Greetd/GreeterContent.qml index 365d285d..909f3b58 100644 --- a/Modules/Greetd/GreeterContent.qml +++ b/Modules/Greetd/GreeterContent.qml @@ -549,7 +549,7 @@ Item { } StyledText { - text: "Switch User" + text: qsTr("Switch User") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter @@ -1325,7 +1325,7 @@ Item { StyledText { anchors.centerIn: parent - text: "Cancel" + text: qsTr("Cancel") color: Theme.surfaceText font.pixelSize: Theme.fontSizeMedium } diff --git a/Modules/Lock/Keyboard.qml b/Modules/Lock/Keyboard.qml index 17206466..7afa8767 100644 --- a/Modules/Lock/Keyboard.qml +++ b/Modules/Lock/Keyboard.qml @@ -169,7 +169,7 @@ Rectangle { ], "row_4": [ { - text: '123', + text: qsTr("123"), symbol: 'ABC', width: 1.5 }, diff --git a/Modules/Lock/LockScreenContent.qml b/Modules/Lock/LockScreenContent.qml index ae6a91ce..dde94324 100644 --- a/Modules/Lock/LockScreenContent.qml +++ b/Modules/Lock/LockScreenContent.qml @@ -609,7 +609,7 @@ Item { anchors.top: parent.top anchors.left: parent.left anchors.margins: Theme.spacingXL - text: "DEMO MODE - Click anywhere to exit" + text: qsTr("DEMO MODE - Click anywhere to exit") font.pixelSize: Theme.fontSizeSmall color: "white" opacity: 0.7 @@ -1244,7 +1244,7 @@ Item { StyledText { anchors.centerIn: parent - text: "Cancel" + text: qsTr("Cancel") color: Theme.surfaceText font.pixelSize: Theme.fontSizeMedium } diff --git a/Modules/Notepad/NotepadSettings.qml b/Modules/Notepad/NotepadSettings.qml index d598a8cf..a67f3b2f 100644 --- a/Modules/Notepad/NotepadSettings.qml +++ b/Modules/Notepad/NotepadSettings.qml @@ -119,7 +119,7 @@ Item { anchors.left: parent.left anchors.leftMargin: -Theme.spacingXS anchors.verticalCenter: parent.verticalCenter - text: "Notepad Font Settings" + text: qsTr("Notepad Font Settings") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -136,7 +136,7 @@ Item { anchors.left: parent.left anchors.leftMargin: -Theme.spacingM width: parent.width + Theme.spacingM - text: "Use Monospace Font" + text: qsTr("Use Monospace Font") description: "Toggle fonts" checked: SettingsData.notepadUseMonospace onToggled: checked => { @@ -148,7 +148,7 @@ Item { anchors.left: parent.left anchors.leftMargin: -Theme.spacingM width: parent.width + Theme.spacingM - text: "Show Line Numbers" + text: qsTr("Show Line Numbers") description: "Display line numbers in editor" checked: SettingsData.notepadShowLineNumbers onToggled: checked => { @@ -191,14 +191,14 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Find in Text" + text: qsTr("Find in Text") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Open search bar to find text" + text: qsTr("Open search bar to find text") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -217,7 +217,7 @@ Item { anchors.left: parent.left anchors.leftMargin: -Theme.spacingM width: parent.width + Theme.spacingM - text: "Font Family" + text: qsTr("Font Family") options: cachedFontFamilies currentValue: { if (!SettingsData.notepadFontFamily || SettingsData.notepadFontFamily === "") @@ -251,7 +251,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Font Size" + text: qsTr("Font Size") font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium color: Theme.surfaceText @@ -330,7 +330,7 @@ Item { anchors.left: parent.left anchors.leftMargin: -Theme.spacingM width: parent.width + Theme.spacingM - text: "Custom Transparency" + text: qsTr("Custom Transparency") description: "Override global transparency for Notepad" checked: SettingsData.notepadTransparencyOverride >= 0 onToggled: checked => { diff --git a/Modules/Notifications/Center/NotificationCard.qml b/Modules/Notifications/Center/NotificationCard.qml index 0c67ac41..441962e3 100644 --- a/Modules/Notifications/Center/NotificationCard.qml +++ b/Modules/Notifications/Center/NotificationCard.qml @@ -549,7 +549,7 @@ Rectangle { StyledText { id: clearText - text: "Clear" + text: qsTr("Clear") color: parent.isHovered ? Theme.primary : Theme.surfaceVariantText font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium @@ -642,7 +642,7 @@ Rectangle { StyledText { id: clearText - text: "Clear" + text: qsTr("Clear") color: clearButton.isHovered ? Theme.primary : Theme.surfaceVariantText font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium diff --git a/Modules/Notifications/Center/NotificationEmptyState.qml b/Modules/Notifications/Center/NotificationEmptyState.qml index 569bfa25..a280e78a 100644 --- a/Modules/Notifications/Center/NotificationEmptyState.qml +++ b/Modules/Notifications/Center/NotificationEmptyState.qml @@ -24,7 +24,7 @@ Item { StyledText { anchors.horizontalCenter: parent.horizontalCenter - text: "Nothing to see here" + text: qsTr("Nothing to see here") font.pixelSize: Theme.fontSizeLarge color: Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.3) font.weight: Font.Medium diff --git a/Modules/Notifications/Center/NotificationHeader.qml b/Modules/Notifications/Center/NotificationHeader.qml index a2c9f432..90cf2a95 100644 --- a/Modules/Notifications/Center/NotificationHeader.qml +++ b/Modules/Notifications/Center/NotificationHeader.qml @@ -19,7 +19,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Notifications" + text: qsTr("Notifications") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -53,7 +53,7 @@ Item { StyledText { id: tooltipText - text: "Do Not Disturb" + text: qsTr("Do Not Disturb") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -120,7 +120,7 @@ Item { } StyledText { - text: "Clear All" + text: qsTr("Clear All") font.pixelSize: Theme.fontSizeSmall color: clearArea.containsMouse ? Theme.primary : Theme.surfaceText font.weight: Font.Medium diff --git a/Modules/Notifications/Center/NotificationKeyboardHints.qml b/Modules/Notifications/Center/NotificationKeyboardHints.qml index 8c9c7ff3..184c3fef 100644 --- a/Modules/Notifications/Center/NotificationKeyboardHints.qml +++ b/Modules/Notifications/Center/NotificationKeyboardHints.qml @@ -32,7 +32,7 @@ Rectangle { } StyledText { - text: "Del: Clear • Shift+Del: Clear All • 1-9: Actions • F10: Help • Esc: Close" + text: qsTr("Del: Clear • Shift+Del: Clear All • 1-9: Actions • F10: Help • Esc: Close") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText width: parent.width diff --git a/Modules/Notifications/Center/NotificationSettings.qml b/Modules/Notifications/Center/NotificationSettings.qml index f76bbc25..f60cbe6d 100644 --- a/Modules/Notifications/Center/NotificationSettings.qml +++ b/Modules/Notifications/Center/NotificationSettings.qml @@ -105,7 +105,7 @@ Rectangle { spacing: Theme.spacingM StyledText { - text: "Notification Settings" + text: qsTr("Notification Settings") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Bold color: Theme.surfaceText @@ -128,7 +128,7 @@ Rectangle { } StyledText { - text: "Do Not Disturb" + text: qsTr("Do Not Disturb") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter @@ -150,14 +150,14 @@ Rectangle { } StyledText { - text: "Notification Timeouts" + text: qsTr("Notification Timeouts") font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium color: Theme.surfaceVariantText } DankDropdown { - text: "Low Priority" + text: qsTr("Low Priority") description: "Timeout for low priority notifications" currentValue: getTimeoutText(SettingsData.notificationTimeoutLow) options: timeoutOptions.map(opt => opt.text) @@ -172,7 +172,7 @@ Rectangle { } DankDropdown { - text: "Normal Priority" + text: qsTr("Normal Priority") description: "Timeout for normal priority notifications" currentValue: getTimeoutText(SettingsData.notificationTimeoutNormal) options: timeoutOptions.map(opt => opt.text) @@ -187,7 +187,7 @@ Rectangle { } DankDropdown { - text: "Critical Priority" + text: qsTr("Critical Priority") description: "Timeout for critical priority notifications" currentValue: getTimeoutText(SettingsData.notificationTimeoutCritical) options: timeoutOptions.map(opt => opt.text) @@ -228,13 +228,13 @@ Rectangle { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Notification Overlay" + text: qsTr("Notification Overlay") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText } StyledText { - text: "Display all priorities over fullscreen apps" + text: qsTr("Display all priorities over fullscreen apps") font.pixelSize: Theme.fontSizeSmall - 1 color: Theme.surfaceVariantText } diff --git a/Modules/Notifications/Popup/NotificationPopup.qml b/Modules/Notifications/Popup/NotificationPopup.qml index 4a0e7f51..dbf7a12d 100644 --- a/Modules/Notifications/Popup/NotificationPopup.qml +++ b/Modules/Notifications/Popup/NotificationPopup.qml @@ -487,7 +487,7 @@ PanelWindow { StyledText { id: clearText - text: "Clear" + text: qsTr("Clear") color: clearButton.isHovered ? Theme.primary : Theme.surfaceVariantText font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium diff --git a/Modules/Plugins/ListSetting.qml b/Modules/Plugins/ListSetting.qml index f598837a..e81da420 100644 --- a/Modules/Plugins/ListSetting.qml +++ b/Modules/Plugins/ListSetting.qml @@ -76,7 +76,7 @@ Column { } StyledText { - text: "No items added yet" + text: qsTr("No items added yet") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText visible: root.items.length === 0 @@ -111,7 +111,7 @@ Column { StyledText { anchors.centerIn: parent - text: "Remove" + text: qsTr("Remove") color: Theme.errorText font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium diff --git a/Modules/Plugins/ListSettingWithInput.qml b/Modules/Plugins/ListSettingWithInput.qml index 75ae04b4..782b8cce 100644 --- a/Modules/Plugins/ListSettingWithInput.qml +++ b/Modules/Plugins/ListSettingWithInput.qml @@ -123,7 +123,7 @@ Column { id: addButton width: 50 height: 36 - text: "Add" + text: qsTr("Add") onClicked: { let newItem = {} @@ -159,7 +159,7 @@ Column { } StyledText { - text: "Current Items" + text: qsTr("Current Items") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -227,7 +227,7 @@ Column { StyledText { anchors.centerIn: parent - text: "Remove" + text: qsTr("Remove") color: Theme.onError font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium @@ -247,7 +247,7 @@ Column { } StyledText { - text: "No items added yet" + text: qsTr("No items added yet") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText visible: root.items.length === 0 diff --git a/Modules/ProcessList/PerformanceTab.qml b/Modules/ProcessList/PerformanceTab.qml index 2c1fb4ad..f404a703 100644 --- a/Modules/ProcessList/PerformanceTab.qml +++ b/Modules/ProcessList/PerformanceTab.qml @@ -194,7 +194,7 @@ Column { spacing: 4 StyledText { - text: "Memory" + text: qsTr("Memory") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Bold color: Theme.surfaceText @@ -269,7 +269,7 @@ Column { spacing: 4 StyledText { - text: "Swap" + text: qsTr("Swap") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Bold color: Theme.surfaceText @@ -359,7 +359,7 @@ Column { spacing: Theme.spacingXS StyledText { - text: "Network" + text: qsTr("Network") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Bold color: Theme.surfaceText @@ -425,7 +425,7 @@ Column { spacing: Theme.spacingXS StyledText { - text: "Disk" + text: qsTr("Disk") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Bold color: Theme.surfaceText diff --git a/Modules/ProcessList/ProcessContextMenu.qml b/Modules/ProcessList/ProcessContextMenu.qml index 14b8f1a5..72a54373 100644 --- a/Modules/ProcessList/ProcessContextMenu.qml +++ b/Modules/ProcessList/ProcessContextMenu.qml @@ -85,7 +85,7 @@ Popup { anchors.left: parent.left anchors.leftMargin: Theme.spacingS anchors.verticalCenter: parent.verticalCenter - text: "Copy PID" + text: qsTr("Copy PID") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal @@ -118,7 +118,7 @@ Popup { anchors.left: parent.left anchors.leftMargin: Theme.spacingS anchors.verticalCenter: parent.verticalCenter - text: "Copy Process Name" + text: qsTr("Copy Process Name") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal @@ -168,7 +168,7 @@ Popup { anchors.left: parent.left anchors.leftMargin: Theme.spacingS anchors.verticalCenter: parent.verticalCenter - text: "Kill Process" + text: qsTr("Kill Process") font.pixelSize: Theme.fontSizeSmall color: parent.enabled ? (killArea.containsMouse ? Theme.error : Theme.surfaceText) : Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.5) font.weight: Font.Normal @@ -204,7 +204,7 @@ Popup { anchors.left: parent.left anchors.leftMargin: Theme.spacingS anchors.verticalCenter: parent.verticalCenter - text: "Force Kill Process" + text: qsTr("Force Kill Process") font.pixelSize: Theme.fontSizeSmall color: parent.enabled ? (forceKillArea.containsMouse ? Theme.error : Theme.surfaceText) : Qt.rgba(Theme.surfaceText.r, Theme.surfaceText.g, Theme.surfaceText.b, 0.5) font.weight: Font.Normal diff --git a/Modules/ProcessList/ProcessListView.qml b/Modules/ProcessList/ProcessListView.qml index c3030ddf..e7ceb5b0 100644 --- a/Modules/ProcessList/ProcessListView.qml +++ b/Modules/ProcessList/ProcessListView.qml @@ -38,7 +38,7 @@ Column { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Process" + text: qsTr("Process") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: DgopService.currentSort === "name" ? Font.Bold : Font.Medium diff --git a/Modules/ProcessList/SystemOverview.qml b/Modules/ProcessList/SystemOverview.qml index cf813a93..42641d00 100644 --- a/Modules/ProcessList/SystemOverview.qml +++ b/Modules/ProcessList/SystemOverview.qml @@ -48,7 +48,7 @@ Row { spacing: 2 StyledText { - text: "CPU" + text: qsTr("CPU") font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium color: DgopService.sortBy === "cpu" ? Theme.primary : Theme.secondary @@ -163,7 +163,7 @@ Row { spacing: 2 StyledText { - text: "Memory" + text: qsTr("Memory") font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium color: DgopService.sortBy === "memory" ? Theme.primary : Theme.secondary @@ -315,7 +315,7 @@ Row { spacing: 2 StyledText { - text: "GPU" + text: qsTr("GPU") font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium color: Theme.secondary @@ -388,7 +388,7 @@ Row { id: gpuContextMenu MenuItem { - text: "Enable GPU Temperature" + text: qsTr("Enable GPU Temperature") checkable: true checked: { if (!DgopService.availableGpus || DgopService.availableGpus.length === 0) { diff --git a/Modules/ProcessList/SystemTab.qml b/Modules/ProcessList/SystemTab.qml index 5500157a..0f438453 100644 --- a/Modules/ProcessList/SystemTab.qml +++ b/Modules/ProcessList/SystemTab.qml @@ -127,7 +127,7 @@ DankFlickable { } StyledText { - text: "System" + text: qsTr("System") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: Font.Bold @@ -411,7 +411,7 @@ DankFlickable { } StyledText { - text: "Storage & Disks" + text: qsTr("Storage & Disks") font.pixelSize: Theme.fontSizeLarge font.family: SettingsData.monoFontFamily font.weight: Font.Bold @@ -431,7 +431,7 @@ DankFlickable { spacing: Theme.spacingS StyledText { - text: "Device" + text: qsTr("Device") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: Font.Bold @@ -442,7 +442,7 @@ DankFlickable { } StyledText { - text: "Mount" + text: qsTr("Mount") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: Font.Bold @@ -453,7 +453,7 @@ DankFlickable { } StyledText { - text: "Size" + text: qsTr("Size") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: Font.Bold @@ -464,7 +464,7 @@ DankFlickable { } StyledText { - text: "Used" + text: qsTr("Used") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: Font.Bold @@ -475,7 +475,7 @@ DankFlickable { } StyledText { - text: "Available" + text: qsTr("Available") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: Font.Bold @@ -486,7 +486,7 @@ DankFlickable { } StyledText { - text: "Use%" + text: qsTr("Use%") font.pixelSize: Theme.fontSizeSmall font.family: SettingsData.monoFontFamily font.weight: Font.Bold diff --git a/Modules/Settings/AboutTab.qml b/Modules/Settings/AboutTab.qml index 7390ef8f..f3da01e5 100644 --- a/Modules/Settings/AboutTab.qml +++ b/Modules/Settings/AboutTab.qml @@ -248,7 +248,7 @@ Item { } StyledText { - text: "About" + text: qsTr("About") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -307,7 +307,7 @@ Item { } StyledText { - text: "Technical Details" + text: qsTr("Technical Details") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -322,7 +322,7 @@ Item { rowSpacing: Theme.spacingS StyledText { - text: "Framework:" + text: qsTr("Framework:") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -345,20 +345,20 @@ Item { } StyledText { - text: "Language:" + text: qsTr("Language:") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "QML (Qt Modeling Language)" + text: qsTr("QML (Qt Modeling Language)") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText } StyledText { - text: "Compositor:" + text: qsTr("Compositor:") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -410,7 +410,7 @@ Item { } StyledText { - text: "Github:" + text: qsTr("Github:") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -437,7 +437,7 @@ Item { } StyledText { - text: "- Support Us With a Star ⭐" + text: qsTr("- Support Us With a Star ⭐") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText anchors.verticalCenter: parent.verticalCenter @@ -445,7 +445,7 @@ Item { } StyledText { - text: "System Monitoring:" + text: qsTr("System Monitoring:") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -472,7 +472,7 @@ Item { } StyledText { - text: "- Stateless System Monitoring" + text: qsTr("- Stateless System Monitoring") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText anchors.verticalCenter: parent.verticalCenter @@ -480,7 +480,7 @@ Item { } StyledText { - text: "Dank Suite:" + text: qsTr("Dank Suite:") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText diff --git a/Modules/Settings/DankBarTab.qml b/Modules/Settings/DankBarTab.qml index ba3a2b65..7cc02d40 100644 --- a/Modules/Settings/DankBarTab.qml +++ b/Modules/Settings/DankBarTab.qml @@ -695,7 +695,7 @@ Item { } StyledText { - text: "Position" + text: qsTr("Position") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -765,14 +765,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Auto-hide" + text: qsTr("Auto-hide") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Automatically hide the top bar to expand screen real estate" + text: qsTr("Automatically hide the top bar to expand screen real estate") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -824,7 +824,7 @@ Item { } StyledText { - text: "Toggle top bar visibility manually (can be controlled via IPC)" + text: qsTr("Toggle top bar visibility manually (can be controlled via IPC)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -871,7 +871,7 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Show on Overview" + text: qsTr("Show on Overview") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -930,7 +930,7 @@ Item { } StyledText { - text: "Spacing" + text: qsTr("Spacing") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -971,7 +971,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Exclusive Zone Offset" + text: qsTr("Exclusive Zone Offset") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -999,7 +999,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Size" + text: qsTr("Size") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -1025,7 +1025,7 @@ Item { DankToggle { width: parent.width - text: "Square Corners" + text: qsTr("Square Corners") description: "Removes rounded corners from bar container." checked: SettingsData.dankBarSquareCorners onToggled: checked => { @@ -1036,7 +1036,7 @@ Item { DankToggle { width: parent.width - text: "No Background" + text: qsTr("No Background") description: "Remove widget backgrounds for a minimal look with tighter spacing." checked: SettingsData.dankBarNoBackground onToggled: checked => { @@ -1047,7 +1047,7 @@ Item { DankToggle { width: parent.width - text: "Goth Corners" + text: qsTr("Goth Corners") description: "Add curved swooping tips at the bottom of the bar." checked: SettingsData.dankBarGothCornersEnabled onToggled: checked => { @@ -1058,7 +1058,7 @@ Item { DankToggle { width: parent.width - text: "Border" + text: qsTr("Border") description: "Add a 1px border to the bar. Smart edge detection only shows border on exposed sides." checked: SettingsData.dankBarBorderEnabled onToggled: checked => { @@ -1099,7 +1099,7 @@ Item { StyledText { id: widgetTitle - text: "Widget Management" + text: qsTr("Widget Management") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1137,7 +1137,7 @@ Item { } StyledText { - text: "Reset" + text: qsTr("Reset") font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium color: Theme.surfaceText @@ -1281,7 +1281,7 @@ Item { id: centerSection anchors.fill: parent anchors.margins: Theme.spacingL - title: "Center Section" + title: qsTr("Center Section") titleIcon: "format_align_center" sectionId: "center" allWidgets: dankBarTab.baseWidgetDefinitions diff --git a/Modules/Settings/DisplaysTab.qml b/Modules/Settings/DisplaysTab.qml index 65df9162..161dcd2b 100644 --- a/Modules/Settings/DisplaysTab.qml +++ b/Modules/Settings/DisplaysTab.qml @@ -108,14 +108,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Connected Displays" + text: qsTr("Connected Displays") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Configure which displays show shell components" + text: qsTr("Configure which displays show shell components") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -131,7 +131,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Available Screens (" + Quickshell.screens.length + ")" + text: qsTr("Available Screens (") + Quickshell.screens.length + ")" font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText @@ -273,7 +273,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Show on screens:" + text: qsTr("Show on screens:") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -288,7 +288,7 @@ Item { DankToggle { width: parent.width - text: "All displays" + text: qsTr("All displays") description: "Show on all connected displays" checked: parent.selectedScreens.includes("all") onToggled: (checked) => { diff --git a/Modules/Settings/DockTab.qml b/Modules/Settings/DockTab.qml index 20affdc7..71516309 100644 --- a/Modules/Settings/DockTab.qml +++ b/Modules/Settings/DockTab.qml @@ -50,7 +50,7 @@ Item { StyledText { id: positionText - text: "Dock Position" + text: qsTr("Dock Position") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -125,14 +125,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Auto-hide Dock" + text: qsTr("Auto-hide Dock") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Hide the dock when not in use and reveal it when hovering near the dock area" + text: qsTr("Hide the dock when not in use and reveal it when hovering near the dock area") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -176,14 +176,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Show Dock" + text: qsTr("Show Dock") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen" + text: qsTr("Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -229,7 +229,7 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Show on Overview" + text: qsTr("Show on Overview") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -294,14 +294,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Group by App" + text: qsTr("Group by App") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Group multiple windows of the same app together with a window count indicator" + text: qsTr("Group multiple windows of the same app together with a window count indicator") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -360,7 +360,7 @@ Item { } StyledText { - text: "Spacing" + text: qsTr("Spacing") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -373,7 +373,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Padding" + text: qsTr("Padding") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -401,7 +401,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Height to Edge Gap (Exclusive Zone)" + text: qsTr("Height to Edge Gap (Exclusive Zone)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -464,7 +464,7 @@ Item { } StyledText { - text: "Dock Transparency" + text: qsTr("Dock Transparency") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText diff --git a/Modules/Settings/LauncherTab.qml b/Modules/Settings/LauncherTab.qml index 3e8ba938..0ef2012d 100644 --- a/Modules/Settings/LauncherTab.qml +++ b/Modules/Settings/LauncherTab.qml @@ -47,7 +47,7 @@ Item { } StyledText { - text: "Launch Prefix" + text: qsTr("Launch Prefix") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -127,7 +127,7 @@ Item { } StyledText { - text: "Recently Used Apps" + text: qsTr("Recently Used Apps") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -157,7 +157,7 @@ Item { StyledText { width: parent.width - text: "Apps are ordered by usage frequency, then last used, then alphabetically." + text: qsTr("Apps are ordered by usage frequency, then last used, then alphabetically.") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap diff --git a/Modules/Settings/PersonalizationTab.qml b/Modules/Settings/PersonalizationTab.qml index d0cca5b6..b65379ce 100644 --- a/Modules/Settings/PersonalizationTab.qml +++ b/Modules/Settings/PersonalizationTab.qml @@ -96,7 +96,7 @@ Item { } StyledText { - text: "Wallpaper" + text: qsTr("Wallpaper") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -434,14 +434,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Per-Mode Wallpapers" + text: qsTr("Per-Mode Wallpapers") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Set different wallpapers for light and dark mode" + text: qsTr("Set different wallpapers for light and dark mode") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText width: parent.width @@ -491,14 +491,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Per-Monitor Wallpapers" + text: qsTr("Per-Monitor Wallpapers") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Set different wallpapers for each connected monitor" + text: qsTr("Set different wallpapers for each connected monitor") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText width: parent.width @@ -523,7 +523,7 @@ Item { leftPadding: Theme.iconSize + Theme.spacingM StyledText { - text: "Monitor Selection:" + text: qsTr("Monitor Selection:") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -532,7 +532,7 @@ Item { DankDropdown { id: monitorDropdown - text: "Monitor" + text: qsTr("Monitor") description: "Select monitor to configure wallpaper" currentValue: selectedMonitorName || "No monitors" options: { @@ -580,14 +580,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Automatic Cycling" + text: qsTr("Automatic Cycling") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Automatically cycle through wallpapers in the same folder" + text: qsTr("Automatically cycle through wallpapers in the same folder") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText width: parent.width @@ -629,7 +629,7 @@ Item { width: parent.width - parent.leftPadding StyledText { - text: "Mode:" + text: qsTr("Mode:") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter @@ -696,7 +696,7 @@ Item { return SessionData.wallpaperCyclingMode === "interval" } } - text: "Interval" + text: qsTr("Interval") description: "How often to change wallpaper" options: intervalOptions currentValue: { @@ -751,7 +751,7 @@ Item { width: parent.width - parent.leftPadding StyledText { - text: "Daily at:" + text: qsTr("Daily at:") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText anchors.verticalCenter: parent.verticalCenter @@ -768,7 +768,7 @@ Item { return SessionData.wallpaperCyclingTime } } - placeholderText: "00:00" + placeholderText: qsTr("00:00") maximumLength: 5 topPadding: Theme.spacingS bottomPadding: Theme.spacingS @@ -826,7 +826,7 @@ Item { } StyledText { - text: "24-hour format" + text: qsTr("24-hour format") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText anchors.verticalCenter: parent.verticalCenter @@ -843,7 +843,7 @@ Item { } DankDropdown { - text: "Transition Effect" + text: qsTr("Transition Effect") description: "Visual effect used when wallpaper changes" currentValue: { if (SessionData.wallpaperTransition === "random") return "Random" @@ -862,14 +862,14 @@ Item { visible: SessionData.wallpaperTransition === "random" StyledText { - text: "Include Transitions" + text: qsTr("Include Transitions") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium } StyledText { - text: "Select which transitions to include in randomization" + text: qsTr("Select which transitions to include in randomization") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -934,14 +934,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Dynamic Theming" + text: qsTr("Dynamic Theming") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Automatically extract colors from wallpaper" + text: qsTr("Automatically extract colors from wallpaper") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -966,7 +966,7 @@ Item { DankDropdown { id: personalizationMatugenPaletteDropdown - text: "Matugen Palette" + text: qsTr("Matugen Palette") description: "Select the palette algorithm used for wallpaper-based colors" options: Theme.availableMatugenSchemes.map(function (option) { return option.label }) currentValue: Theme.getMatugenScheme(SettingsData.matugenScheme).label @@ -995,7 +995,7 @@ Item { } StyledText { - text: "matugen not detected - dynamic theming unavailable" + text: qsTr("matugen not detected - dynamic theming unavailable") font.pixelSize: Theme.fontSizeSmall color: Theme.error visible: ToastService.wallpaperErrorStatus === "matugen_missing" @@ -1033,7 +1033,7 @@ Item { } StyledText { - text: "Display Settings" + text: qsTr("Display Settings") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1043,7 +1043,7 @@ Item { DankToggle { width: parent.width - text: "Light Mode" + text: qsTr("Light Mode") description: "Use light theme instead of dark theme" checked: SessionData.isLightMode onToggleCompleted: checked => { @@ -1064,7 +1064,7 @@ Item { id: nightModeToggle width: parent.width - text: "Night Mode" + text: qsTr("Night Mode") description: "Apply warm color temperature to reduce eye strain. Use automation settings below to control when it activates." checked: DisplayService.nightModeEnabled onToggled: checked => { @@ -1081,7 +1081,7 @@ Item { } DankDropdown { - text: "Temperature" + text: qsTr("Temperature") description: "Color temperature for night mode" currentValue: SessionData.nightModeTemperature + "K" options: { @@ -1100,7 +1100,7 @@ Item { DankToggle { id: automaticToggle width: parent.width - text: "Automatic Control" + text: qsTr("Automatic Control") description: "Only adjust gamma based on time or location rules." checked: SessionData.nightModeAutoEnabled onToggled: checked => { @@ -1183,7 +1183,7 @@ Item { leftPadding: 45 StyledText { - text: "Hour" + text: qsTr("Hour") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText width: 50 @@ -1192,7 +1192,7 @@ Item { } StyledText { - text: "Minute" + text: qsTr("Minute") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText width: 50 @@ -1208,7 +1208,7 @@ Item { StyledText { id: startLabel - text: "Start" + text: qsTr("Start") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText width: 50 @@ -1256,7 +1256,7 @@ Item { height: 32 StyledText { - text: "End" + text: qsTr("End") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText width: startLabel.width @@ -1307,7 +1307,7 @@ Item { DankToggle { width: parent.width - text: "Auto-location" + text: qsTr("Auto-location") description: DisplayService.geoclueAvailable ? "Use automatic location detection (geoclue2)" : "Geoclue service not running - cannot auto-detect location" checked: SessionData.nightModeLocationProvider === "geoclue2" enabled: DisplayService.geoclueAvailable @@ -1323,7 +1323,7 @@ Item { } StyledText { - text: "Manual Coordinates" + text: qsTr("Manual Coordinates") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText visible: SessionData.nightModeLocationProvider !== "geoclue2" @@ -1337,7 +1337,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Latitude" + text: qsTr("Latitude") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -1346,7 +1346,7 @@ Item { width: 120 height: 40 text: SessionData.latitude.toString() - placeholderText: "0.0" + placeholderText: qsTr("0.0") onTextChanged: { const lat = parseFloat(text) || 0.0 if (lat >= -90 && lat <= 90) { @@ -1360,7 +1360,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Longitude" + text: qsTr("Longitude") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -1369,7 +1369,7 @@ Item { width: 120 height: 40 text: SessionData.longitude.toString() - placeholderText: "0.0" + placeholderText: qsTr("0.0") onTextChanged: { const lon = parseFloat(text) || 0.0 if (lon >= -180 && lon <= 180) { @@ -1420,7 +1420,7 @@ Item { } StyledText { - text: "Notification Popups" + text: qsTr("Notification Popups") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1429,7 +1429,7 @@ Item { } DankDropdown { - text: "Popup Position" + text: qsTr("Popup Position") description: "Choose where notification popups appear on screen" currentValue: { if (SettingsData.notificationPopupPosition === -1) { @@ -1480,7 +1480,7 @@ Item { DankToggle { width: parent.width - text: "Always Show OSD Percentage" + text: qsTr("Always Show OSD Percentage") description: "Display volume and brightness percentage values by default in OSD popups" checked: SettingsData.osdAlwaysShowValue onToggled: checked => { @@ -1518,7 +1518,7 @@ Item { } StyledText { - text: "Font Settings" + text: qsTr("Font Settings") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1527,7 +1527,7 @@ Item { } DankDropdown { - text: "Font Family" + text: qsTr("Font Family") description: "Select system font family" currentValue: { if (SettingsData.fontFamily === SettingsData.defaultFontFamily) @@ -1548,7 +1548,7 @@ Item { } DankDropdown { - text: "Font Weight" + text: qsTr("Font Weight") description: "Select font weight" currentValue: { switch (SettingsData.fontWeight) { @@ -1614,7 +1614,7 @@ Item { } DankDropdown { - text: "Monospace Font" + text: qsTr("Monospace Font") description: "Select monospace font for process list and technical displays" currentValue: { if (SettingsData.monoFontFamily === SettingsData.defaultMonoFontFamily) @@ -1649,14 +1649,14 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Font Scale" + text: qsTr("Font Scale") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Scale all font sizes" + text: qsTr("Scale all font sizes") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText width: parent.width @@ -1748,7 +1748,7 @@ Item { } StyledText { - text: "Animations" + text: qsTr("Animations") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1761,14 +1761,14 @@ Item { spacing: Theme.spacingS StyledText { - text: "Animation Speed" + text: qsTr("Animation Speed") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium } StyledText { - text: "Control the speed of animations throughout the interface" + text: qsTr("Control the speed of animations throughout the interface") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -1819,7 +1819,7 @@ Item { } StyledText { - text: "Lock Screen" + text: qsTr("Lock Screen") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1829,7 +1829,7 @@ Item { DankToggle { width: parent.width - text: "Show Power Actions" + text: qsTr("Show Power Actions") description: "Show power, restart, and logout buttons on the lock screen" checked: SettingsData.lockScreenShowPowerActions onToggled: checked => { diff --git a/Modules/Settings/PluginsTab.qml b/Modules/Settings/PluginsTab.qml index f21df10a..744a4b44 100644 --- a/Modules/Settings/PluginsTab.qml +++ b/Modules/Settings/PluginsTab.qml @@ -58,14 +58,14 @@ FocusScope { spacing: Theme.spacingXS StyledText { - text: "Plugin Management" + text: qsTr("Plugin Management") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium } StyledText { - text: "Manage and configure plugins for extending DMS functionality" + text: qsTr("Manage and configure plugins for extending DMS functionality") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -98,7 +98,7 @@ FocusScope { } StyledText { - text: "DMS Plugin Manager Unavailable" + text: qsTr("DMS Plugin Manager Unavailable") font.pixelSize: Theme.fontSizeSmall color: Theme.warning font.weight: Font.Medium @@ -107,7 +107,7 @@ FocusScope { } StyledText { - text: "The DMS_SOCKET environment variable is not set or the socket is unavailable. Automated plugin management requires the DMS_SOCKET." + text: qsTr("The DMS_SOCKET environment variable is not set or the socket is unavailable. Automated plugin management requires the DMS_SOCKET.") font.pixelSize: Theme.fontSizeSmall - 1 color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -121,7 +121,7 @@ FocusScope { spacing: Theme.spacingM DankButton { - text: "Browse" + text: qsTr("Browse") iconName: "store" enabled: DMSService.dmsAvailable onClicked: { @@ -130,7 +130,7 @@ FocusScope { } DankButton { - text: "Scan" + text: qsTr("Scan") iconName: "refresh" onClicked: { pluginsTab.isRefreshingPlugins = true @@ -143,7 +143,7 @@ FocusScope { } DankButton { - text: "Create Dir" + text: qsTr("Create Dir") iconName: "create_new_folder" onClicked: { PluginService.createPluginDirectory() @@ -169,7 +169,7 @@ FocusScope { spacing: Theme.spacingM StyledText { - text: "Plugin Directory" + text: qsTr("Plugin Directory") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -183,7 +183,7 @@ FocusScope { } StyledText { - text: "Place plugin directories here. Each plugin should have a plugin.json manifest file." + text: qsTr("Place plugin directories here. Each plugin should have a plugin.json manifest file.") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -207,7 +207,7 @@ FocusScope { spacing: Theme.spacingM StyledText { - text: "Available Plugins" + text: qsTr("Available Plugins") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -782,7 +782,7 @@ FocusScope { StyledText { id: headerText - text: "Browse Plugins" + text: qsTr("Browse Plugins") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -831,7 +831,7 @@ FocusScope { } StyledText { - text: "Install plugins from the DMS plugin registry" + text: qsTr("Install plugins from the DMS plugin registry") font.pixelSize: Theme.fontSizeSmall color: Theme.outline width: parent.width @@ -853,7 +853,7 @@ FocusScope { showClearButton: true textColor: Theme.surfaceText font.pixelSize: Theme.fontSizeMedium - placeholderText: "Search plugins..." + placeholderText: qsTr("Search plugins...") text: pluginBrowserModal.searchQuery focus: true ignoreLeftRightKeys: true @@ -889,7 +889,7 @@ FocusScope { } StyledText { - text: "Loading plugins..." + text: qsTr("Loading plugins...") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText anchors.horizontalCenter: parent.horizontalCenter @@ -969,7 +969,7 @@ FocusScope { StyledText { id: firstPartyText anchors.centerIn: parent - text: "official" + text: qsTr("official") font.pixelSize: Theme.fontSizeSmall - 2 color: Theme.primary font.weight: Font.Medium @@ -989,7 +989,7 @@ FocusScope { StyledText { id: thirdPartyText anchors.centerIn: parent - text: "3rd party" + text: qsTr("3rd party") font.pixelSize: Theme.fontSizeSmall - 2 color: Theme.warning font.weight: Font.Medium @@ -1113,7 +1113,7 @@ FocusScope { } StyledText { - text: "No plugins found" + text: qsTr("No plugins found") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText anchors.horizontalCenter: parent.horizontalCenter @@ -1162,7 +1162,7 @@ FocusScope { } StyledText { - text: "Third-Party Plugin Warning" + text: qsTr("Third-Party Plugin Warning") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1183,19 +1183,19 @@ FocusScope { spacing: Theme.spacingS StyledText { - text: "• Plugins may contain bugs or security issues" + text: qsTr("• Plugins may contain bugs or security issues") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• Review code before installation when possible" + text: qsTr("• Review code before installation when possible") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• Install only from trusted sources" + text: qsTr("• Install only from trusted sources") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -1211,13 +1211,13 @@ FocusScope { spacing: Theme.spacingM DankButton { - text: "Cancel" + text: qsTr("Cancel") iconName: "close" onClicked: thirdPartyConfirmModal.close() } DankButton { - text: "I Understand" + text: qsTr("I Understand") iconName: "check" onClicked: { SessionData.setShowThirdPartyPlugins(true) diff --git a/Modules/Settings/ThemeColorsTab.qml b/Modules/Settings/ThemeColorsTab.qml index 78522182..540c38d2 100644 --- a/Modules/Settings/ThemeColorsTab.qml +++ b/Modules/Settings/ThemeColorsTab.qml @@ -130,7 +130,7 @@ Item { } StyledText { - text: "Theme Color" + text: qsTr("Theme Color") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -651,7 +651,7 @@ Item { DankDropdown { id: matugenPaletteDropdown - text: "Matugen Palette" + text: qsTr("Matugen Palette") description: "Select the palette algorithm used for wallpaper-based colors" options: Theme.availableMatugenSchemes.map(function (option) { return option.label }) currentValue: Theme.getMatugenScheme(SettingsData.matugenScheme).label @@ -756,7 +756,7 @@ Item { } StyledText { - text: "Widget Styling" + text: qsTr("Widget Styling") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -769,7 +769,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Dank Bar Transparency" + text: qsTr("Dank Bar Transparency") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -803,7 +803,7 @@ Item { StyledText { id: transparencyLabel - text: "Dank Bar Widget Transparency" + text: qsTr("Dank Bar Widget Transparency") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -867,7 +867,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Popup Transparency" + text: qsTr("Popup Transparency") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -993,7 +993,7 @@ Item { DankDropdown { anchors.verticalCenter: parent.verticalCenter - text: "Icon Theme" + text: qsTr("Icon Theme") description: "DankShell & System Icons\n(requires restart)" currentValue: SettingsData.iconTheme enableFuzzySearch: true @@ -1046,7 +1046,7 @@ Item { } StyledText { - text: "System App Theming" + text: qsTr("System App Theming") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -1078,7 +1078,7 @@ Item { } StyledText { - text: "Apply GTK Colors" + text: qsTr("Apply GTK Colors") font.pixelSize: Theme.fontSizeMedium color: Theme.primary font.weight: Font.Medium @@ -1114,7 +1114,7 @@ Item { } StyledText { - text: "Apply Qt Colors" + text: qsTr("Apply Qt Colors") font.pixelSize: Theme.fontSizeMedium color: Theme.primary font.weight: Font.Medium diff --git a/Modules/Settings/TimeTab.qml b/Modules/Settings/TimeTab.qml index e5ac3024..83070dd8 100644 --- a/Modules/Settings/TimeTab.qml +++ b/Modules/Settings/TimeTab.qml @@ -54,7 +54,7 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "24-Hour Format" + text: qsTr("24-Hour Format") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -112,7 +112,7 @@ Item { } StyledText { - text: "Date Format" + text: qsTr("Date Format") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -122,7 +122,7 @@ Item { DankDropdown { height: 50 - text: "Top Bar Format" + text: qsTr("Top Bar Format") description: "Preview: " + (SettingsData.clockDateFormat ? new Date().toLocaleDateString(Qt.locale(), SettingsData.clockDateFormat) : new Date().toLocaleDateString(Qt.locale(), "ddd d")) currentValue: { if (!SettingsData.clockDateFormat || SettingsData.clockDateFormat.length === 0) { @@ -158,7 +158,7 @@ Item { return p.format === SettingsData.clockDateFormat }) - return match ? match.label : "Custom: " + SettingsData.clockDateFormat + return match ? match.label: qsTr("Custom: ") + SettingsData.clockDateFormat } options: ["System Default", "Day Date", "Day Month Date", "Month Date", "Numeric (M/D)", "Numeric (D/M)", "Full with Year", "ISO Date", "Full Day & Month", "Custom..."] onValueChanged: value => { @@ -185,7 +185,7 @@ Item { DankDropdown { height: 50 - text: "Lock Screen Format" + text: qsTr("Lock Screen Format") description: "Preview: " + (SettingsData.lockDateFormat ? new Date().toLocaleDateString(Qt.locale(), SettingsData.lockDateFormat) : new Date().toLocaleDateString(Qt.locale(), Locale.LongFormat)) currentValue: { if (!SettingsData.lockDateFormat || SettingsData.lockDateFormat.length === 0) { @@ -221,7 +221,7 @@ Item { return p.format === SettingsData.lockDateFormat }) - return match ? match.label : "Custom: " + SettingsData.lockDateFormat + return match ? match.label: qsTr("Custom: ") + SettingsData.lockDateFormat } options: ["System Default", "Day Date", "Day Month Date", "Month Date", "Numeric (M/D)", "Numeric (D/M)", "Full with Year", "ISO Date", "Full Day & Month", "Custom..."] onValueChanged: value => { @@ -251,7 +251,7 @@ Item { width: parent.width visible: false - placeholderText: "Enter custom top bar format (e.g., ddd MMM d)" + placeholderText: qsTr("Enter custom top bar format (e.g., ddd MMM d)") text: SettingsData.clockDateFormat onTextChanged: { if (visible && text) @@ -264,7 +264,7 @@ Item { width: parent.width visible: false - placeholderText: "Enter custom lock screen format (e.g., dddd, MMMM d)" + placeholderText: qsTr("Enter custom lock screen format (e.g., dddd, MMMM d)") text: SettingsData.lockDateFormat onTextChanged: { if (visible && text) @@ -289,7 +289,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Format Legend" + text: qsTr("Format Legend") font.pixelSize: Theme.fontSizeSmall color: Theme.primary font.weight: Font.Medium @@ -304,31 +304,31 @@ Item { spacing: 2 StyledText { - text: "• d - Day (1-31)" + text: qsTr("• d - Day (1-31)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• dd - Day (01-31)" + text: qsTr("• dd - Day (01-31)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• ddd - Day name (Mon)" + text: qsTr("• ddd - Day name (Mon)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• dddd - Day name (Monday)" + text: qsTr("• dddd - Day name (Monday)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• M - Month (1-12)" + text: qsTr("• M - Month (1-12)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -339,31 +339,31 @@ Item { spacing: 2 StyledText { - text: "• MM - Month (01-12)" + text: qsTr("• MM - Month (01-12)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• MMM - Month (Jan)" + text: qsTr("• MMM - Month (Jan)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• MMMM - Month (January)" + text: qsTr("• MMMM - Month (January)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• yy - Year (24)" + text: qsTr("• yy - Year (24)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } StyledText { - text: "• yyyy - Year (2024)" + text: qsTr("• yyyy - Year (2024)") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } diff --git a/Modules/Settings/WeatherTab.qml b/Modules/Settings/WeatherTab.qml index 39cf42ce..ffc8b63e 100644 --- a/Modules/Settings/WeatherTab.qml +++ b/Modules/Settings/WeatherTab.qml @@ -54,14 +54,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Enable Weather" + text: qsTr("Enable Weather") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Show weather information in top bar and control center" + text: qsTr("Show weather information in top bar and control center") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -120,14 +120,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Use Fahrenheit" + text: qsTr("Use Fahrenheit") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Use Fahrenheit instead of Celsius for temperature" + text: qsTr("Use Fahrenheit instead of Celsius for temperature") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -193,14 +193,14 @@ Item { anchors.verticalCenter: parent.verticalCenter StyledText { - text: "Auto Location" + text: qsTr("Auto Location") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText } StyledText { - text: "Automatically determine your location using your IP address" + text: qsTr("Automatically determine your location using your IP address") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText wrapMode: Text.WordWrap @@ -233,7 +233,7 @@ Item { } StyledText { - text: "Custom Location" + text: qsTr("Custom Location") font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceText font.weight: Font.Medium @@ -248,7 +248,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Latitude" + text: qsTr("Latitude") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -257,7 +257,7 @@ Item { id: latitudeInput width: parent.width height: 48 - placeholderText: "40.7128" + placeholderText: qsTr("40.7128") backgroundColor: Theme.surfaceVariant normalBorderColor: Theme.primarySelected focusedBorderColor: Theme.primary @@ -299,7 +299,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Longitude" + text: qsTr("Longitude") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText } @@ -308,7 +308,7 @@ Item { id: longitudeInput width: parent.width height: 48 - placeholderText: "-74.0060" + placeholderText: qsTr("-74.0060") backgroundColor: Theme.surfaceVariant normalBorderColor: Theme.primarySelected focusedBorderColor: Theme.primary @@ -352,7 +352,7 @@ Item { spacing: Theme.spacingXS StyledText { - text: "Location Search" + text: qsTr("Location Search") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceVariantText font.weight: Font.Medium @@ -362,7 +362,7 @@ Item { id: locationSearchInput width: parent.width currentLocation: "" - placeholderText: "New York, NY" + placeholderText: qsTr("New York, NY") keyNavigationBacktab: longitudeInput onLocationSelected: (displayName, coordinates) => { SettingsData.setWeatherLocation(displayName, coordinates) diff --git a/Modules/Settings/WidgetSelectionPopup.qml b/Modules/Settings/WidgetSelectionPopup.qml index 71210db8..9be628d6 100644 --- a/Modules/Settings/WidgetSelectionPopup.qml +++ b/Modules/Settings/WidgetSelectionPopup.qml @@ -188,7 +188,7 @@ DankModal { } StyledText { - text: "Add Widget to " + root.targetSection + " Section" + text: qsTr("Add Widget to ") + root.targetSection + " Section" font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -197,7 +197,7 @@ DankModal { } StyledText { - text: "Select a widget to add to the " + root.targetSection.toLowerCase( + text: qsTr("Select a widget to add to the ") + root.targetSection.toLowerCase( ) + " section of the top bar. You can add multiple instances of the same widget if needed." font.pixelSize: Theme.fontSizeSmall color: Theme.outline diff --git a/Modules/Settings/WidgetTweaksTab.qml b/Modules/Settings/WidgetTweaksTab.qml index 54c40853..faed6bf4 100644 --- a/Modules/Settings/WidgetTweaksTab.qml +++ b/Modules/Settings/WidgetTweaksTab.qml @@ -48,7 +48,7 @@ Item { } StyledText { - text: "Launcher Button" + text: qsTr("Launcher Button") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -58,7 +58,7 @@ Item { DankToggle { width: parent.width - text: "Use OS Logo" + text: qsTr("Use OS Logo") description: "Display operating system logo instead of apps icon" checked: SettingsData.useOSLogo onToggled: checked => { @@ -79,7 +79,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Color Override" + text: qsTr("Color Override") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -111,7 +111,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Brightness" + text: qsTr("Brightness") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -140,7 +140,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Contrast" + text: qsTr("Contrast") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -202,7 +202,7 @@ Item { } StyledText { - text: "Workspace Settings" + text: qsTr("Workspace Settings") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -212,7 +212,7 @@ Item { DankToggle { width: parent.width - text: "Workspace Index Numbers" + text: qsTr("Workspace Index Numbers") description: "Show workspace index numbers in the top bar workspace switcher" checked: SettingsData.showWorkspaceIndex onToggled: checked => { @@ -223,7 +223,7 @@ Item { DankToggle { width: parent.width - text: "Workspace Padding" + text: qsTr("Workspace Padding") description: "Always show a minimum of 3 workspaces, even if fewer are available" checked: SettingsData.showWorkspacePadding onToggled: checked => { @@ -234,7 +234,7 @@ Item { DankToggle { width: parent.width - text: "Show Workspace Apps" + text: qsTr("Show Workspace Apps") description: "Display application icons in workspace indicators" checked: SettingsData.showWorkspaceApps onToggled: checked => { @@ -256,7 +256,7 @@ Item { spacing: Theme.spacingS StyledText { - text: "Max apps to show" + text: qsTr("Max apps to show") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Medium @@ -287,7 +287,7 @@ Item { DankToggle { width: parent.width - text: "Per-Monitor Workspaces" + text: qsTr("Per-Monitor Workspaces") description: "Show only workspaces belonging to each specific monitor." checked: SettingsData.workspacesPerMonitor onToggled: checked => { @@ -325,7 +325,7 @@ Item { } StyledText { - text: "Media Player Settings" + text: qsTr("Media Player Settings") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -335,7 +335,7 @@ Item { DankToggle { width: parent.width - text: "Wave Progress Bars" + text: qsTr("Wave Progress Bars") description: "Use animated wave progress bars for media playback" checked: SettingsData.waveProgressEnabled onToggled: checked => { @@ -373,7 +373,7 @@ Item { } StyledText { - text: "Running Apps Settings" + text: qsTr("Running Apps Settings") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -383,7 +383,7 @@ Item { DankToggle { width: parent.width - text: "Running Apps Only In Current Workspace" + text: qsTr("Running Apps Only In Current Workspace") description: "Show only apps running in current workspace" checked: SettingsData.runningAppsCurrentWorkspace onToggled: checked => { @@ -423,7 +423,7 @@ Item { } StyledText { - text: "Named Workspace Icons" + text: qsTr("Named Workspace Icons") font.pixelSize: Theme.fontSizeLarge font.weight: Font.Medium color: Theme.surfaceText @@ -433,7 +433,7 @@ Item { StyledText { width: parent.width - text: "Configure icons for named workspaces. Icons take priority over numbers when both are enabled." + text: qsTr("Configure icons for named workspaces. Icons take priority over numbers when both are enabled.") font.pixelSize: Theme.fontSizeSmall color: Theme.outline wrapMode: Text.WordWrap diff --git a/Modules/Settings/WidgetsTabSection.qml b/Modules/Settings/WidgetsTabSection.qml index 7fbf8dff..e29f645d 100644 --- a/Modules/Settings/WidgetsTabSection.qml +++ b/Modules/Settings/WidgetsTabSection.qml @@ -480,7 +480,7 @@ Column { StyledText { id: tooltipText anchors.centerIn: parent - text: "Compact Mode" + text: qsTr("Compact Mode") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText } @@ -667,7 +667,7 @@ Column { anchors.horizontalCenter: parent.horizontalCenter StyledText { - text: "Add Widget" + text: qsTr("Add Widget") font.pixelSize: Theme.fontSizeSmall font.weight: Font.Medium color: Theme.primary @@ -752,7 +752,7 @@ Column { } StyledText { - text: "Network Icon" + text: qsTr("Network Icon") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal @@ -805,7 +805,7 @@ Column { } StyledText { - text: "Bluetooth Icon" + text: qsTr("Bluetooth Icon") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal @@ -858,7 +858,7 @@ Column { } StyledText { - text: "Audio Icon" + text: qsTr("Audio Icon") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText font.weight: Font.Normal diff --git a/Modules/SystemUpdatePopout.qml b/Modules/SystemUpdatePopout.qml index 61862c1f..ad7b31e4 100644 --- a/Modules/SystemUpdatePopout.qml +++ b/Modules/SystemUpdatePopout.qml @@ -86,7 +86,7 @@ DankPopout { height: 40 StyledText { - text: "System Updates" + text: qsTr("System Updates") font.pixelSize: Theme.fontSizeLarge color: Theme.surfaceText font.weight: Font.Medium @@ -282,7 +282,7 @@ DankPopout { } StyledText { - text: "Update All" + text: qsTr("Update All") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.primary @@ -326,7 +326,7 @@ DankPopout { } StyledText { - text: "Close" + text: qsTr("Close") font.pixelSize: Theme.fontSizeMedium font.weight: Font.Medium color: Theme.surfaceText diff --git a/Modules/Toast.qml b/Modules/Toast.qml index 9b6c1d56..4eb9a15b 100644 --- a/Modules/Toast.qml +++ b/Modules/Toast.qml @@ -282,7 +282,7 @@ PanelWindow { StyledText { id: tooltipLabel anchors.centerIn: parent - text: "Copied!" + text: qsTr("Copied!") font.pixelSize: Theme.fontSizeSmall color: Theme.surfaceText } diff --git a/Services/AppSearchService.qml b/Services/AppSearchService.qml index 1ebff8e3..2bdadde8 100644 --- a/Services/AppSearchService.qml +++ b/Services/AppSearchService.qml @@ -152,30 +152,30 @@ Singleton { return [] const categoryMap = { - "AudioVideo": "Media", - "Audio": "Media", - "Video": "Media", - "Development": "Development", - "TextEditor": "Development", - "IDE": "Development", - "Education": "Education", - "Game": "Games", - "Graphics": "Graphics", - "Photography": "Graphics", - "Network": "Internet", - "WebBrowser": "Internet", - "Email": "Internet", - "Office": "Office", - "WordProcessor": "Office", - "Spreadsheet": "Office", - "Presentation": "Office", - "Science": "Science", - "Settings": "Settings", - "System": "System", - "Utility": "Utilities", - "Accessories": "Utilities", - "FileManager": "Utilities", - "TerminalEmulator": "Utilities" + "AudioVideo": qsTr("Media"), + "Audio": qsTr("Media"), + "Video": qsTr("Media"), + "Development": qsTr("Development"), + "TextEditor": qsTr("Development"), + "IDE": qsTr("Development"), + "Education": qsTr("Education"), + "Game": qsTr("Games"), + "Graphics": qsTr("Graphics"), + "Photography": qsTr("Graphics"), + "Network": qsTr("Internet"), + "WebBrowser": qsTr("Internet"), + "Email": qsTr("Internet"), + "Office": qsTr("Office"), + "WordProcessor": qsTr("Office"), + "Spreadsheet": qsTr("Office"), + "Presentation": qsTr("Office"), + "Science": qsTr("Science"), + "Settings": qsTr("Settings"), + "System": qsTr("System"), + "Utility": qsTr("Utilities"), + "Accessories": qsTr("Utilities"), + "FileManager": qsTr("Utilities"), + "TerminalEmulator": qsTr("Utilities") } const mappedCategories = new Set() @@ -206,7 +206,7 @@ Singleton { } function getAllCategories() { - const categories = new Set(["All"]) + const categories = new Set([qsTr("All")]) for (const app of applications) { const appCategories = getCategoriesForApp(app) @@ -217,7 +217,7 @@ Singleton { } function getAppsInCategory(category) { - if (category === "All") { + if (category === qsTr("All")) { return applications } diff --git a/Services/NotepadStorageService.qml b/Services/NotepadStorageService.qml index c9b9f859..28f83624 100644 --- a/Services/NotepadStorageService.qml +++ b/Services/NotepadStorageService.qml @@ -59,7 +59,7 @@ Singleton { createEmptyFile(fullPath, function() { root.tabs = [{ id: id, - title: "Untitled", + title: qsTr("Untitled"), filePath: filePath, isTemporary: true, lastModified: new Date().toISOString(), @@ -129,7 +129,7 @@ Singleton { var newTab = { id: id, - title: "Untitled", + title: qsTr("Untitled"), filePath: filePath, isTemporary: true, lastModified: new Date().toISOString(), @@ -170,7 +170,7 @@ Singleton { createEmptyFile(baseDir + "/" + filePath, function() { newTabs[0] = { id: id, - title: "Untitled", + title: qsTr("Untitled"), filePath: filePath, isTemporary: true, lastModified: new Date().toISOString(), diff --git a/Widgets/DankDropdown.qml b/Widgets/DankDropdown.qml index ed32dc84..44b8f847 100644 --- a/Widgets/DankDropdown.qml +++ b/Widgets/DankDropdown.qml @@ -257,7 +257,7 @@ Item { anchors.fill: parent anchors.margins: 1 - placeholderText: "Search..." + placeholderText: qsTr("Search...") text: dropdownMenu.searchQuery topPadding: Theme.spacingS bottomPadding: Theme.spacingS diff --git a/Widgets/DankIconPicker.qml b/Widgets/DankIconPicker.qml index 6a45a8e1..3aacc232 100644 --- a/Widgets/DankIconPicker.qml +++ b/Widgets/DankIconPicker.qml @@ -22,34 +22,34 @@ Rectangle { border.width: 1 property var iconCategories: [{ - "name": "Numbers", + "name": qsTr("Numbers"), "icons": ["looks_one", "looks_two", "looks_3", "looks_4", "looks_5", "looks_6", "filter_1", "filter_2", "filter_3", "filter_4", "filter_5", "filter_6", "filter_7", "filter_8", "filter_9", "filter_9_plus", "plus_one", "exposure_plus_1", "exposure_plus_2"] }, { - "name": "Workspace", + "name": qsTr("Workspace"), "icons": ["work", "laptop", "desktop_windows", "folder", "view_module", "dashboard", "apps", "grid_view"] }, { - "name": "Development", + "name": qsTr("Development"), "icons": ["code", "terminal", "bug_report", "build", "engineering", "integration_instructions", "data_object", "schema", "api", "webhook"] }, { - "name": "Communication", + "name": qsTr("Communication"), "icons": ["chat", "mail", "forum", "message", "video_call", "call", "contacts", "group", "notifications", "campaign"] }, { - "name": "Media", + "name": qsTr("Media"), "icons": ["music_note", "headphones", "mic", "videocam", "photo", "movie", "library_music", "album", "radio", "volume_up"] }, { - "name": "System", + "name": qsTr("System"), "icons": ["memory", "storage", "developer_board", "monitor", "keyboard", "mouse", "battery_std", "wifi", "bluetooth", "security", "settings"] }, { - "name": "Navigation", + "name": qsTr("Navigation"), "icons": ["home", "arrow_forward", "arrow_back", "expand_more", "expand_less", "menu", "close", "search", "filter_list", "sort"] }, { - "name": "Actions", + "name": qsTr("Actions"), "icons": ["add", "remove", "edit", "delete", "save", "download", "upload", "share", "content_copy", "content_paste", "content_cut", "undo", "redo"] }, { - "name": "Status", + "name": qsTr("Status"), "icons": ["check", "error", "warning", "info", "done", "pending", "schedule", "update", "sync", "offline_bolt"] }, { - "name": "Fun", + "name": qsTr("Fun"), "icons": ["celebration", "cake", "star", "favorite", "pets", "sports_esports", "local_fire_department", "bolt", "auto_awesome", "diamond"] }] @@ -67,7 +67,7 @@ Rectangle { } StyledText { - text: root.currentIcon ? root.currentIcon : "Choose icon" + text: root.currentIcon ? root.currentIcon : qsTr("Choose icon") font.pixelSize: Theme.fontSizeSmall color: root.currentIcon ? Theme.surfaceText : Theme.outline anchors.verticalCenter: parent.verticalCenter diff --git a/Widgets/DankLocationSearch.qml b/Widgets/DankLocationSearch.qml index 49f391df..272780ba 100644 --- a/Widgets/DankLocationSearch.qml +++ b/Widgets/DankLocationSearch.qml @@ -19,7 +19,7 @@ Item { } property string currentLocation: "" - property string placeholderText: "Search for a location..." + property string placeholderText: qsTr("Search for a location...") property bool _internalChange: false property bool isLoading: false property string currentSearchText: "" diff --git a/translations/README.md b/translations/README.md new file mode 100644 index 00000000..19fc1780 --- /dev/null +++ b/translations/README.md @@ -0,0 +1,64 @@ +# DankMaterialShell Translations + +This directory contains translation files for DankMaterialShell extracted from all qsTr() calls in the QML codebase. + +## Files + +- **en.json** - Source language file with English strings and file references +- **template.json** - Empty template for creating new translations +- **extract_translations.py** - Script to regenerate translation files + +## POEditor Format + +The JSON files follow POEditor's import format: + +```json +[ + { + "term": "string to translate", + "context": "file:line", + "reference": "Modules/Settings/AboutTab.qml:45", + "comment": "" + } +] +``` + +### Field Descriptions + +- **term**: The source string in English (from qsTr() calls) +- **context**: Primary location where the string appears (file:line) +- **reference**: All locations where this string is used (comma-separated) +- **comment**: Additional notes for translators (currently empty) + +## How to Create a New Translation + +1. Copy `template.json` to your language code (e.g., `es.json` for Spanish) +2. Fill in the `translation` field for each entry: + ```json + { + "term": "Settings", + "translation": "Configuración", + "context": "Modals/Settings/SettingsModal.qml:147", + "reference": "Modals/Settings/SettingsModal.qml:147", + "comment": "" + } + ``` +3. Import to POEditor or use directly in your translation workflow + +## Regenerating Translation Files + +To update the translation files after code changes: + +```bash +cd /home/brandon/.config/quickshell/DankMaterialShellGit/translations +./extract_translations.py +``` + +This will scan all QML files and regenerate `en.json` and `template.json`. + +## Notes + +- Strings are deduplicated - if the same string appears in multiple locations, references are merged +- File paths are relative to the project root +- Line numbers are preserved for accurate context +- Empty strings and comments are reserved for translator notes diff --git a/translations/WORKFLOW.md b/translations/WORKFLOW.md new file mode 100644 index 00000000..1bd2da86 --- /dev/null +++ b/translations/WORKFLOW.md @@ -0,0 +1,185 @@ +# Translation Workflow for DankMaterialShell + +## POEditor Integration Guide + +### Initial Setup + +1. **Create POEditor Project** + - Go to https://poeditor.com + - Create new project "DankMaterialShell" + - Add languages you want to support (es, fr, de, etc.) + +2. **Import Source Strings** + - Upload `en.json` as the source language + - POEditor will detect 336 translatable strings + - Format: Key-Value JSON + +### Translation Workflow + +#### Method 1: Using POEditor (Recommended) + +1. **Upload source file** + ```bash + # Upload en.json to POEditor + ``` + +2. **Translate in POEditor** + - Use POEditor's web interface + - Invite translators + - Track progress per language + +3. **Export translations** + ```bash + # Download from POEditor as JSON + # Save to translations/{language_code}.json + # Example: translations/es.json, translations/fr.json + ``` + +4. **Test translations** + ```bash + # Set your locale and restart shell + export LANG=es_ES.UTF-8 + qs -p . + ``` + +#### Method 2: Manual Translation + +1. **Copy template** + ```bash + cp translations/template.json translations/es.json + ``` + +2. **Fill in translations** + ```json + { + "term": "Settings", + "context": "Modals/Settings/SettingsModal.qml:147", + "reference": "Modals/Settings/SettingsModal.qml:147", + "comment": "", + "translation": "Configuración" + } + ``` + +3. **Upload to POEditor** (optional) + +### Updating Translations After Code Changes + +1. **Re-extract strings** + ```bash + cd translations + python3 extract_translations.py + ``` + +2. **Upload updated en.json to POEditor** + - POEditor will detect new/removed strings + - Preserves existing translations + +3. **Download updated translations** + +### Translation File Format + +POEditor-compatible JSON format: + +```json +[ + { + "term": "source string in English", + "context": "file:line where it appears", + "reference": "full/path/to/file.qml:123", + "comment": "optional context for translators", + "translation": "translated string" + } +] +``` + +### Supported Languages + +The shell will auto-detect your system locale. Supported format: +- `es.json` → Spanish (es_ES, es_MX, etc.) +- `fr.json` → French (fr_FR, fr_CA, etc.) +- `de.json` → German +- `zh.json` → Chinese +- `ja.json` → Japanese +- `pt.json` → Portuguese +- etc. + +### Testing Translations + +1. **Change system locale** + ```bash + export LANG=es_ES.UTF-8 + export LC_ALL=es_ES.UTF-8 + ``` + +2. **Restart shell** + ```bash + qs -p . + ``` + +3. **Verify translations appear correctly** + +### File Structure + +``` +translations/ +├── en.json # Source language (English) +├── template.json # Empty template for new languages +├── es.json # Spanish translation +├── fr.json # French translation +├── extract_translations.py # Auto-extraction script +├── README.md # Technical documentation +└── WORKFLOW.md # This file +``` + +### Translation Statistics + +- **Total strings:** 336 unique terms +- **Most translated components:** + - Settings UI: 202 strings (60%) + - Weather: 25 strings (7%) + - System monitors: Various + - Modals: 43 strings (13%) + +### POEditor API Integration (Advanced) + +For automated sync, use POEditor's API: + +```bash +# Export from POEditor +curl -X POST https://api.poeditor.com/v2/projects/export \ + -d api_token="YOUR_TOKEN" \ + -d id="PROJECT_ID" \ + -d language="es" \ + -d type="key_value_json" + +# Import to POEditor +curl -X POST https://api.poeditor.com/v2/projects/upload \ + -d api_token="YOUR_TOKEN" \ + -d id="PROJECT_ID" \ + -d updating="terms_translations" \ + -d language="es" \ + -F file=@"translations/es.json" +``` + +### Best Practices + +1. **Context matters:** Use the reference field to understand where strings appear +2. **Test before committing:** Always test translations in the actual UI +3. **Keep synchronized:** Re-extract after significant UI changes +4. **Preserve formatting:** Keep placeholders like `%1`, `{0}` intact +5. **Cultural adaptation:** Some strings may need cultural context, not just literal translation + +### Troubleshooting + +**Translations not loading?** +- Check file exists: `~/.config/DankMaterialShell/translations/{language_code}.json` +- Verify JSON syntax: `python3 -m json.tool translations/es.json` +- Check console for errors: `qs -v -p .` + +**Wrong language loading?** +- Check system locale: `echo $LANG` +- Verify file naming: Must match locale prefix (es_ES → es.json) + +**Missing strings?** +- Re-run extraction: `python3 extract_translations.py` +- Compare with en.json to find new strings diff --git a/translations/en.json b/translations/en.json new file mode 100644 index 00000000..30c53b95 --- /dev/null +++ b/translations/en.json @@ -0,0 +1,2132 @@ +[ + { + "term": "%1 characters", + "context": "Modules/Notepad/NotepadTextEditor.qml:565", + "reference": "Modules/Notepad/NotepadTextEditor.qml:565", + "comment": "" + }, + { + "term": "%1/%2", + "context": "Modules/Notepad/NotepadTextEditor.qml:278", + "reference": "Modules/Notepad/NotepadTextEditor.qml:278", + "comment": "" + }, + { + "term": "(Unnamed)", + "context": "Modules/Dock/DockContextMenu.qml:228", + "reference": "Modules/Dock/DockContextMenu.qml:228", + "comment": "" + }, + { + "term": "- Stateless System Monitoring", + "context": "Modules/Settings/AboutTab.qml:475", + "reference": "Modules/Settings/AboutTab.qml:475", + "comment": "" + }, + { + "term": "- Support Us With a Star ⭐", + "context": "Modules/Settings/AboutTab.qml:440", + "reference": "Modules/Settings/AboutTab.qml:440", + "comment": "" + }, + { + "term": "-74.0060", + "context": "Modules/Settings/WeatherTab.qml:311", + "reference": "Modules/Settings/WeatherTab.qml:311", + "comment": "" + }, + { + "term": "0.0", + "context": "Modules/Settings/PersonalizationTab.qml:1349", + "reference": "Modules/Settings/PersonalizationTab.qml:1349, Modules/Settings/PersonalizationTab.qml:1372", + "comment": "" + }, + { + "term": "00:00", + "context": "Modules/Settings/PersonalizationTab.qml:771", + "reference": "Modules/Settings/PersonalizationTab.qml:771", + "comment": "" + }, + { + "term": "100%", + "context": "Modules/DankBar/Widgets/RamMonitor.qml:144", + "reference": "Modules/DankBar/Widgets/RamMonitor.qml:144, Modules/DankBar/Widgets/DiskUsage.qml:228, Modules/DankBar/Widgets/CpuMonitor.qml:143", + "comment": "" + }, + { + "term": "100°", + "context": "Modules/DankBar/Widgets/CpuTemperature.qml:143", + "reference": "Modules/DankBar/Widgets/CpuTemperature.qml:143, Modules/DankBar/Widgets/GpuTemperature.qml:210", + "comment": "" + }, + { + "term": "123", + "context": "Modules/Lock/Keyboard.qml:172", + "reference": "Modules/Lock/Keyboard.qml:172", + "comment": "" + }, + { + "term": "24-Hour Format", + "context": "Modules/Settings/TimeTab.qml:57", + "reference": "Modules/Settings/TimeTab.qml:57", + "comment": "" + }, + { + "term": "24-hour format", + "context": "Modules/Settings/PersonalizationTab.qml:829", + "reference": "Modules/Settings/PersonalizationTab.qml:829", + "comment": "" + }, + { + "term": "3rd party", + "context": "Modules/Settings/PluginsTab.qml:992", + "reference": "Modules/Settings/PluginsTab.qml:992", + "comment": "" + }, + { + "term": "40.7128", + "context": "Modules/Settings/WeatherTab.qml:260", + "reference": "Modules/Settings/WeatherTab.qml:260", + "comment": "" + }, + { + "term": "7-Day Forecast", + "context": "Modules/DankDash/WeatherTab.qml:525", + "reference": "Modules/DankDash/WeatherTab.qml:525", + "comment": "" + }, + { + "term": "A file with this name already exists. Do you want to overwrite it?", + "context": "Modals/FileBrowser/FileBrowserModal.qml:903", + "reference": "Modals/FileBrowser/FileBrowserModal.qml:903", + "comment": "" + }, + { + "term": "About", + "context": "Modules/Settings/AboutTab.qml:251", + "reference": "Modules/Settings/AboutTab.qml:251", + "comment": "" + }, + { + "term": "Actions", + "context": "Widgets/DankIconPicker.qml:46", + "reference": "Widgets/DankIconPicker.qml:46", + "comment": "" + }, + { + "term": "Add", + "context": "Modules/Plugins/ListSettingWithInput.qml:126", + "reference": "Modules/Plugins/ListSettingWithInput.qml:126", + "comment": "" + }, + { + "term": "Add Widget", + "context": "Modules/Settings/WidgetsTabSection.qml:670", + "reference": "Modules/Settings/WidgetsTabSection.qml:670, Modules/ControlCenter/Components/EditControls.qml:58, Modules/ControlCenter/Components/EditControls.qml:158", + "comment": "" + }, + { + "term": "Add Widget to ", + "context": "Modules/Settings/WidgetSelectionPopup.qml:191", + "reference": "Modules/Settings/WidgetSelectionPopup.qml:191", + "comment": "" + }, + { + "term": "Add a VPN in NetworkManager", + "context": "Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml:143", + "reference": "Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml:143, Modules/DankBar/Popouts/VpnPopout.qml:272", + "comment": "" + }, + { + "term": "All", + "context": "Services/AppSearchService.qml:209", + "reference": "Services/AppSearchService.qml:209, Services/AppSearchService.qml:220", + "comment": "" + }, + { + "term": "All displays", + "context": "Modules/Settings/DisplaysTab.qml:291", + "reference": "Modules/Settings/DisplaysTab.qml:291", + "comment": "" + }, + { + "term": "Always Show OSD Percentage", + "context": "Modules/Settings/PersonalizationTab.qml:1483", + "reference": "Modules/Settings/PersonalizationTab.qml:1483", + "comment": "" + }, + { + "term": "Animation Speed", + "context": "Modules/Settings/PersonalizationTab.qml:1764", + "reference": "Modules/Settings/PersonalizationTab.qml:1764", + "comment": "" + }, + { + "term": "Animations", + "context": "Modules/Settings/PersonalizationTab.qml:1751", + "reference": "Modules/Settings/PersonalizationTab.qml:1751", + "comment": "" + }, + { + "term": "Applications", + "context": "Modules/AppDrawer/AppDrawerPopout.qml:189", + "reference": "Modules/AppDrawer/AppDrawerPopout.qml:189", + "comment": "" + }, + { + "term": "Apply", + "context": "Modals/DankColorPickerModal.qml:521", + "reference": "Modals/DankColorPickerModal.qml:521", + "comment": "" + }, + { + "term": "Apply GTK Colors", + "context": "Modules/Settings/ThemeColorsTab.qml:1081", + "reference": "Modules/Settings/ThemeColorsTab.qml:1081", + "comment": "" + }, + { + "term": "Apply Qt Colors", + "context": "Modules/Settings/ThemeColorsTab.qml:1117", + "reference": "Modules/Settings/ThemeColorsTab.qml:1117", + "comment": "" + }, + { + "term": "Apps are ordered by usage frequency, then last used, then alphabetically.", + "context": "Modules/Settings/LauncherTab.qml:160", + "reference": "Modules/Settings/LauncherTab.qml:160", + "comment": "" + }, + { + "term": "Are you sure you want to hibernate the system?", + "context": "Modals/PowerMenuModal.qml:44", + "reference": "Modals/PowerMenuModal.qml:44", + "comment": "" + }, + { + "term": "Are you sure you want to log out?", + "context": "Modals/PowerMenuModal.qml:36", + "reference": "Modals/PowerMenuModal.qml:36", + "comment": "" + }, + { + "term": "Are you sure you want to power off the system?", + "context": "Modals/PowerMenuModal.qml:52", + "reference": "Modals/PowerMenuModal.qml:52", + "comment": "" + }, + { + "term": "Are you sure you want to reboot the system?", + "context": "Modals/PowerMenuModal.qml:48", + "reference": "Modals/PowerMenuModal.qml:48", + "comment": "" + }, + { + "term": "Are you sure you want to suspend the system?", + "context": "Modals/PowerMenuModal.qml:40", + "reference": "Modals/PowerMenuModal.qml:40", + "comment": "" + }, + { + "term": "Audio Codec", + "context": "Modules/ControlCenter/Details/BluetoothDetail.qml:476", + "reference": "Modules/ControlCenter/Details/BluetoothDetail.qml:476", + "comment": "" + }, + { + "term": "Audio Codec Selection", + "context": "Modules/ControlCenter/Details/BluetoothCodecSelector.qml:173", + "reference": "Modules/ControlCenter/Details/BluetoothCodecSelector.qml:173", + "comment": "" + }, + { + "term": "Audio Devices", + "context": "Modules/ControlCenter/Details/AudioOutputDetail.qml:33", + "reference": "Modules/ControlCenter/Details/AudioOutputDetail.qml:33", + "comment": "" + }, + { + "term": "Audio Icon", + "context": "Modules/Settings/WidgetsTabSection.qml:861", + "reference": "Modules/Settings/WidgetsTabSection.qml:861", + "comment": "" + }, + { + "term": "Audio Output Devices (", + "context": "Modules/DankDash/MediaPlayerTab.qml:409", + "reference": "Modules/DankDash/MediaPlayerTab.qml:409", + "comment": "" + }, + { + "term": "Auto Location", + "context": "Modules/Settings/WeatherTab.qml:196", + "reference": "Modules/Settings/WeatherTab.qml:196", + "comment": "" + }, + { + "term": "Auto-hide", + "context": "Modules/Settings/DankBarTab.qml:768", + "reference": "Modules/Settings/DankBarTab.qml:768", + "comment": "" + }, + { + "term": "Auto-hide Dock", + "context": "Modules/Settings/DockTab.qml:128", + "reference": "Modules/Settings/DockTab.qml:128", + "comment": "" + }, + { + "term": "Auto-location", + "context": "Modules/Settings/PersonalizationTab.qml:1310", + "reference": "Modules/Settings/PersonalizationTab.qml:1310", + "comment": "" + }, + { + "term": "Auto-saving...", + "context": "Modules/Notepad/NotepadTextEditor.qml:581", + "reference": "Modules/Notepad/NotepadTextEditor.qml:581", + "comment": "" + }, + { + "term": "Automatic Control", + "context": "Modules/Settings/PersonalizationTab.qml:1103", + "reference": "Modules/Settings/PersonalizationTab.qml:1103", + "comment": "" + }, + { + "term": "Automatic Cycling", + "context": "Modules/Settings/PersonalizationTab.qml:583", + "reference": "Modules/Settings/PersonalizationTab.qml:583", + "comment": "" + }, + { + "term": "Automatically cycle through wallpapers in the same folder", + "context": "Modules/Settings/PersonalizationTab.qml:590", + "reference": "Modules/Settings/PersonalizationTab.qml:590", + "comment": "" + }, + { + "term": "Automatically determine your location using your IP address", + "context": "Modules/Settings/WeatherTab.qml:203", + "reference": "Modules/Settings/WeatherTab.qml:203", + "comment": "" + }, + { + "term": "Automatically extract colors from wallpaper", + "context": "Modules/Settings/PersonalizationTab.qml:944", + "reference": "Modules/Settings/PersonalizationTab.qml:944", + "comment": "" + }, + { + "term": "Automatically hide the top bar to expand screen real estate", + "context": "Modules/Settings/DankBarTab.qml:775", + "reference": "Modules/Settings/DankBarTab.qml:775", + "comment": "" + }, + { + "term": "Automatically lock after", + "context": "Modals/Settings/PowerSettings.qml:82", + "reference": "Modals/Settings/PowerSettings.qml:82", + "comment": "" + }, + { + "term": "Available", + "context": "Modules/ProcessList/SystemTab.qml:478", + "reference": "Modules/ProcessList/SystemTab.qml:478", + "comment": "" + }, + { + "term": "Available Plugins", + "context": "Modules/Settings/PluginsTab.qml:210", + "reference": "Modules/Settings/PluginsTab.qml:210", + "comment": "" + }, + { + "term": "Available Screens (", + "context": "Modules/Settings/DisplaysTab.qml:134", + "reference": "Modules/Settings/DisplaysTab.qml:134", + "comment": "" + }, + { + "term": "Back", + "context": "Modules/DankBar/Widgets/SystemTrayBar.qml:448", + "reference": "Modules/DankBar/Widgets/SystemTrayBar.qml:448", + "comment": "" + }, + { + "term": "Battery not detected - only AC power settings available", + "context": "Modals/Settings/PowerSettings.qml:22", + "reference": "Modals/Settings/PowerSettings.qml:22", + "comment": "" + }, + { + "term": "Bluetooth Icon", + "context": "Modules/Settings/WidgetsTabSection.qml:808", + "reference": "Modules/Settings/WidgetsTabSection.qml:808", + "comment": "" + }, + { + "term": "Bluetooth Settings", + "context": "Modules/ControlCenter/Details/BluetoothDetail.qml:42", + "reference": "Modules/ControlCenter/Details/BluetoothDetail.qml:42", + "comment": "" + }, + { + "term": "Border", + "context": "Modules/Settings/DankBarTab.qml:1061", + "reference": "Modules/Settings/DankBarTab.qml:1061", + "comment": "" + }, + { + "term": "Brightness", + "context": "Modules/Settings/WidgetTweaksTab.qml:114", + "reference": "Modules/Settings/WidgetTweaksTab.qml:114", + "comment": "" + }, + { + "term": "Browse", + "context": "Modules/Settings/PluginsTab.qml:124", + "reference": "Modules/Settings/PluginsTab.qml:124", + "comment": "" + }, + { + "term": "Browse Plugins", + "context": "Modules/Settings/PluginsTab.qml:785", + "reference": "Modules/Settings/PluginsTab.qml:785", + "comment": "" + }, + { + "term": "CPU", + "context": "Modules/ProcessList/SystemOverview.qml:51", + "reference": "Modules/ProcessList/SystemOverview.qml:51", + "comment": "" + }, + { + "term": "Cancel", + "context": "Modals/DankColorPickerModal.qml:548", + "reference": "Modals/DankColorPickerModal.qml:548, Modals/WifiPasswordModal.qml:232, Modals/FileBrowser/FileBrowserModal.qml:925, Modules/Lock/LockScreenContent.qml:1247, Modules/Greetd/GreeterContent.qml:1328, Modules/Settings/PluginsTab.qml:1214", + "comment": "" + }, + { + "term": "Capacity", + "context": "Modules/ControlCenter/Details/BatteryDetail.qml:171", + "reference": "Modules/ControlCenter/Details/BatteryDetail.qml:171, Modules/DankBar/Popouts/BatteryPopout.qml:349", + "comment": "" + }, + { + "term": "Center Section", + "context": "Modules/Settings/DankBarTab.qml:1284", + "reference": "Modules/Settings/DankBarTab.qml:1284", + "comment": "" + }, + { + "term": "Choose icon", + "context": "Widgets/DankIconPicker.qml:70", + "reference": "Widgets/DankIconPicker.qml:70", + "comment": "" + }, + { + "term": "Clear", + "context": "Modules/Notifications/Popup/NotificationPopup.qml:490", + "reference": "Modules/Notifications/Popup/NotificationPopup.qml:490, Modules/Notifications/Center/NotificationCard.qml:552, Modules/Notifications/Center/NotificationCard.qml:645", + "comment": "" + }, + { + "term": "Clear All", + "context": "Modules/Notifications/Center/NotificationHeader.qml:123", + "reference": "Modules/Notifications/Center/NotificationHeader.qml:123", + "comment": "" + }, + { + "term": "Close", + "context": "Modules/SystemUpdatePopout.qml:329", + "reference": "Modules/SystemUpdatePopout.qml:329, Modals/NetworkInfoModal.qml:129, Modules/DankBar/Widgets/RunningApps.qml:613", + "comment": "" + }, + { + "term": "Color Override", + "context": "Modules/Settings/WidgetTweaksTab.qml:82", + "reference": "Modules/Settings/WidgetTweaksTab.qml:82", + "comment": "" + }, + { + "term": "Communication", + "context": "Widgets/DankIconPicker.qml:34", + "reference": "Widgets/DankIconPicker.qml:34", + "comment": "" + }, + { + "term": "Compact Mode", + "context": "Modules/Settings/WidgetsTabSection.qml:483", + "reference": "Modules/Settings/WidgetsTabSection.qml:483", + "comment": "" + }, + { + "term": "Compositor:", + "context": "Modules/Settings/AboutTab.qml:361", + "reference": "Modules/Settings/AboutTab.qml:361", + "comment": "" + }, + { + "term": "Configure icons for named workspaces. Icons take priority over numbers when both are enabled.", + "context": "Modules/Settings/WidgetTweaksTab.qml:436", + "reference": "Modules/Settings/WidgetTweaksTab.qml:436", + "comment": "" + }, + { + "term": "Configure which displays show shell components", + "context": "Modules/Settings/DisplaysTab.qml:118", + "reference": "Modules/Settings/DisplaysTab.qml:118", + "comment": "" + }, + { + "term": "Connect", + "context": "Modals/WifiPasswordModal.qml:263", + "reference": "Modals/WifiPasswordModal.qml:263", + "comment": "" + }, + { + "term": "Connect to Wi-Fi", + "context": "Modals/WifiPasswordModal.qml:81", + "reference": "Modals/WifiPasswordModal.qml:81", + "comment": "" + }, + { + "term": "Connected Displays", + "context": "Modules/Settings/DisplaysTab.qml:111", + "reference": "Modules/Settings/DisplaysTab.qml:111", + "comment": "" + }, + { + "term": "Contrast", + "context": "Modules/Settings/WidgetTweaksTab.qml:143", + "reference": "Modules/Settings/WidgetTweaksTab.qml:143", + "comment": "" + }, + { + "term": "Control the speed of animations throughout the interface", + "context": "Modules/Settings/PersonalizationTab.qml:1771", + "reference": "Modules/Settings/PersonalizationTab.qml:1771", + "comment": "" + }, + { + "term": "Copied!", + "context": "Modules/Toast.qml:285", + "reference": "Modules/Toast.qml:285", + "comment": "" + }, + { + "term": "Copy", + "context": "Modals/DankColorPickerModal.qml:567", + "reference": "Modals/DankColorPickerModal.qml:567", + "comment": "" + }, + { + "term": "Copy PID", + "context": "Modules/ProcessList/ProcessContextMenu.qml:88", + "reference": "Modules/ProcessList/ProcessContextMenu.qml:88", + "comment": "" + }, + { + "term": "Copy Process Name", + "context": "Modules/ProcessList/ProcessContextMenu.qml:121", + "reference": "Modules/ProcessList/ProcessContextMenu.qml:121", + "comment": "" + }, + { + "term": "Create Dir", + "context": "Modules/Settings/PluginsTab.qml:146", + "reference": "Modules/Settings/PluginsTab.qml:146", + "comment": "" + }, + { + "term": "Critical Priority", + "context": "Modules/Notifications/Center/NotificationSettings.qml:190", + "reference": "Modules/Notifications/Center/NotificationSettings.qml:190", + "comment": "" + }, + { + "term": "Current Items", + "context": "Modules/Plugins/ListSettingWithInput.qml:162", + "reference": "Modules/Plugins/ListSettingWithInput.qml:162", + "comment": "" + }, + { + "term": "Custom Location", + "context": "Modules/Settings/WeatherTab.qml:236", + "reference": "Modules/Settings/WeatherTab.qml:236", + "comment": "" + }, + { + "term": "Custom Transparency", + "context": "Modules/Notepad/NotepadSettings.qml:333", + "reference": "Modules/Notepad/NotepadSettings.qml:333", + "comment": "" + }, + { + "term": "Custom: ", + "context": "Modules/Settings/TimeTab.qml:161", + "reference": "Modules/Settings/TimeTab.qml:161, Modules/Settings/TimeTab.qml:224", + "comment": "" + }, + { + "term": "DEMO MODE - Click anywhere to exit", + "context": "Modules/Lock/LockScreenContent.qml:612", + "reference": "Modules/Lock/LockScreenContent.qml:612", + "comment": "" + }, + { + "term": "DMS Plugin Manager Unavailable", + "context": "Modules/Settings/PluginsTab.qml:101", + "reference": "Modules/Settings/PluginsTab.qml:101", + "comment": "" + }, + { + "term": "Daily at:", + "context": "Modules/Settings/PersonalizationTab.qml:754", + "reference": "Modules/Settings/PersonalizationTab.qml:754", + "comment": "" + }, + { + "term": "Dank Bar Transparency", + "context": "Modules/Settings/ThemeColorsTab.qml:772", + "reference": "Modules/Settings/ThemeColorsTab.qml:772", + "comment": "" + }, + { + "term": "Dank Bar Widget Transparency", + "context": "Modules/Settings/ThemeColorsTab.qml:806", + "reference": "Modules/Settings/ThemeColorsTab.qml:806", + "comment": "" + }, + { + "term": "Dank Suite:", + "context": "Modules/Settings/AboutTab.qml:483", + "reference": "Modules/Settings/AboutTab.qml:483", + "comment": "" + }, + { + "term": "Date Format", + "context": "Modules/Settings/TimeTab.qml:115", + "reference": "Modules/Settings/TimeTab.qml:115", + "comment": "" + }, + { + "term": "Defaults", + "context": "Modules/ControlCenter/Components/EditControls.qml:192", + "reference": "Modules/ControlCenter/Components/EditControls.qml:192", + "comment": "" + }, + { + "term": "Del: Clear • Shift+Del: Clear All • 1-9: Actions • F10: Help • Esc: Close", + "context": "Modules/Notifications/Center/NotificationKeyboardHints.qml:35", + "reference": "Modules/Notifications/Center/NotificationKeyboardHints.qml:35", + "comment": "" + }, + { + "term": "Development", + "context": "Services/AppSearchService.qml:158", + "reference": "Services/AppSearchService.qml:158, Services/AppSearchService.qml:159, Services/AppSearchService.qml:160, Widgets/DankIconPicker.qml:31", + "comment": "" + }, + { + "term": "Device", + "context": "Modules/ProcessList/SystemTab.qml:434", + "reference": "Modules/ProcessList/SystemTab.qml:434", + "comment": "" + }, + { + "term": "Disconnect", + "context": "Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml:85", + "reference": "Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml:85, Modules/DankBar/Popouts/VpnPopout.qml:209", + "comment": "" + }, + { + "term": "Disk", + "context": "Modules/ProcessList/PerformanceTab.qml:428", + "reference": "Modules/ProcessList/PerformanceTab.qml:428", + "comment": "" + }, + { + "term": "Display Settings", + "context": "Modules/Settings/PersonalizationTab.qml:1036", + "reference": "Modules/Settings/PersonalizationTab.qml:1036", + "comment": "" + }, + { + "term": "Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen", + "context": "Modules/Settings/DockTab.qml:186", + "reference": "Modules/Settings/DockTab.qml:186", + "comment": "" + }, + { + "term": "Display all priorities over fullscreen apps", + "context": "Modules/Notifications/Center/NotificationSettings.qml:237", + "reference": "Modules/Notifications/Center/NotificationSettings.qml:237", + "comment": "" + }, + { + "term": "Do Not Disturb", + "context": "Modules/Notifications/Center/NotificationHeader.qml:56", + "reference": "Modules/Notifications/Center/NotificationHeader.qml:56, Modules/Notifications/Center/NotificationSettings.qml:131", + "comment": "" + }, + { + "term": "Dock Position", + "context": "Modules/Settings/DockTab.qml:53", + "reference": "Modules/Settings/DockTab.qml:53", + "comment": "" + }, + { + "term": "Dock Transparency", + "context": "Modules/Settings/DockTab.qml:467", + "reference": "Modules/Settings/DockTab.qml:467", + "comment": "" + }, + { + "term": "Dynamic Theming", + "context": "Modules/Settings/PersonalizationTab.qml:937", + "reference": "Modules/Settings/PersonalizationTab.qml:937", + "comment": "" + }, + { + "term": "Education", + "context": "Services/AppSearchService.qml:161", + "reference": "Services/AppSearchService.qml:161", + "comment": "" + }, + { + "term": "Empty", + "context": "Modules/Notepad/NotepadTextEditor.qml:565", + "reference": "Modules/Notepad/NotepadTextEditor.qml:565", + "comment": "" + }, + { + "term": "Enable GPU Temperature", + "context": "Modules/ProcessList/SystemOverview.qml:391", + "reference": "Modules/ProcessList/SystemOverview.qml:391", + "comment": "" + }, + { + "term": "Enable Weather", + "context": "Modules/Settings/WeatherTab.qml:57", + "reference": "Modules/Settings/WeatherTab.qml:57", + "comment": "" + }, + { + "term": "Enable WiFi", + "context": "Modules/ControlCenter/Details/NetworkDetail.qml:157", + "reference": "Modules/ControlCenter/Details/NetworkDetail.qml:157", + "comment": "" + }, + { + "term": "End", + "context": "Modules/Settings/PersonalizationTab.qml:1259", + "reference": "Modules/Settings/PersonalizationTab.qml:1259", + "comment": "" + }, + { + "term": "Enter custom lock screen format (e.g., dddd, MMMM d)", + "context": "Modules/Settings/TimeTab.qml:267", + "reference": "Modules/Settings/TimeTab.qml:267", + "comment": "" + }, + { + "term": "Enter custom top bar format (e.g., ddd MMM d)", + "context": "Modules/Settings/TimeTab.qml:254", + "reference": "Modules/Settings/TimeTab.qml:254", + "comment": "" + }, + { + "term": "Enter filename...", + "context": "Modals/FileBrowser/FileBrowserModal.qml:758", + "reference": "Modals/FileBrowser/FileBrowserModal.qml:758", + "comment": "" + }, + { + "term": "Exclusive Zone Offset", + "context": "Modules/Settings/DankBarTab.qml:974", + "reference": "Modules/Settings/DankBarTab.qml:974", + "comment": "" + }, + { + "term": "Feels Like", + "context": "Modules/DankDash/WeatherTab.qml:260", + "reference": "Modules/DankDash/WeatherTab.qml:260", + "comment": "" + }, + { + "term": "File Already Exists", + "context": "Modals/FileBrowser/FileBrowserModal.qml:895", + "reference": "Modals/FileBrowser/FileBrowserModal.qml:895", + "comment": "" + }, + { + "term": "File Information", + "context": "Modals/FileBrowser/FileInfo.qml:137", + "reference": "Modals/FileBrowser/FileInfo.qml:137", + "comment": "" + }, + { + "term": "Find in Text", + "context": "Modules/Notepad/NotepadSettings.qml:194", + "reference": "Modules/Notepad/NotepadSettings.qml:194", + "comment": "" + }, + { + "term": "Find in note...", + "context": "Modules/Notepad/NotepadTextEditor.qml:268", + "reference": "Modules/Notepad/NotepadTextEditor.qml:268", + "comment": "" + }, + { + "term": "Font Family", + "context": "Modules/Notepad/NotepadSettings.qml:220", + "reference": "Modules/Notepad/NotepadSettings.qml:220, Modules/Settings/PersonalizationTab.qml:1530", + "comment": "" + }, + { + "term": "Font Scale", + "context": "Modules/Settings/PersonalizationTab.qml:1652", + "reference": "Modules/Settings/PersonalizationTab.qml:1652", + "comment": "" + }, + { + "term": "Font Settings", + "context": "Modules/Settings/PersonalizationTab.qml:1521", + "reference": "Modules/Settings/PersonalizationTab.qml:1521", + "comment": "" + }, + { + "term": "Font Size", + "context": "Modules/Notepad/NotepadSettings.qml:254", + "reference": "Modules/Notepad/NotepadSettings.qml:254", + "comment": "" + }, + { + "term": "Font Weight", + "context": "Modules/Settings/PersonalizationTab.qml:1551", + "reference": "Modules/Settings/PersonalizationTab.qml:1551", + "comment": "" + }, + { + "term": "Force Kill Process", + "context": "Modules/ProcessList/ProcessContextMenu.qml:207", + "reference": "Modules/ProcessList/ProcessContextMenu.qml:207", + "comment": "" + }, + { + "term": "Forget Device", + "context": "Modules/ControlCenter/Details/BluetoothDetail.qml:501", + "reference": "Modules/ControlCenter/Details/BluetoothDetail.qml:501", + "comment": "" + }, + { + "term": "Forget Network", + "context": "Modules/ControlCenter/Details/NetworkDetail.qml:406", + "reference": "Modules/ControlCenter/Details/NetworkDetail.qml:406", + "comment": "" + }, + { + "term": "Format Legend", + "context": "Modules/Settings/TimeTab.qml:292", + "reference": "Modules/Settings/TimeTab.qml:292", + "comment": "" + }, + { + "term": "Framework:", + "context": "Modules/Settings/AboutTab.qml:325", + "reference": "Modules/Settings/AboutTab.qml:325", + "comment": "" + }, + { + "term": "Fun", + "context": "Widgets/DankIconPicker.qml:52", + "reference": "Widgets/DankIconPicker.qml:52", + "comment": "" + }, + { + "term": "GPU", + "context": "Modules/ProcessList/SystemOverview.qml:318", + "reference": "Modules/ProcessList/SystemOverview.qml:318", + "comment": "" + }, + { + "term": "Games", + "context": "Services/AppSearchService.qml:162", + "reference": "Services/AppSearchService.qml:162", + "comment": "" + }, + { + "term": "Github:", + "context": "Modules/Settings/AboutTab.qml:413", + "reference": "Modules/Settings/AboutTab.qml:413", + "comment": "" + }, + { + "term": "Good", + "context": "Modules/DankDash/WeatherTab.qml:502", + "reference": "Modules/DankDash/WeatherTab.qml:502", + "comment": "" + }, + { + "term": "Goth Corners", + "context": "Modules/Settings/DankBarTab.qml:1050", + "reference": "Modules/Settings/DankBarTab.qml:1050", + "comment": "" + }, + { + "term": "Graphics", + "context": "Services/AppSearchService.qml:163", + "reference": "Services/AppSearchService.qml:163, Services/AppSearchService.qml:164", + "comment": "" + }, + { + "term": "Group by App", + "context": "Modules/Settings/DockTab.qml:297", + "reference": "Modules/Settings/DockTab.qml:297", + "comment": "" + }, + { + "term": "Group multiple windows of the same app together with a window count indicator", + "context": "Modules/Settings/DockTab.qml:304", + "reference": "Modules/Settings/DockTab.qml:304", + "comment": "" + }, + { + "term": "Health", + "context": "Modules/ControlCenter/Details/BatteryDetail.qml:136", + "reference": "Modules/ControlCenter/Details/BatteryDetail.qml:136, Modules/DankBar/Popouts/BatteryPopout.qml:314", + "comment": "" + }, + { + "term": "Height to Edge Gap (Exclusive Zone)", + "context": "Modules/Settings/DockTab.qml:404", + "reference": "Modules/Settings/DockTab.qml:404", + "comment": "" + }, + { + "term": "Hex:", + "context": "Modals/DankColorPickerModal.qml:483", + "reference": "Modals/DankColorPickerModal.qml:483", + "comment": "" + }, + { + "term": "Hibernate", + "context": "Modals/PowerMenuModal.qml:43", + "reference": "Modals/PowerMenuModal.qml:43, Modals/PowerMenuModal.qml:311", + "comment": "" + }, + { + "term": "Hibernate system after", + "context": "Modals/Settings/PowerSettings.qml:190", + "reference": "Modals/Settings/PowerSettings.qml:190", + "comment": "" + }, + { + "term": "Hide the dock when not in use and reveal it when hovering near the dock area", + "context": "Modules/Settings/DockTab.qml:135", + "reference": "Modules/Settings/DockTab.qml:135", + "comment": "" + }, + { + "term": "Hour", + "context": "Modules/Settings/PersonalizationTab.qml:1186", + "reference": "Modules/Settings/PersonalizationTab.qml:1186", + "comment": "" + }, + { + "term": "Humidity", + "context": "Modules/DankDash/WeatherTab.qml:307", + "reference": "Modules/DankDash/WeatherTab.qml:307", + "comment": "" + }, + { + "term": "I Understand", + "context": "Modules/Settings/PluginsTab.qml:1220", + "reference": "Modules/Settings/PluginsTab.qml:1220", + "comment": "" + }, + { + "term": "Icon Theme", + "context": "Modules/Settings/ThemeColorsTab.qml:996", + "reference": "Modules/Settings/ThemeColorsTab.qml:996", + "comment": "" + }, + { + "term": "Idle Settings", + "context": "Modals/Settings/PowerSettings.qml:54", + "reference": "Modals/Settings/PowerSettings.qml:54", + "comment": "" + }, + { + "term": "Idle monitoring not supported - requires newer Quickshell version", + "context": "Modals/Settings/PowerSettings.qml:231", + "reference": "Modals/Settings/PowerSettings.qml:231", + "comment": "" + }, + { + "term": "Include Transitions", + "context": "Modules/Settings/PersonalizationTab.qml:865", + "reference": "Modules/Settings/PersonalizationTab.qml:865", + "comment": "" + }, + { + "term": "Input Devices", + "context": "Modules/ControlCenter/Details/AudioInputDetail.qml:33", + "reference": "Modules/ControlCenter/Details/AudioInputDetail.qml:33", + "comment": "" + }, + { + "term": "Install plugins from the DMS plugin registry", + "context": "Modules/Settings/PluginsTab.qml:834", + "reference": "Modules/Settings/PluginsTab.qml:834", + "comment": "" + }, + { + "term": "Internet", + "context": "Services/AppSearchService.qml:165", + "reference": "Services/AppSearchService.qml:165, Services/AppSearchService.qml:166, Services/AppSearchService.qml:167", + "comment": "" + }, + { + "term": "Interval", + "context": "Modules/Settings/PersonalizationTab.qml:699", + "reference": "Modules/Settings/PersonalizationTab.qml:699", + "comment": "" + }, + { + "term": "Kill Process", + "context": "Modules/ProcessList/ProcessContextMenu.qml:171", + "reference": "Modules/ProcessList/ProcessContextMenu.qml:171", + "comment": "" + }, + { + "term": "Language:", + "context": "Modules/Settings/AboutTab.qml:348", + "reference": "Modules/Settings/AboutTab.qml:348", + "comment": "" + }, + { + "term": "Latitude", + "context": "Modules/Settings/PersonalizationTab.qml:1340", + "reference": "Modules/Settings/PersonalizationTab.qml:1340, Modules/Settings/WeatherTab.qml:251", + "comment": "" + }, + { + "term": "Launch", + "context": "Modals/Spotlight/SpotlightContextMenu.qml:247", + "reference": "Modals/Spotlight/SpotlightContextMenu.qml:247, Modules/AppDrawer/AppDrawerPopout.qml:891", + "comment": "" + }, + { + "term": "Launch Prefix", + "context": "Modules/Settings/LauncherTab.qml:50", + "reference": "Modules/Settings/LauncherTab.qml:50", + "comment": "" + }, + { + "term": "Launcher Button", + "context": "Modules/Settings/WidgetTweaksTab.qml:51", + "reference": "Modules/Settings/WidgetTweaksTab.qml:51", + "comment": "" + }, + { + "term": "Light Mode", + "context": "Modules/Settings/PersonalizationTab.qml:1046", + "reference": "Modules/Settings/PersonalizationTab.qml:1046", + "comment": "" + }, + { + "term": "Lines: %1", + "context": "Modules/Notepad/NotepadTextEditor.qml:571", + "reference": "Modules/Notepad/NotepadTextEditor.qml:571", + "comment": "" + }, + { + "term": "Loading plugins...", + "context": "Modules/Settings/PluginsTab.qml:892", + "reference": "Modules/Settings/PluginsTab.qml:892", + "comment": "" + }, + { + "term": "Location Search", + "context": "Modules/Settings/WeatherTab.qml:355", + "reference": "Modules/Settings/WeatherTab.qml:355", + "comment": "" + }, + { + "term": "Lock Screen", + "context": "Modules/Settings/PersonalizationTab.qml:1822", + "reference": "Modules/Settings/PersonalizationTab.qml:1822", + "comment": "" + }, + { + "term": "Lock Screen Format", + "context": "Modules/Settings/TimeTab.qml:188", + "reference": "Modules/Settings/TimeTab.qml:188", + "comment": "" + }, + { + "term": "Lock before suspend", + "context": "Modals/Settings/PowerSettings.qml:224", + "reference": "Modals/Settings/PowerSettings.qml:224", + "comment": "" + }, + { + "term": "Log Out", + "context": "Modals/PowerMenuModal.qml:35", + "reference": "Modals/PowerMenuModal.qml:35, Modals/PowerMenuModal.qml:204, Modules/ControlCenter/PowerMenu.qml:121", + "comment": "" + }, + { + "term": "Longitude", + "context": "Modules/Settings/PersonalizationTab.qml:1363", + "reference": "Modules/Settings/PersonalizationTab.qml:1363, Modules/Settings/WeatherTab.qml:302", + "comment": "" + }, + { + "term": "Low Priority", + "context": "Modules/Notifications/Center/NotificationSettings.qml:160", + "reference": "Modules/Notifications/Center/NotificationSettings.qml:160", + "comment": "" + }, + { + "term": "Manage and configure plugins for extending DMS functionality", + "context": "Modules/Settings/PluginsTab.qml:68", + "reference": "Modules/Settings/PluginsTab.qml:68", + "comment": "" + }, + { + "term": "Manual Coordinates", + "context": "Modules/Settings/PersonalizationTab.qml:1326", + "reference": "Modules/Settings/PersonalizationTab.qml:1326", + "comment": "" + }, + { + "term": "Material Colors", + "context": "Modals/DankColorPickerModal.qml:349", + "reference": "Modals/DankColorPickerModal.qml:349", + "comment": "" + }, + { + "term": "Matugen Palette", + "context": "Modules/Settings/ThemeColorsTab.qml:654", + "reference": "Modules/Settings/ThemeColorsTab.qml:654, Modules/Settings/PersonalizationTab.qml:969", + "comment": "" + }, + { + "term": "Max apps to show", + "context": "Modules/Settings/WidgetTweaksTab.qml:259", + "reference": "Modules/Settings/WidgetTweaksTab.qml:259", + "comment": "" + }, + { + "term": "Media", + "context": "Services/AppSearchService.qml:155", + "reference": "Services/AppSearchService.qml:155, Services/AppSearchService.qml:156, Services/AppSearchService.qml:157, Widgets/DankIconPicker.qml:37, Modules/DankDash/DankDashPopout.qml:135", + "comment": "" + }, + { + "term": "Media Player Settings", + "context": "Modules/Settings/WidgetTweaksTab.qml:328", + "reference": "Modules/Settings/WidgetTweaksTab.qml:328", + "comment": "" + }, + { + "term": "Media Players (", + "context": "Modules/DankDash/MediaPlayerTab.qml:567", + "reference": "Modules/DankDash/MediaPlayerTab.qml:567", + "comment": "" + }, + { + "term": "Memory", + "context": "Modules/ProcessList/SystemOverview.qml:166", + "reference": "Modules/ProcessList/SystemOverview.qml:166, Modules/ProcessList/PerformanceTab.qml:197", + "comment": "" + }, + { + "term": "Minute", + "context": "Modules/Settings/PersonalizationTab.qml:1195", + "reference": "Modules/Settings/PersonalizationTab.qml:1195", + "comment": "" + }, + { + "term": "Mode:", + "context": "Modules/Settings/PersonalizationTab.qml:632", + "reference": "Modules/Settings/PersonalizationTab.qml:632", + "comment": "" + }, + { + "term": "Monitor", + "context": "Modules/Settings/PersonalizationTab.qml:535", + "reference": "Modules/Settings/PersonalizationTab.qml:535", + "comment": "" + }, + { + "term": "Monitor Selection:", + "context": "Modules/Settings/PersonalizationTab.qml:526", + "reference": "Modules/Settings/PersonalizationTab.qml:526", + "comment": "" + }, + { + "term": "Monospace Font", + "context": "Modules/Settings/PersonalizationTab.qml:1617", + "reference": "Modules/Settings/PersonalizationTab.qml:1617", + "comment": "" + }, + { + "term": "Mount", + "context": "Modules/ProcessList/SystemTab.qml:445", + "reference": "Modules/ProcessList/SystemTab.qml:445", + "comment": "" + }, + { + "term": "Named Workspace Icons", + "context": "Modules/Settings/WidgetTweaksTab.qml:426", + "reference": "Modules/Settings/WidgetTweaksTab.qml:426", + "comment": "" + }, + { + "term": "Navigation", + "context": "Widgets/DankIconPicker.qml:43", + "reference": "Widgets/DankIconPicker.qml:43", + "comment": "" + }, + { + "term": "Network", + "context": "Modules/ProcessList/PerformanceTab.qml:362", + "reference": "Modules/ProcessList/PerformanceTab.qml:362", + "comment": "" + }, + { + "term": "Network Icon", + "context": "Modules/Settings/WidgetsTabSection.qml:755", + "reference": "Modules/Settings/WidgetsTabSection.qml:755", + "comment": "" + }, + { + "term": "Network Info", + "context": "Modules/ControlCenter/Details/NetworkDetail.qml:383", + "reference": "Modules/ControlCenter/Details/NetworkDetail.qml:383", + "comment": "" + }, + { + "term": "Network Information", + "context": "Modals/NetworkInfoModal.qml:59", + "reference": "Modals/NetworkInfoModal.qml:59", + "comment": "" + }, + { + "term": "Network Settings", + "context": "Modules/ControlCenter/Details/NetworkDetail.qml:47", + "reference": "Modules/ControlCenter/Details/NetworkDetail.qml:47", + "comment": "" + }, + { + "term": "New", + "context": "Modules/Notepad/NotepadTextEditor.qml:543", + "reference": "Modules/Notepad/NotepadTextEditor.qml:543", + "comment": "" + }, + { + "term": "New York, NY", + "context": "Modules/Settings/WeatherTab.qml:365", + "reference": "Modules/Settings/WeatherTab.qml:365", + "comment": "" + }, + { + "term": "Night Mode", + "context": "Modules/Settings/PersonalizationTab.qml:1067", + "reference": "Modules/Settings/PersonalizationTab.qml:1067", + "comment": "" + }, + { + "term": "No Active Players", + "context": "Modules/DankDash/MediaPlayerTab.qml:308", + "reference": "Modules/DankDash/MediaPlayerTab.qml:308", + "comment": "" + }, + { + "term": "No Background", + "context": "Modules/Settings/DankBarTab.qml:1039", + "reference": "Modules/Settings/DankBarTab.qml:1039", + "comment": "" + }, + { + "term": "No Bluetooth adapter found", + "context": "Modules/ControlCenter/Details/BluetoothDetail.qml:425", + "reference": "Modules/ControlCenter/Details/BluetoothDetail.qml:425", + "comment": "" + }, + { + "term": "No Media", + "context": "Modules/DankDash/Overview/MediaOverviewCard.qml:56", + "reference": "Modules/DankDash/Overview/MediaOverviewCard.qml:56", + "comment": "" + }, + { + "term": "No VPN profiles found", + "context": "Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml:136", + "reference": "Modules/ControlCenter/BuiltinPlugins/VpnWidget.qml:136, Modules/DankBar/Popouts/VpnPopout.qml:265", + "comment": "" + }, + { + "term": "No Weather Data Available", + "context": "Modules/DankDash/WeatherTab.qml:27", + "reference": "Modules/DankDash/WeatherTab.qml:27", + "comment": "" + }, + { + "term": "No clipboard entries found", + "context": "Modals/Clipboard/ClipboardContent.qml:119", + "reference": "Modals/Clipboard/ClipboardContent.qml:119", + "comment": "" + }, + { + "term": "No items added yet", + "context": "Modules/Plugins/ListSetting.qml:79", + "reference": "Modules/Plugins/ListSetting.qml:79, Modules/Plugins/ListSettingWithInput.qml:250", + "comment": "" + }, + { + "term": "No matches", + "context": "Modules/Notepad/NotepadTextEditor.qml:278", + "reference": "Modules/Notepad/NotepadTextEditor.qml:278", + "comment": "" + }, + { + "term": "No plugins found", + "context": "Modules/Settings/PluginsTab.qml:1116", + "reference": "Modules/Settings/PluginsTab.qml:1116", + "comment": "" + }, + { + "term": "Normal Priority", + "context": "Modules/Notifications/Center/NotificationSettings.qml:175", + "reference": "Modules/Notifications/Center/NotificationSettings.qml:175", + "comment": "" + }, + { + "term": "Notepad", + "context": "DMSShell.qml:410", + "reference": "DMSShell.qml:410", + "comment": "" + }, + { + "term": "Notepad Font Settings", + "context": "Modules/Notepad/NotepadSettings.qml:122", + "reference": "Modules/Notepad/NotepadSettings.qml:122", + "comment": "" + }, + { + "term": "Nothing to see here", + "context": "Modules/Notifications/Center/NotificationEmptyState.qml:27", + "reference": "Modules/Notifications/Center/NotificationEmptyState.qml:27", + "comment": "" + }, + { + "term": "Notification Overlay", + "context": "Modules/Notifications/Center/NotificationSettings.qml:231", + "reference": "Modules/Notifications/Center/NotificationSettings.qml:231", + "comment": "" + }, + { + "term": "Notification Popups", + "context": "Modules/Settings/PersonalizationTab.qml:1423", + "reference": "Modules/Settings/PersonalizationTab.qml:1423", + "comment": "" + }, + { + "term": "Notification Settings", + "context": "Modules/Notifications/Center/NotificationSettings.qml:108", + "reference": "Modules/Notifications/Center/NotificationSettings.qml:108", + "comment": "" + }, + { + "term": "Notification Timeouts", + "context": "Modules/Notifications/Center/NotificationSettings.qml:153", + "reference": "Modules/Notifications/Center/NotificationSettings.qml:153", + "comment": "" + }, + { + "term": "Notifications", + "context": "Modules/Notifications/Center/NotificationHeader.qml:22", + "reference": "Modules/Notifications/Center/NotificationHeader.qml:22", + "comment": "" + }, + { + "term": "Numbers", + "context": "Widgets/DankIconPicker.qml:25", + "reference": "Widgets/DankIconPicker.qml:25", + "comment": "" + }, + { + "term": "Office", + "context": "Services/AppSearchService.qml:168", + "reference": "Services/AppSearchService.qml:168, Services/AppSearchService.qml:169, Services/AppSearchService.qml:170, Services/AppSearchService.qml:171", + "comment": "" + }, + { + "term": "Opacity", + "context": "Modals/DankColorPickerModal.qml:447", + "reference": "Modals/DankColorPickerModal.qml:447", + "comment": "" + }, + { + "term": "Open", + "context": "Modules/Notepad/NotepadTextEditor.qml:527", + "reference": "Modules/Notepad/NotepadTextEditor.qml:527", + "comment": "" + }, + { + "term": "Open Notepad File", + "context": "Modules/Notepad/Notepad.qml:321", + "reference": "Modules/Notepad/Notepad.qml:321", + "comment": "" + }, + { + "term": "Open search bar to find text", + "context": "Modules/Notepad/NotepadSettings.qml:201", + "reference": "Modules/Notepad/NotepadSettings.qml:201", + "comment": "" + }, + { + "term": "Overview", + "context": "Modules/DankDash/DankDashPopout.qml:134", + "reference": "Modules/DankDash/DankDashPopout.qml:134", + "comment": "" + }, + { + "term": "Overwrite", + "context": "Modals/FileBrowser/FileBrowserModal.qml:951", + "reference": "Modals/FileBrowser/FileBrowserModal.qml:951", + "comment": "" + }, + { + "term": "Padding", + "context": "Modules/Settings/DockTab.qml:376", + "reference": "Modules/Settings/DockTab.qml:376", + "comment": "" + }, + { + "term": "Per-Mode Wallpapers", + "context": "Modules/Settings/PersonalizationTab.qml:437", + "reference": "Modules/Settings/PersonalizationTab.qml:437", + "comment": "" + }, + { + "term": "Per-Monitor Wallpapers", + "context": "Modules/Settings/PersonalizationTab.qml:494", + "reference": "Modules/Settings/PersonalizationTab.qml:494", + "comment": "" + }, + { + "term": "Per-Monitor Workspaces", + "context": "Modules/Settings/WidgetTweaksTab.qml:290", + "reference": "Modules/Settings/WidgetTweaksTab.qml:290", + "comment": "" + }, + { + "term": "Place plugin directories here. Each plugin should have a plugin.json manifest file.", + "context": "Modules/Settings/PluginsTab.qml:186", + "reference": "Modules/Settings/PluginsTab.qml:186", + "comment": "" + }, + { + "term": "Plugin Directory", + "context": "Modules/Settings/PluginsTab.qml:172", + "reference": "Modules/Settings/PluginsTab.qml:172", + "comment": "" + }, + { + "term": "Plugin Management", + "context": "Modules/Settings/PluginsTab.qml:61", + "reference": "Modules/Settings/PluginsTab.qml:61", + "comment": "" + }, + { + "term": "Popup Position", + "context": "Modules/Settings/PersonalizationTab.qml:1432", + "reference": "Modules/Settings/PersonalizationTab.qml:1432", + "comment": "" + }, + { + "term": "Popup Transparency", + "context": "Modules/Settings/ThemeColorsTab.qml:870", + "reference": "Modules/Settings/ThemeColorsTab.qml:870", + "comment": "" + }, + { + "term": "Position", + "context": "Modules/Settings/DankBarTab.qml:698", + "reference": "Modules/Settings/DankBarTab.qml:698", + "comment": "" + }, + { + "term": "Power Off", + "context": "Modals/PowerMenuModal.qml:51", + "reference": "Modals/PowerMenuModal.qml:51, Modals/PowerMenuModal.qml:419, Modules/ControlCenter/PowerMenu.qml:271", + "comment": "" + }, + { + "term": "Power Options", + "context": "Modals/PowerMenuModal.qml:147", + "reference": "Modals/PowerMenuModal.qml:147, Modules/ControlCenter/PowerMenu.qml:68", + "comment": "" + }, + { + "term": "Power Profile Degradation", + "context": "Modules/ControlCenter/Details/BatteryDetail.qml:240", + "reference": "Modules/ControlCenter/Details/BatteryDetail.qml:240, Modules/DankBar/Popouts/BatteryPopout.qml:418", + "comment": "" + }, + { + "term": "Pressure", + "context": "Modules/DankDash/WeatherTab.qml:401", + "reference": "Modules/DankDash/WeatherTab.qml:401", + "comment": "" + }, + { + "term": "Process", + "context": "Modules/ProcessList/ProcessListView.qml:41", + "reference": "Modules/ProcessList/ProcessListView.qml:41", + "comment": "" + }, + { + "term": "QML (Qt Modeling Language)", + "context": "Modules/Settings/AboutTab.qml:355", + "reference": "Modules/Settings/AboutTab.qml:355", + "comment": "" + }, + { + "term": "Rain Chance", + "context": "Modules/DankDash/WeatherTab.qml:448", + "reference": "Modules/DankDash/WeatherTab.qml:448", + "comment": "" + }, + { + "term": "Reboot", + "context": "Modals/PowerMenuModal.qml:47", + "reference": "Modals/PowerMenuModal.qml:47, Modals/PowerMenuModal.qml:365, Modules/ControlCenter/PowerMenu.qml:221", + "comment": "" + }, + { + "term": "Recent Colors", + "context": "Modals/DankColorPickerModal.qml:397", + "reference": "Modals/DankColorPickerModal.qml:397", + "comment": "" + }, + { + "term": "Recently Used Apps", + "context": "Modules/Settings/LauncherTab.qml:130", + "reference": "Modules/Settings/LauncherTab.qml:130", + "comment": "" + }, + { + "term": "Refresh", + "context": "Modules/DankDash/Overview/WeatherOverviewCard.qml:36", + "reference": "Modules/DankDash/Overview/WeatherOverviewCard.qml:36", + "comment": "" + }, + { + "term": "Remove", + "context": "Modules/Plugins/ListSetting.qml:114", + "reference": "Modules/Plugins/ListSetting.qml:114, Modules/Plugins/ListSettingWithInput.qml:230", + "comment": "" + }, + { + "term": "Reset", + "context": "Modules/Settings/DankBarTab.qml:1140", + "reference": "Modules/Settings/DankBarTab.qml:1140, Modules/ControlCenter/Components/EditControls.qml:226", + "comment": "" + }, + { + "term": "Running Apps Only In Current Workspace", + "context": "Modules/Settings/WidgetTweaksTab.qml:386", + "reference": "Modules/Settings/WidgetTweaksTab.qml:386", + "comment": "" + }, + { + "term": "Running Apps Settings", + "context": "Modules/Settings/WidgetTweaksTab.qml:376", + "reference": "Modules/Settings/WidgetTweaksTab.qml:376", + "comment": "" + }, + { + "term": "Save", + "context": "Modals/FileBrowser/FileBrowserModal.qml:791", + "reference": "Modals/FileBrowser/FileBrowserModal.qml:791, Modules/Notepad/NotepadTextEditor.qml:511, Modules/Notepad/Notepad.qml:476", + "comment": "" + }, + { + "term": "Save Notepad File", + "context": "Modules/Notepad/Notepad.qml:257", + "reference": "Modules/Notepad/Notepad.qml:257", + "comment": "" + }, + { + "term": "Saved", + "context": "Modules/Notepad/NotepadTextEditor.qml:591", + "reference": "Modules/Notepad/NotepadTextEditor.qml:591", + "comment": "" + }, + { + "term": "Scale all font sizes", + "context": "Modules/Settings/PersonalizationTab.qml:1659", + "reference": "Modules/Settings/PersonalizationTab.qml:1659", + "comment": "" + }, + { + "term": "Scan", + "context": "Modules/Settings/PluginsTab.qml:133", + "reference": "Modules/Settings/PluginsTab.qml:133", + "comment": "" + }, + { + "term": "Science", + "context": "Services/AppSearchService.qml:172", + "reference": "Services/AppSearchService.qml:172", + "comment": "" + }, + { + "term": "Search for a location...", + "context": "Widgets/DankLocationSearch.qml:22", + "reference": "Widgets/DankLocationSearch.qml:22", + "comment": "" + }, + { + "term": "Search plugins...", + "context": "Modules/Settings/PluginsTab.qml:856", + "reference": "Modules/Settings/PluginsTab.qml:856", + "comment": "" + }, + { + "term": "Search...", + "context": "Widgets/DankDropdown.qml:260", + "reference": "Widgets/DankDropdown.qml:260", + "comment": "" + }, + { + "term": "Select a color from the palette or use custom sliders", + "context": "Modals/DankColorPickerModal.qml:191", + "reference": "Modals/DankColorPickerModal.qml:191", + "comment": "" + }, + { + "term": "Select a widget to add to the ", + "context": "Modules/Settings/WidgetSelectionPopup.qml:200", + "reference": "Modules/Settings/WidgetSelectionPopup.qml:200", + "comment": "" + }, + { + "term": "Select which transitions to include in randomization", + "context": "Modules/Settings/PersonalizationTab.qml:872", + "reference": "Modules/Settings/PersonalizationTab.qml:872", + "comment": "" + }, + { + "term": "Set different wallpapers for each connected monitor", + "context": "Modules/Settings/PersonalizationTab.qml:501", + "reference": "Modules/Settings/PersonalizationTab.qml:501", + "comment": "" + }, + { + "term": "Set different wallpapers for light and dark mode", + "context": "Modules/Settings/PersonalizationTab.qml:444", + "reference": "Modules/Settings/PersonalizationTab.qml:444", + "comment": "" + }, + { + "term": "Settings", + "context": "Services/AppSearchService.qml:173", + "reference": "Services/AppSearchService.qml:173, Modals/Settings/SettingsModal.qml:147, Modules/DankDash/DankDashPopout.qml:142", + "comment": "" + }, + { + "term": "Shift+Del: Clear All • Esc: Close", + "context": "Modals/Clipboard/ClipboardKeyboardHints.qml:29", + "reference": "Modals/Clipboard/ClipboardKeyboardHints.qml:29", + "comment": "" + }, + { + "term": "Show Dock", + "context": "Modules/Settings/DockTab.qml:179", + "reference": "Modules/Settings/DockTab.qml:179", + "comment": "" + }, + { + "term": "Show Line Numbers", + "context": "Modules/Notepad/NotepadSettings.qml:151", + "reference": "Modules/Notepad/NotepadSettings.qml:151", + "comment": "" + }, + { + "term": "Show Power Actions", + "context": "Modules/Settings/PersonalizationTab.qml:1832", + "reference": "Modules/Settings/PersonalizationTab.qml:1832", + "comment": "" + }, + { + "term": "Show Workspace Apps", + "context": "Modules/Settings/WidgetTweaksTab.qml:237", + "reference": "Modules/Settings/WidgetTweaksTab.qml:237", + "comment": "" + }, + { + "term": "Show on Overview", + "context": "Modules/Settings/DockTab.qml:232", + "reference": "Modules/Settings/DockTab.qml:232, Modules/Settings/DankBarTab.qml:874", + "comment": "" + }, + { + "term": "Show on screens:", + "context": "Modules/Settings/DisplaysTab.qml:276", + "reference": "Modules/Settings/DisplaysTab.qml:276", + "comment": "" + }, + { + "term": "Show password", + "context": "Modals/WifiPasswordModal.qml:204", + "reference": "Modals/WifiPasswordModal.qml:204", + "comment": "" + }, + { + "term": "Show weather information in top bar and control center", + "context": "Modules/Settings/WeatherTab.qml:64", + "reference": "Modules/Settings/WeatherTab.qml:64", + "comment": "" + }, + { + "term": "Size", + "context": "Modules/ProcessList/SystemTab.qml:456", + "reference": "Modules/ProcessList/SystemTab.qml:456, Modules/Settings/DankBarTab.qml:1002", + "comment": "" + }, + { + "term": "Spacing", + "context": "Modules/Settings/DockTab.qml:363", + "reference": "Modules/Settings/DockTab.qml:363, Modules/Settings/DankBarTab.qml:933", + "comment": "" + }, + { + "term": "Square Corners", + "context": "Modules/Settings/DankBarTab.qml:1028", + "reference": "Modules/Settings/DankBarTab.qml:1028", + "comment": "" + }, + { + "term": "Start", + "context": "Modules/Settings/PersonalizationTab.qml:1211", + "reference": "Modules/Settings/PersonalizationTab.qml:1211", + "comment": "" + }, + { + "term": "Start typing your notes here...", + "context": "Modules/Notepad/NotepadTextEditor.qml:386", + "reference": "Modules/Notepad/NotepadTextEditor.qml:386", + "comment": "" + }, + { + "term": "Status", + "context": "Widgets/DankIconPicker.qml:49", + "reference": "Widgets/DankIconPicker.qml:49", + "comment": "" + }, + { + "term": "Storage & Disks", + "context": "Modules/ProcessList/SystemTab.qml:414", + "reference": "Modules/ProcessList/SystemTab.qml:414", + "comment": "" + }, + { + "term": "Suspend", + "context": "Modals/PowerMenuModal.qml:39", + "reference": "Modals/PowerMenuModal.qml:39, Modals/PowerMenuModal.qml:257, Modules/ControlCenter/PowerMenu.qml:171", + "comment": "" + }, + { + "term": "Suspend system after", + "context": "Modals/Settings/PowerSettings.qml:154", + "reference": "Modals/Settings/PowerSettings.qml:154", + "comment": "" + }, + { + "term": "Swap", + "context": "Modules/ProcessList/PerformanceTab.qml:272", + "reference": "Modules/ProcessList/PerformanceTab.qml:272", + "comment": "" + }, + { + "term": "Switch User", + "context": "Modules/Greetd/GreeterContent.qml:552", + "reference": "Modules/Greetd/GreeterContent.qml:552", + "comment": "" + }, + { + "term": "System", + "context": "Services/AppSearchService.qml:174", + "reference": "Services/AppSearchService.qml:174, Widgets/DankIconPicker.qml:40, Modules/ProcessList/SystemTab.qml:130", + "comment": "" + }, + { + "term": "System App Theming", + "context": "Modules/Settings/ThemeColorsTab.qml:1049", + "reference": "Modules/Settings/ThemeColorsTab.qml:1049", + "comment": "" + }, + { + "term": "System Monitor", + "context": "Modals/ProcessListModal.qml:157", + "reference": "Modals/ProcessListModal.qml:157", + "comment": "" + }, + { + "term": "System Monitor Unavailable", + "context": "Modals/ProcessListModal.qml:126", + "reference": "Modals/ProcessListModal.qml:126", + "comment": "" + }, + { + "term": "System Monitoring:", + "context": "Modules/Settings/AboutTab.qml:448", + "reference": "Modules/Settings/AboutTab.qml:448", + "comment": "" + }, + { + "term": "System Updates", + "context": "Modules/SystemUpdatePopout.qml:89", + "reference": "Modules/SystemUpdatePopout.qml:89", + "comment": "" + }, + { + "term": "Technical Details", + "context": "Modules/Settings/AboutTab.qml:310", + "reference": "Modules/Settings/AboutTab.qml:310", + "comment": "" + }, + { + "term": "Temperature", + "context": "Modules/Settings/PersonalizationTab.qml:1084", + "reference": "Modules/Settings/PersonalizationTab.qml:1084", + "comment": "" + }, + { + "term": "The DMS_SOCKET environment variable is not set or the socket is unavailable. Automated plugin management requires the DMS_SOCKET.", + "context": "Modules/Settings/PluginsTab.qml:110", + "reference": "Modules/Settings/PluginsTab.qml:110", + "comment": "" + }, + { + "term": "Theme Color", + "context": "Modules/Settings/ThemeColorsTab.qml:133", + "reference": "Modules/Settings/ThemeColorsTab.qml:133", + "comment": "" + }, + { + "term": "Third-Party Plugin Warning", + "context": "Modules/Settings/PluginsTab.qml:1165", + "reference": "Modules/Settings/PluginsTab.qml:1165", + "comment": "" + }, + { + "term": "Today", + "context": "Services/WeatherService.qml:169", + "reference": "Services/WeatherService.qml:169", + "comment": "" + }, + { + "term": "Toggle top bar visibility manually (can be controlled via IPC)", + "context": "Modules/Settings/DankBarTab.qml:827", + "reference": "Modules/Settings/DankBarTab.qml:827", + "comment": "" + }, + { + "term": "Tomorrow", + "context": "Services/WeatherService.qml:170", + "reference": "Services/WeatherService.qml:170", + "comment": "" + }, + { + "term": "Top Bar Format", + "context": "Modules/Settings/TimeTab.qml:125", + "reference": "Modules/Settings/TimeTab.qml:125", + "comment": "" + }, + { + "term": "Transition Effect", + "context": "Modules/Settings/PersonalizationTab.qml:846", + "reference": "Modules/Settings/PersonalizationTab.qml:846", + "comment": "" + }, + { + "term": "Turn off monitors after", + "context": "Modals/Settings/PowerSettings.qml:118", + "reference": "Modals/Settings/PowerSettings.qml:118", + "comment": "" + }, + { + "term": "Unsaved Changes", + "context": "Modules/Notepad/Notepad.qml:384", + "reference": "Modules/Notepad/Notepad.qml:384", + "comment": "" + }, + { + "term": "Unsaved changes", + "context": "Modules/Notepad/NotepadTextEditor.qml:588", + "reference": "Modules/Notepad/NotepadTextEditor.qml:588", + "comment": "" + }, + { + "term": "Unsaved note...", + "context": "Modules/Notepad/NotepadTextEditor.qml:586", + "reference": "Modules/Notepad/NotepadTextEditor.qml:586", + "comment": "" + }, + { + "term": "Untitled", + "context": "Services/NotepadStorageService.qml:62", + "reference": "Services/NotepadStorageService.qml:62, Services/NotepadStorageService.qml:132, Services/NotepadStorageService.qml:173", + "comment": "" + }, + { + "term": "Update All", + "context": "Modules/SystemUpdatePopout.qml:285", + "reference": "Modules/SystemUpdatePopout.qml:285", + "comment": "" + }, + { + "term": "Use Fahrenheit", + "context": "Modules/Settings/WeatherTab.qml:123", + "reference": "Modules/Settings/WeatherTab.qml:123", + "comment": "" + }, + { + "term": "Use Fahrenheit instead of Celsius for temperature", + "context": "Modules/Settings/WeatherTab.qml:130", + "reference": "Modules/Settings/WeatherTab.qml:130", + "comment": "" + }, + { + "term": "Use Monospace Font", + "context": "Modules/Notepad/NotepadSettings.qml:139", + "reference": "Modules/Notepad/NotepadSettings.qml:139", + "comment": "" + }, + { + "term": "Use OS Logo", + "context": "Modules/Settings/WidgetTweaksTab.qml:61", + "reference": "Modules/Settings/WidgetTweaksTab.qml:61", + "comment": "" + }, + { + "term": "Use%", + "context": "Modules/ProcessList/SystemTab.qml:489", + "reference": "Modules/ProcessList/SystemTab.qml:489", + "comment": "" + }, + { + "term": "Used", + "context": "Modules/ProcessList/SystemTab.qml:467", + "reference": "Modules/ProcessList/SystemTab.qml:467", + "comment": "" + }, + { + "term": "Utilities", + "context": "Services/AppSearchService.qml:175", + "reference": "Services/AppSearchService.qml:175, Services/AppSearchService.qml:176, Services/AppSearchService.qml:177, Services/AppSearchService.qml:178", + "comment": "" + }, + { + "term": "VPN Connections", + "context": "Modules/DankBar/Popouts/VpnPopout.qml:99", + "reference": "Modules/DankBar/Popouts/VpnPopout.qml:99", + "comment": "" + }, + { + "term": "Visibility", + "context": "Modules/DankDash/WeatherTab.qml:495", + "reference": "Modules/DankDash/WeatherTab.qml:495", + "comment": "" + }, + { + "term": "Wallpaper", + "context": "Modules/Settings/PersonalizationTab.qml:99", + "reference": "Modules/Settings/PersonalizationTab.qml:99", + "comment": "" + }, + { + "term": "Wave Progress Bars", + "context": "Modules/Settings/WidgetTweaksTab.qml:338", + "reference": "Modules/Settings/WidgetTweaksTab.qml:338", + "comment": "" + }, + { + "term": "Weather", + "context": "Modules/DankDash/DankDashPopout.qml:139", + "reference": "Modules/DankDash/DankDashPopout.qml:139", + "comment": "" + }, + { + "term": "WiFi is off", + "context": "Modules/ControlCenter/Details/NetworkDetail.qml:139", + "reference": "Modules/ControlCenter/Details/NetworkDetail.qml:139", + "comment": "" + }, + { + "term": "Widget Management", + "context": "Modules/Settings/DankBarTab.qml:1102", + "reference": "Modules/Settings/DankBarTab.qml:1102", + "comment": "" + }, + { + "term": "Widget Styling", + "context": "Modules/Settings/ThemeColorsTab.qml:759", + "reference": "Modules/Settings/ThemeColorsTab.qml:759", + "comment": "" + }, + { + "term": "Wind", + "context": "Modules/DankDash/WeatherTab.qml:354", + "reference": "Modules/DankDash/WeatherTab.qml:354", + "comment": "" + }, + { + "term": "Workspace", + "context": "Widgets/DankIconPicker.qml:28", + "reference": "Widgets/DankIconPicker.qml:28", + "comment": "" + }, + { + "term": "Workspace Index Numbers", + "context": "Modules/Settings/WidgetTweaksTab.qml:215", + "reference": "Modules/Settings/WidgetTweaksTab.qml:215", + "comment": "" + }, + { + "term": "Workspace Padding", + "context": "Modules/Settings/WidgetTweaksTab.qml:226", + "reference": "Modules/Settings/WidgetTweaksTab.qml:226", + "comment": "" + }, + { + "term": "Workspace Settings", + "context": "Modules/Settings/WidgetTweaksTab.qml:205", + "reference": "Modules/Settings/WidgetTweaksTab.qml:205", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before closing this tab?", + "context": "Modules/Notepad/Notepad.qml:394", + "reference": "Modules/Notepad/Notepad.qml:394", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before continuing?", + "context": "Modules/Notepad/Notepad.qml:397", + "reference": "Modules/Notepad/Notepad.qml:397", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before creating a new file?", + "context": "Modules/Notepad/Notepad.qml:392", + "reference": "Modules/Notepad/Notepad.qml:392", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before opening a file?", + "context": "Modules/Notepad/Notepad.qml:396", + "reference": "Modules/Notepad/Notepad.qml:396", + "comment": "" + }, + { + "term": "matugen not detected - dynamic theming unavailable", + "context": "Modules/Settings/PersonalizationTab.qml:998", + "reference": "Modules/Settings/PersonalizationTab.qml:998", + "comment": "" + }, + { + "term": "official", + "context": "Modules/Settings/PluginsTab.qml:972", + "reference": "Modules/Settings/PluginsTab.qml:972", + "comment": "" + }, + { + "term": "• Install only from trusted sources", + "context": "Modules/Settings/PluginsTab.qml:1198", + "reference": "Modules/Settings/PluginsTab.qml:1198", + "comment": "" + }, + { + "term": "• M - Month (1-12)", + "context": "Modules/Settings/TimeTab.qml:331", + "reference": "Modules/Settings/TimeTab.qml:331", + "comment": "" + }, + { + "term": "• MM - Month (01-12)", + "context": "Modules/Settings/TimeTab.qml:342", + "reference": "Modules/Settings/TimeTab.qml:342", + "comment": "" + }, + { + "term": "• MMM - Month (Jan)", + "context": "Modules/Settings/TimeTab.qml:348", + "reference": "Modules/Settings/TimeTab.qml:348", + "comment": "" + }, + { + "term": "• MMMM - Month (January)", + "context": "Modules/Settings/TimeTab.qml:354", + "reference": "Modules/Settings/TimeTab.qml:354", + "comment": "" + }, + { + "term": "• Plugins may contain bugs or security issues", + "context": "Modules/Settings/PluginsTab.qml:1186", + "reference": "Modules/Settings/PluginsTab.qml:1186", + "comment": "" + }, + { + "term": "• Review code before installation when possible", + "context": "Modules/Settings/PluginsTab.qml:1192", + "reference": "Modules/Settings/PluginsTab.qml:1192", + "comment": "" + }, + { + "term": "• d - Day (1-31)", + "context": "Modules/Settings/TimeTab.qml:307", + "reference": "Modules/Settings/TimeTab.qml:307", + "comment": "" + }, + { + "term": "• dd - Day (01-31)", + "context": "Modules/Settings/TimeTab.qml:313", + "reference": "Modules/Settings/TimeTab.qml:313", + "comment": "" + }, + { + "term": "• ddd - Day name (Mon)", + "context": "Modules/Settings/TimeTab.qml:319", + "reference": "Modules/Settings/TimeTab.qml:319", + "comment": "" + }, + { + "term": "• dddd - Day name (Monday)", + "context": "Modules/Settings/TimeTab.qml:325", + "reference": "Modules/Settings/TimeTab.qml:325", + "comment": "" + }, + { + "term": "• yy - Year (24)", + "context": "Modules/Settings/TimeTab.qml:360", + "reference": "Modules/Settings/TimeTab.qml:360", + "comment": "" + }, + { + "term": "• yyyy - Year (2024)", + "context": "Modules/Settings/TimeTab.qml:366", + "reference": "Modules/Settings/TimeTab.qml:366", + "comment": "" + } +] \ No newline at end of file diff --git a/translations/extract_translations.py b/translations/extract_translations.py new file mode 100755 index 00000000..29e05e82 --- /dev/null +++ b/translations/extract_translations.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +import os +import re +import json +from pathlib import Path +from collections import defaultdict + +def extract_qstr_strings(root_dir): + translations = defaultdict(list) + qstr_pattern = re.compile(r'qsTr\(["\']([^"\']+)["\']\)') + + for qml_file in Path(root_dir).rglob('*.qml'): + relative_path = qml_file.relative_to(root_dir) + + with open(qml_file, 'r', encoding='utf-8') as f: + for line_num, line in enumerate(f, 1): + matches = qstr_pattern.findall(line) + for match in matches: + translations[match].append({ + 'file': str(relative_path), + 'line': line_num + }) + + return translations + +def create_poeditor_json(translations): + poeditor_data = [] + + for term, occurrences in sorted(translations.items()): + references = [] + contexts = [] + + for occ in occurrences: + ref = f"{occ['file']}:{occ['line']}" + references.append(ref) + contexts.append(f"{occ['file']}:{occ['line']}") + + entry = { + "term": term, + "context": contexts[0] if contexts else "", + "reference": ", ".join(references), + "comment": "" + } + poeditor_data.append(entry) + + return poeditor_data + +def create_template_json(translations): + template_data = [] + + for term in sorted(translations.keys()): + entry = { + "term": term, + "translation": "", + "context": "", + "reference": "", + "comment": "" + } + template_data.append(entry) + + return template_data + +def main(): + script_dir = Path(__file__).parent + root_dir = script_dir.parent + translations_dir = script_dir + + print("Extracting qsTr() strings from QML files...") + translations = extract_qstr_strings(root_dir) + + print(f"Found {len(translations)} unique strings") + + poeditor_data = create_poeditor_json(translations) + en_json_path = translations_dir / 'en.json' + with open(en_json_path, 'w', encoding='utf-8') as f: + json.dump(poeditor_data, f, indent=2, ensure_ascii=False) + print(f"Created source language file: {en_json_path}") + + template_data = create_template_json(translations) + template_json_path = translations_dir / 'template.json' + with open(template_json_path, 'w', encoding='utf-8') as f: + json.dump(template_data, f, indent=2, ensure_ascii=False) + print(f"Created template file: {template_json_path}") + + print("\nSummary:") + print(f" - Unique strings: {len(translations)}") + print(f" - Total occurrences: {sum(len(occs) for occs in translations.values())}") + print(f" - Source file: {en_json_path}") + print(f" - Template file: {template_json_path}") + +if __name__ == '__main__': + main() diff --git a/translations/template.json b/translations/template.json new file mode 100644 index 00000000..1c158fb8 --- /dev/null +++ b/translations/template.json @@ -0,0 +1,2487 @@ +[ + { + "term": "%1 characters", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "%1/%2", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "(Unnamed)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "- Stateless System Monitoring", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "- Support Us With a Star ⭐", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "-74.0060", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "0.0", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "00:00", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "100%", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "100°", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "123", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "24-Hour Format", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "24-hour format", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "3rd party", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "40.7128", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "7-Day Forecast", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "A file with this name already exists. Do you want to overwrite it?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "About", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Actions", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Add", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Add Widget", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Add Widget to ", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Add a VPN in NetworkManager", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "All", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "All displays", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Always Show OSD Percentage", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Animation Speed", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Animations", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Applications", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Apply", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Apply GTK Colors", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Apply Qt Colors", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Apps are ordered by usage frequency, then last used, then alphabetically.", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Are you sure you want to hibernate the system?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Are you sure you want to log out?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Are you sure you want to power off the system?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Are you sure you want to reboot the system?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Are you sure you want to suspend the system?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Audio Codec", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Audio Codec Selection", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Audio Devices", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Audio Icon", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Audio Output Devices (", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Auto Location", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Auto-hide", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Auto-hide Dock", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Auto-location", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Auto-saving...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Automatic Control", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Automatic Cycling", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Automatically cycle through wallpapers in the same folder", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Automatically determine your location using your IP address", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Automatically extract colors from wallpaper", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Automatically hide the top bar to expand screen real estate", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Automatically lock after", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Available", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Available Plugins", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Available Screens (", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Back", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Battery not detected - only AC power settings available", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Bluetooth Icon", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Bluetooth Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Border", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Brightness", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Browse", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Browse Plugins", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "CPU", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Cancel", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Capacity", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Center Section", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Choose icon", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Clear", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Clear All", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Close", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Color Override", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Communication", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Compact Mode", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Compositor:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Configure icons for named workspaces. Icons take priority over numbers when both are enabled.", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Configure which displays show shell components", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Connect", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Connect to Wi-Fi", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Connected Displays", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Contrast", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Control the speed of animations throughout the interface", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Copied!", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Copy", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Copy PID", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Copy Process Name", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Create Dir", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Critical Priority", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Current Items", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Custom Location", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Custom Transparency", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Custom: ", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "DEMO MODE - Click anywhere to exit", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "DMS Plugin Manager Unavailable", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Daily at:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Dank Bar Transparency", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Dank Bar Widget Transparency", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Dank Suite:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Date Format", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Defaults", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Del: Clear • Shift+Del: Clear All • 1-9: Actions • F10: Help • Esc: Close", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Development", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Device", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Disconnect", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Disk", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Display Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Display a dock with pinned and running applications that can be positioned at the top, bottom, left, or right edge of the screen", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Display all priorities over fullscreen apps", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Do Not Disturb", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Dock Position", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Dock Transparency", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Dynamic Theming", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Education", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Empty", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Enable GPU Temperature", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Enable Weather", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Enable WiFi", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "End", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Enter custom lock screen format (e.g., dddd, MMMM d)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Enter custom top bar format (e.g., ddd MMM d)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Enter filename...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Exclusive Zone Offset", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Feels Like", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "File Already Exists", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "File Information", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Find in Text", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Find in note...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Font Family", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Font Scale", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Font Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Font Size", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Font Weight", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Force Kill Process", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Forget Device", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Forget Network", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Format Legend", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Framework:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Fun", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "GPU", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Games", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Github:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Good", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Goth Corners", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Graphics", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Group by App", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Group multiple windows of the same app together with a window count indicator", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Health", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Height to Edge Gap (Exclusive Zone)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Hex:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Hibernate", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Hibernate system after", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Hide the dock when not in use and reveal it when hovering near the dock area", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Hour", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Humidity", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "I Understand", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Icon Theme", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Idle Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Idle monitoring not supported - requires newer Quickshell version", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Include Transitions", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Input Devices", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Install plugins from the DMS plugin registry", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Internet", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Interval", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Kill Process", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Language:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Latitude", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Launch", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Launch Prefix", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Launcher Button", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Light Mode", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Lines: %1", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Loading plugins...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Location Search", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Lock Screen", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Lock Screen Format", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Lock before suspend", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Log Out", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Longitude", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Low Priority", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Manage and configure plugins for extending DMS functionality", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Manual Coordinates", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Material Colors", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Matugen Palette", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Max apps to show", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Media", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Media Player Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Media Players (", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Memory", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Minute", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Mode:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Monitor", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Monitor Selection:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Monospace Font", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Mount", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Named Workspace Icons", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Navigation", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Network", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Network Icon", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Network Info", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Network Information", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Network Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "New", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "New York, NY", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Night Mode", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No Active Players", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No Background", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No Bluetooth adapter found", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No Media", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No VPN profiles found", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No Weather Data Available", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No clipboard entries found", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No items added yet", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No matches", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "No plugins found", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Normal Priority", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Notepad", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Notepad Font Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Nothing to see here", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Notification Overlay", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Notification Popups", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Notification Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Notification Timeouts", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Notifications", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Numbers", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Office", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Opacity", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Open", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Open Notepad File", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Open search bar to find text", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Overview", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Overwrite", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Padding", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Per-Mode Wallpapers", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Per-Monitor Wallpapers", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Per-Monitor Workspaces", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Place plugin directories here. Each plugin should have a plugin.json manifest file.", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Plugin Directory", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Plugin Management", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Popup Position", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Popup Transparency", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Position", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Power Off", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Power Options", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Power Profile Degradation", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Pressure", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Process", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "QML (Qt Modeling Language)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Rain Chance", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Reboot", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Recent Colors", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Recently Used Apps", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Refresh", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Remove", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Reset", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Running Apps Only In Current Workspace", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Running Apps Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Save", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Save Notepad File", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Saved", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Scale all font sizes", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Scan", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Science", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Search for a location...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Search plugins...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Search...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Select a color from the palette or use custom sliders", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Select a widget to add to the ", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Select which transitions to include in randomization", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Set different wallpapers for each connected monitor", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Set different wallpapers for light and dark mode", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Shift+Del: Clear All • Esc: Close", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show Dock", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show Line Numbers", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show Power Actions", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show Workspace Apps", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show on Overview", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show on screens:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show password", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Show weather information in top bar and control center", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Size", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Spacing", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Square Corners", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Start", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Start typing your notes here...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Status", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Storage & Disks", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Suspend", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Suspend system after", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Swap", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Switch User", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "System", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "System App Theming", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "System Monitor", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "System Monitor Unavailable", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "System Monitoring:", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "System Updates", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Technical Details", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Temperature", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "The DMS_SOCKET environment variable is not set or the socket is unavailable. Automated plugin management requires the DMS_SOCKET.", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Theme Color", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Third-Party Plugin Warning", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Today", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Toggle top bar visibility manually (can be controlled via IPC)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Tomorrow", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Top Bar Format", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Transition Effect", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Turn off monitors after", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Unsaved Changes", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Unsaved changes", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Unsaved note...", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Untitled", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Update All", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Use Fahrenheit", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Use Fahrenheit instead of Celsius for temperature", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Use Monospace Font", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Use OS Logo", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Use%", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Used", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Utilities", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "VPN Connections", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Visibility", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Wallpaper", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Wave Progress Bars", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Weather", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "WiFi is off", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Widget Management", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Widget Styling", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Wind", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Workspace", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Workspace Index Numbers", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Workspace Padding", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "Workspace Settings", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before closing this tab?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before continuing?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before creating a new file?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "You have unsaved changes. Save before opening a file?", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "matugen not detected - dynamic theming unavailable", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "official", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• Install only from trusted sources", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• M - Month (1-12)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• MM - Month (01-12)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• MMM - Month (Jan)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• MMMM - Month (January)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• Plugins may contain bugs or security issues", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• Review code before installation when possible", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• d - Day (1-31)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• dd - Day (01-31)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• ddd - Day name (Mon)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• dddd - Day name (Monday)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• yy - Year (24)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + }, + { + "term": "• yyyy - Year (2024)", + "translation": "", + "context": "", + "reference": "", + "comment": "" + } +] \ No newline at end of file