i18n: Add multilingual support for the Settings interface and update the Simplified Chinese translation file.

This commit is contained in:
月月
2025-07-14 00:33:03 +08:00
parent 0c2b807447
commit 8f3b2474d2
10 changed files with 423 additions and 164 deletions
@@ -1,3 +1,4 @@
import "root:/"
import "root:/modules/common"
import "root:/modules/common/widgets"
import "root:/modules/common/functions/color_utils.js" as ColorUtils
@@ -115,7 +116,7 @@ GroupButton {
}
StyledText {
Layout.fillWidth: true
text: dark ? "Dark" : "Light"
text: dark ? Translation.tr("Dark") : Translation.tr("Light")
color: lightDarkButtonRoot.toggled ? Appearance.m3colors.m3onPrimary : Appearance.colors.colOnLayer2
horizontalAlignment: Text.AlignHCenter
}
@@ -12,7 +12,7 @@ ContentPage {
forceWidth: true
ContentSection {
title: "Distro"
title: Translation.tr("Distro")
RowLayout {
Layout.alignment: Qt.AlignHCenter
@@ -48,21 +48,21 @@ ContentPage {
RippleButtonWithIcon {
materialIcon: "auto_stories"
mainText: "Documentation"
mainText: Translation.tr("Documentation")
onClicked: {
Qt.openUrlExternally(SystemInfo.documentationUrl)
}
}
RippleButtonWithIcon {
materialIcon: "support"
mainText: "Help & Support"
mainText: Translation.tr("Help & Support")
onClicked: {
Qt.openUrlExternally(SystemInfo.supportUrl)
}
}
RippleButtonWithIcon {
materialIcon: "bug_report"
mainText: "Report a Bug"
mainText: Translation.tr("Report a Bug")
onClicked: {
Qt.openUrlExternally(SystemInfo.bugReportUrl)
}
@@ -70,7 +70,7 @@ ContentPage {
RippleButtonWithIcon {
materialIcon: "policy"
materialIconFill: false
mainText: "Privacy Policy"
mainText: Translation.tr("Privacy Policy")
onClicked: {
Qt.openUrlExternally(SystemInfo.privacyPolicyUrl)
}
@@ -80,7 +80,7 @@ ContentPage {
}
ContentSection {
title: "Dotfiles"
title: Translation.tr("Dotfiles")
RowLayout {
Layout.alignment: Qt.AlignHCenter
@@ -95,7 +95,7 @@ ContentPage {
Layout.alignment: Qt.AlignVCenter
// spacing: 10
StyledText {
text: "illogical-impulse"
text: Translation.tr("illogical-impulse")
font.pixelSize: Appearance.font.pixelSize.title
}
StyledText {
@@ -116,7 +116,7 @@ ContentPage {
RippleButtonWithIcon {
materialIcon: "auto_stories"
mainText: "Documentation"
mainText: Translation.tr("Documentation")
onClicked: {
Qt.openUrlExternally("https://end-4.github.io/dots-hyprland-wiki/en/ii-qs/02usage/")
}
@@ -124,21 +124,21 @@ ContentPage {
RippleButtonWithIcon {
materialIcon: "adjust"
materialIconFill: false
mainText: "Issues"
mainText: Translation.tr("Issues")
onClicked: {
Qt.openUrlExternally("https://github.com/end-4/dots-hyprland/issues")
}
}
RippleButtonWithIcon {
materialIcon: "forum"
mainText: "Discussions"
mainText: Translation.tr("Discussions")
onClicked: {
Qt.openUrlExternally("https://github.com/end-4/dots-hyprland/discussions")
}
}
RippleButtonWithIcon {
materialIcon: "favorite"
mainText: "Donate"
mainText: Translation.tr("Donate")
onClicked: {
Qt.openUrlExternally("https://github.com/sponsors/end-4")
}
@@ -9,35 +9,35 @@ ContentPage {
forceWidth: true
ContentSection {
title: "Color generation"
title: Translation.tr("Color generation")
ConfigRow {
uniform: true
ConfigSwitch {
text: "Shell & utilities"
text: Translation.tr("Shell & utilities")
checked: Config.options.appearance.wallpaperTheming.enableAppsAndShell
onCheckedChanged: {
Config.options.appearance.wallpaperTheming.enableAppsAndShell = checked;
}
}
ConfigSwitch {
text: "Qt apps"
text: Translation.tr("Qt apps")
checked: Config.options.appearance.wallpaperTheming.enableQtApps
onCheckedChanged: {
Config.options.appearance.wallpaperTheming.enableQtApps = checked;
}
StyledToolTip {
content: "Shell & utilities theming must also be enabled"
content: Translation.tr("Shell & utilities theming must also be enabled")
}
}
ConfigSwitch {
text: "Terminal"
text: Translation.tr("Terminal")
checked: Config.options.appearance.wallpaperTheming.enableTerminal
onCheckedChanged: {
Config.options.appearance.wallpaperTheming.enableTerminal = checked;
}
StyledToolTip {
content: "Shell & utilities theming must also be enabled"
content: Translation.tr("Shell & utilities theming must also be enabled")
}
}
@@ -8,13 +8,13 @@ import "root:/modules/common/widgets/"
ContentPage {
forceWidth: true
ContentSection {
title: "Policies"
title: Translation.tr("Policies")
ConfigRow {
ColumnLayout {
// Weeb policy
ContentSubsectionLabel {
text: "Weeb"
text: Translation.tr("Weeb")
}
ConfigSelectionArray {
currentValue: Config.options.policies.weeb
@@ -24,15 +24,15 @@ ContentPage {
}
options: [
{
displayName: "No",
displayName: Translation.tr("No"),
value: 0
},
{
displayName: "Yes",
displayName: Translation.tr("Yes"),
value: 1
},
{
displayName: "Closet",
displayName: Translation.tr("Closet"),
value: 2
}
]
@@ -42,7 +42,7 @@ ContentPage {
ColumnLayout {
// AI policy
ContentSubsectionLabel {
text: "AI"
text: Translation.tr("AI")
}
ConfigSelectionArray {
currentValue: Config.options.policies.ai
@@ -52,15 +52,15 @@ ContentPage {
}
options: [
{
displayName: "No",
displayName: Translation.tr("No"),
value: 0
},
{
displayName: "Yes",
displayName: Translation.tr("Yes"),
value: 1
},
{
displayName: "Local only",
displayName: Translation.tr("Local only"),
value: 2
}
]
@@ -70,7 +70,7 @@ ContentPage {
}
ContentSection {
title: "Bar"
title: Translation.tr("Bar")
ConfigSelectionArray {
currentValue: Config.options.bar.cornerStyle
@@ -80,57 +80,57 @@ ContentPage {
}
options: [
{
displayName: "Hug",
displayName: Translation.tr("Hug"),
value: 0
},
{
displayName: "Float",
displayName: Translation.tr("Float"),
value: 1
},
{
displayName: "Plain rectangle",
displayName: Translation.tr("Plain rectangle"),
value: 2
}
]
}
ContentSubsection {
title: "Appearance"
title: Translation.tr("Appearance")
ConfigRow {
uniform: true
ConfigSwitch {
text: 'Borderless'
text: Translation.tr('Borderless')
checked: Config.options.bar.borderless
onCheckedChanged: {
Config.options.bar.borderless = checked;
}
}
ConfigSwitch {
text: 'Show background'
text: Translation.tr('Show background')
checked: Config.options.bar.showBackground
onCheckedChanged: {
Config.options.bar.showBackground = checked;
}
StyledToolTip {
content: "Note: turning off can hurt readability"
content: Translation.tr("Note: turning off can hurt readability")
}
}
}
}
ContentSubsection {
title: "Buttons"
title: Translation.tr("Buttons")
ConfigRow {
uniform: true
ConfigSwitch {
text: "Screen snip"
text: Translation.tr("Screen snip")
checked: Config.options.bar.utilButtons.showScreenSnip
onCheckedChanged: {
Config.options.bar.utilButtons.showScreenSnip = checked;
}
}
ConfigSwitch {
text: "Color picker"
text: Translation.tr("Color picker")
checked: Config.options.bar.utilButtons.showColorPicker
onCheckedChanged: {
Config.options.bar.utilButtons.showColorPicker = checked;
@@ -140,14 +140,14 @@ ContentPage {
ConfigRow {
uniform: true
ConfigSwitch {
text: "Mic toggle"
text: Translation.tr("Mic toggle")
checked: Config.options.bar.utilButtons.showMicToggle
onCheckedChanged: {
Config.options.bar.utilButtons.showMicToggle = checked;
}
}
ConfigSwitch {
text: "Keyboard toggle"
text: Translation.tr("Keyboard toggle")
checked: Config.options.bar.utilButtons.showKeyboardToggle
onCheckedChanged: {
Config.options.bar.utilButtons.showKeyboardToggle = checked;
@@ -157,7 +157,7 @@ ContentPage {
ConfigRow {
uniform: true
ConfigSwitch {
text: "Dark/Light toggle"
text: Translation.tr("Dark/Light toggle")
checked: Config.options.bar.utilButtons.showDarkModeToggle
onCheckedChanged: {
Config.options.bar.utilButtons.showDarkModeToggle = checked;
@@ -171,20 +171,20 @@ ContentPage {
}
ContentSubsection {
title: "Workspaces"
tooltip: "Tip: Hide icons and always show numbers for\nthe classic illogical-impulse experience"
title: Translation.tr("Workspaces")
tooltip: Translation.tr("Tip: Hide icons and always show numbers for\nthe classic illogical-impulse experience")
ConfigRow {
uniform: true
ConfigSwitch {
text: 'Show app icons'
text: Translation.tr('Show app icons')
checked: Config.options.bar.workspaces.showAppIcons
onCheckedChanged: {
Config.options.bar.workspaces.showAppIcons = checked;
}
}
ConfigSwitch {
text: 'Always show numbers'
text: Translation.tr('Always show numbers')
checked: Config.options.bar.workspaces.alwaysShowNumbers
onCheckedChanged: {
Config.options.bar.workspaces.alwaysShowNumbers = checked;
@@ -192,7 +192,7 @@ ContentPage {
}
}
ConfigSpinBox {
text: "Workspaces shown"
text: Translation.tr("Workspaces shown")
value: Config.options.bar.workspaces.shown
from: 1
to: 30
@@ -202,7 +202,7 @@ ContentPage {
}
}
ConfigSpinBox {
text: "Number show delay when pressing Super (ms)"
text: Translation.tr("Number show delay when pressing Super (ms)")
value: Config.options.bar.workspaces.showNumberDelay
from: 0
to: 1000
@@ -214,9 +214,9 @@ ContentPage {
}
ContentSubsection {
title: "Weather"
title: Translation.tr("Weather")
ConfigSwitch {
text: "Enable"
text: Translation.tr("Enable")
checked: Config.options.bar.weather.enable
onCheckedChanged: {
Config.options.bar.weather.enable = checked;
@@ -226,12 +226,12 @@ ContentPage {
}
ContentSection {
title: "Battery"
title: Translation.tr("Battery")
ConfigRow {
uniform: true
ConfigSpinBox {
text: "Low warning"
text: Translation.tr("Low warning")
value: Config.options.battery.low
from: 0
to: 100
@@ -241,7 +241,7 @@ ContentPage {
}
}
ConfigSpinBox {
text: "Critical warning"
text: Translation.tr("Critical warning")
value: Config.options.battery.critical
from: 0
to: 100
@@ -254,17 +254,17 @@ ContentPage {
ConfigRow {
uniform: true
ConfigSwitch {
text: "Automatic suspend"
text: Translation.tr("Automatic suspend")
checked: Config.options.battery.automaticSuspend
onCheckedChanged: {
Config.options.battery.automaticSuspend = checked;
}
StyledToolTip {
content: "Automatically suspends the system when battery is low"
content: Translation.tr("Automatically suspends the system when battery is low")
}
}
ConfigSpinBox {
text: "Suspend at"
text: Translation.tr("Suspend at")
value: Config.options.battery.suspend
from: 0
to: 100
@@ -277,10 +277,10 @@ ContentPage {
}
ContentSection {
title: "Dock"
title: Translation.tr("Dock")
ConfigSwitch {
text: "Enable"
text: Translation.tr("Enable")
checked: Config.options.dock.enable
onCheckedChanged: {
Config.options.dock.enable = checked;
@@ -290,14 +290,14 @@ ContentPage {
ConfigRow {
uniform: true
ConfigSwitch {
text: "Hover to reveal"
text: Translation.tr("Hover to reveal")
checked: Config.options.dock.hoverToReveal
onCheckedChanged: {
Config.options.dock.hoverToReveal = checked;
}
}
ConfigSwitch {
text: "Pinned on startup"
text: Translation.tr("Pinned on startup")
checked: Config.options.dock.pinnedOnStartup
onCheckedChanged: {
Config.options.dock.pinnedOnStartup = checked;
@@ -307,9 +307,9 @@ ContentPage {
}
ContentSection {
title: "On-screen display"
title: Translation.tr("On-screen display")
ConfigSpinBox {
text: "Timeout (ms)"
text: Translation.tr("Timeout (ms)")
value: Config.options.osd.timeout
from: 100
to: 3000
@@ -321,9 +321,9 @@ ContentPage {
}
ContentSection {
title: "Overview"
title: Translation.tr("Overview")
ConfigSpinBox {
text: "Scale (%)"
text: Translation.tr("Scale (%)")
value: Config.options.overview.scale * 100
from: 1
to: 100
@@ -335,7 +335,7 @@ ContentPage {
ConfigRow {
uniform: true
ConfigSpinBox {
text: "Rows"
text: Translation.tr("Rows")
value: Config.options.overview.rows
from: 1
to: 20
@@ -345,7 +345,7 @@ ContentPage {
}
}
ConfigSpinBox {
text: "Columns"
text: Translation.tr("Columns")
value: Config.options.overview.columns
from: 1
to: 20
@@ -358,16 +358,16 @@ ContentPage {
}
ContentSection {
title: "Screenshot tool"
title: Translation.tr("Screenshot tool")
ConfigSwitch {
text: 'Show regions of potential interest'
text: Translation.tr('Show regions of potential interest')
checked: Config.options.screenshotTool.showContentRegions
onCheckedChanged: {
Config.options.screenshotTool.showContentRegions = checked;
}
StyledToolTip {
content: "Such regions could be images or parts of the screen that have some containment.\nMight not always be accurate.\nThis is done with an image processing algorithm run locally and no AI is used."
content: Translation.tr("Such regions could be images or parts of the screen that have some containment.\nMight not always be accurate.\nThis is done with an image processing algorithm run locally and no AI is used.")
}
}
}
@@ -9,22 +9,22 @@ ContentPage {
forceWidth: true
ContentSection {
title: "Audio"
title: Translation.tr("Audio")
ConfigSwitch {
text: "Earbang protection"
text: Translation.tr("Earbang protection")
checked: Config.options.audio.protection.enable
onCheckedChanged: {
Config.options.audio.protection.enable = checked;
}
StyledToolTip {
content: "Prevents abrupt increments and restricts volume limit"
content: Translation.tr("Prevents abrupt increments and restricts volume limit")
}
}
ConfigRow {
// uniform: true
ConfigSpinBox {
text: "Max allowed increase"
text: Translation.tr("Max allowed increase")
value: Config.options.audio.protection.maxAllowedIncrease
from: 0
to: 100
@@ -34,7 +34,7 @@ ContentPage {
}
}
ConfigSpinBox {
text: "Volume limit"
text: Translation.tr("Volume limit")
value: Config.options.audio.protection.maxAllowed
from: 0
to: 100
@@ -46,10 +46,10 @@ ContentPage {
}
}
ContentSection {
title: "AI"
title: Translation.tr("AI")
MaterialTextField {
Layout.fillWidth: true
placeholderText: "System prompt"
placeholderText: Translation.tr("System prompt")
text: Config.options.ai.systemPrompt
wrapMode: TextEdit.Wrap
onTextChanged: {
@@ -61,12 +61,12 @@ ContentPage {
}
ContentSection {
title: "Battery"
title: Translation.tr("Battery")
ConfigRow {
uniform: true
ConfigSpinBox {
text: "Low warning"
text: Translation.tr("Low warning")
value: Config.options.battery.low
from: 0
to: 100
@@ -76,7 +76,7 @@ ContentPage {
}
}
ConfigSpinBox {
text: "Critical warning"
text: Translation.tr("Critical warning")
value: Config.options.battery.critical
from: 0
to: 100
@@ -89,17 +89,17 @@ ContentPage {
ConfigRow {
uniform: true
ConfigSwitch {
text: "Automatic suspend"
text: Translation.tr("Automatic suspend")
checked: Config.options.battery.automaticSuspend
onCheckedChanged: {
Config.options.battery.automaticSuspend = checked;
}
StyledToolTip {
content: "Automatically suspends the system when battery is low"
content: Translation.tr("Automatically suspends the system when battery is low")
}
}
ConfigSpinBox {
text: "Suspend at"
text: Translation.tr("Suspend at")
value: Config.options.battery.suspend
from: 0
to: 100
@@ -112,10 +112,10 @@ ContentPage {
}
ContentSection {
title: "Networking"
title: Translation.tr("Networking")
MaterialTextField {
Layout.fillWidth: true
placeholderText: "User agent (for services that require it)"
placeholderText: Translation.tr("User agent (for services that require it)")
text: Config.options.networking.userAgent
wrapMode: TextEdit.Wrap
onTextChanged: {
@@ -125,9 +125,9 @@ ContentPage {
}
ContentSection {
title: "Resources"
title: Translation.tr("Resources")
ConfigSpinBox {
text: "Polling interval (ms)"
text: Translation.tr("Polling interval (ms)")
value: Config.options.resources.updateInterval
from: 100
to: 10000
@@ -139,27 +139,27 @@ ContentPage {
}
ContentSection {
title: "Search"
title: Translation.tr("Search")
ConfigSwitch {
text: "Use Levenshtein distance-based algorithm instead of fuzzy"
text: Translation.tr("Use Levenshtein distance-based algorithm instead of fuzzy")
checked: Config.options.search.sloppy
onCheckedChanged: {
Config.options.search.sloppy = checked;
}
StyledToolTip {
content: "Could be better if you make a ton of typos,\nbut results can be weird and might not work with acronyms\n(e.g. \"GIMP\" might not give you the paint program)"
content: Translation.tr("Could be better if you make a ton of typos,\nbut results can be weird and might not work with acronyms\n(e.g. \"GIMP\" might not give you the paint program)")
}
}
ContentSubsection {
title: "Prefixes"
title: Translation.tr("Prefixes")
ConfigRow {
uniform: true
MaterialTextField {
Layout.fillWidth: true
placeholderText: "Action"
placeholderText: Translation.tr("Action")
text: Config.options.search.prefix.action
wrapMode: TextEdit.Wrap
onTextChanged: {
@@ -168,7 +168,7 @@ ContentPage {
}
MaterialTextField {
Layout.fillWidth: true
placeholderText: "Clipboard"
placeholderText: Translation.tr("Clipboard")
text: Config.options.search.prefix.clipboard
wrapMode: TextEdit.Wrap
onTextChanged: {
@@ -177,7 +177,7 @@ ContentPage {
}
MaterialTextField {
Layout.fillWidth: true
placeholderText: "Emojis"
placeholderText: Translation.tr("Emojis")
text: Config.options.search.prefix.emojis
wrapMode: TextEdit.Wrap
onTextChanged: {
@@ -187,10 +187,10 @@ ContentPage {
}
}
ContentSubsection {
title: "Web search"
title: Translation.tr("Web search")
MaterialTextField {
Layout.fillWidth: true
placeholderText: "Base URL"
placeholderText: Translation.tr("Base URL")
text: Config.options.search.engineBaseUrl
wrapMode: TextEdit.Wrap
onTextChanged: {
@@ -201,10 +201,10 @@ ContentPage {
}
ContentSection {
title: "Time"
title: Translation.tr("Time")
ContentSubsection {
title: "Format"
title: Translation.tr("Format")
tooltip: ""
ConfigSelectionArray {
@@ -215,15 +215,15 @@ ContentPage {
}
options: [
{
displayName: "24h",
displayName: Translation.tr("24h"),
value: "hh:mm"
},
{
displayName: "12h am/pm",
displayName: Translation.tr("12h am/pm"),
value: "h:mm ap"
},
{
displayName: "12h AM/PM",
displayName: Translation.tr("12h AM/PM"),
value: "h:mm AP"
},
]
@@ -28,7 +28,7 @@ ContentPage {
}
ContentSection {
title: "Colors & Wallpaper"
title: Translation.tr("Colors & Wallpaper")
// Light/Dark mode preference
ButtonGroup {
@@ -44,7 +44,7 @@ ContentPage {
// Material palette selection
ContentSubsection {
title: "Material palette"
title: Translation.tr("Material palette")
ConfigSelectionArray {
currentValue: Config.options.appearance.palette.type
configOptionName: "appearance.palette.type"
@@ -53,15 +53,15 @@ ContentPage {
Quickshell.execDetached(["bash", "-c", `${Directories.wallpaperSwitchScriptPath} --noswitch`])
}
options: [
{"value": "auto", "displayName": "Auto"},
{"value": "scheme-content", "displayName": "Content"},
{"value": "scheme-expressive", "displayName": "Expressive"},
{"value": "scheme-fidelity", "displayName": "Fidelity"},
{"value": "scheme-fruit-salad", "displayName": "Fruit Salad"},
{"value": "scheme-monochrome", "displayName": "Monochrome"},
{"value": "scheme-neutral", "displayName": "Neutral"},
{"value": "scheme-rainbow", "displayName": "Rainbow"},
{"value": "scheme-tonal-spot", "displayName": "Tonal Spot"}
{"value": "auto", "displayName": Translation.tr("Auto")},
{"value": "scheme-content", "displayName": Translation.tr("Content")},
{"value": "scheme-expressive", "displayName": Translation.tr("Expressive")},
{"value": "scheme-fidelity", "displayName": Translation.tr("Fidelity")},
{"value": "scheme-fruit-salad", "displayName": Translation.tr("Fruit Salad")},
{"value": "scheme-monochrome", "displayName": Translation.tr("Monochrome")},
{"value": "scheme-neutral", "displayName": Translation.tr("Neutral")},
{"value": "scheme-rainbow", "displayName": Translation.tr("Rainbow")},
{"value": "scheme-tonal-spot", "displayName": Translation.tr("Tonal Spot")}
]
}
}
@@ -69,26 +69,26 @@ ContentPage {
// Wallpaper selection
ContentSubsection {
title: "Wallpaper"
title: Translation.tr("Wallpaper")
RowLayout {
Layout.alignment: Qt.AlignHCenter
RippleButtonWithIcon {
id: rndWallBtn
buttonRadius: Appearance.rounding.small
materialIcon: "wallpaper"
mainText: konachanWallProc.running ? "Be patient..." : "Random: Konachan"
mainText: konachanWallProc.running ? Translation.tr("Be patient...") : Translation.tr("Random: Konachan")
onClicked: {
console.log(konachanWallProc.command.join(" "))
konachanWallProc.running = true;
}
StyledToolTip {
content: "Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers"
content: Translation.tr("Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers")
}
}
RippleButtonWithIcon {
materialIcon: "wallpaper"
StyledToolTip {
content: "Pick wallpaper image on your system"
content: Translation.tr("Pick wallpaper image on your system")
}
onClicked: {
Quickshell.execDetached(`${Directories.wallpaperSwitchScriptPath}`)
@@ -98,7 +98,7 @@ ContentPage {
spacing: 10
StyledText {
font.pixelSize: Appearance.font.pixelSize.small
text: "Choose file"
text: Translation.tr("Choose file")
color: Appearance.colors.colOnSecondaryContainer
}
RowLayout {
@@ -126,7 +126,7 @@ ContentPage {
StyledText {
Layout.topMargin: 5
Layout.alignment: Qt.AlignHCenter
text: "Alternatively use /dark, /light, /img in the launcher"
text: Translation.tr("Alternatively use /dark, /light, /img in the launcher")
font.pixelSize: Appearance.font.pixelSize.smaller
color: Appearance.colors.colSubtext
}
@@ -134,27 +134,27 @@ ContentPage {
}
ContentSection {
title: "Decorations & Effects"
title: Translation.tr("Decorations & Effects")
ContentSubsection {
title: "Transparency"
title: Translation.tr("Transparency")
ConfigRow {
ConfigSwitch {
text: "Enable"
text: Translation.tr("Enable")
checked: Config.options.appearance.transparency
onCheckedChanged: {
Config.options.appearance.transparency = checked;
}
StyledToolTip {
content: "Might look ass. Unsupported."
content: Translation.tr("Might look ass. Unsupported.")
}
}
}
}
ContentSubsection {
title: "Fake screen rounding"
title: Translation.tr("Fake screen rounding")
ButtonGroup {
id: fakeScreenRoundingButtonGroup
@@ -163,7 +163,7 @@ ContentPage {
SelectionGroupButton {
property int value: 0
leftmost: true
buttonText: "No"
buttonText: Translation.tr("No")
toggled: (fakeScreenRoundingButtonGroup.selectedPolicy === value)
onClicked: {
Config.options.appearance.fakeScreenRounding = value;
@@ -171,7 +171,7 @@ ContentPage {
}
SelectionGroupButton {
property int value: 1
buttonText: "Yes"
buttonText: Translation.tr("Yes")
toggled: (fakeScreenRoundingButtonGroup.selectedPolicy === value)
onClicked: {
Config.options.appearance.fakeScreenRounding = value;
@@ -180,7 +180,7 @@ ContentPage {
SelectionGroupButton {
property int value: 2
rightmost: true
buttonText: "When not fullscreen"
buttonText: Translation.tr("When not fullscreen")
toggled: (fakeScreenRoundingButtonGroup.selectedPolicy === value)
onClicked: {
Config.options.appearance.fakeScreenRounding = value;
@@ -190,19 +190,19 @@ ContentPage {
}
ContentSubsection {
title: "Shell windows"
title: Translation.tr("Shell windows")
ConfigRow {
uniform: true
ConfigSwitch {
text: "Title bar"
text: Translation.tr("Title bar")
checked: Config.options.windows.showTitlebar
onCheckedChanged: {
Config.options.windows.showTitlebar = checked;
}
}
ConfigSwitch {
text: "Center title"
text: Translation.tr("Center title")
checked: Config.options.windows.centerTitle
onCheckedChanged: {
Config.options.windows.centerTitle = checked;
+7 -7
View File
@@ -28,27 +28,27 @@ ApplicationWindow {
property bool showNextTime: false
property var pages: [
{
name: "Style",
name: Translation.tr("Style"),
icon: "palette",
component: "modules/settings/StyleConfig.qml"
},
{
name: "Interface",
name: Translation.tr("Interface"),
icon: "cards",
component: "modules/settings/InterfaceConfig.qml"
},
{
name: "Services",
name: Translation.tr("Services"),
icon: "settings",
component: "modules/settings/ServicesConfig.qml"
},
{
name: "Advanced",
name: Translation.tr("Advanced"),
icon: "construction",
component: "modules/settings/AdvancedConfig.qml"
},
{
name: "About",
name: Translation.tr("About"),
icon: "info",
component: "modules/settings/About.qml"
}
@@ -110,7 +110,7 @@ ApplicationWindow {
leftMargin: 12
}
color: Appearance.colors.colOnLayer0
text: "Settings"
text: Translation.tr("Settings")
font.pixelSize: Appearance.font.pixelSize.title
font.family: Appearance.font.family.title
}
@@ -162,7 +162,7 @@ ApplicationWindow {
FloatingActionButton {
id: fab
iconText: "edit"
buttonText: "Edit config"
buttonText: Translation.tr("Edit config")
expanded: navRail.expanded
onClicked: {
Qt.openUrlExternally(`${Directories.config}/illogical-impulse/config.json`);
+28 -28
View File
@@ -27,7 +27,7 @@ ApplicationWindow {
property bool showNextTime: false
visible: true
onClosing: Qt.quit()
title: "illogical-impulse Welcome"
title: Translation.tr("illogical-impulse Welcome")
Component.onCompleted: {
MaterialThemeLoader.reapplyTheme()
@@ -70,7 +70,7 @@ ApplicationWindow {
leftMargin: 12
}
color: Appearance.colors.colOnLayer0
text: "Yooooo hi there"
text: Translation.tr("Yooooo hi there")
font.pixelSize: Appearance.font.pixelSize.title
font.family: Appearance.font.family.title
}
@@ -80,7 +80,7 @@ ApplicationWindow {
anchors.right: parent.right
StyledText {
font.pixelSize: Appearance.font.pixelSize.smaller
text: "Show next time"
text: Translation.tr("Show next time")
}
StyledSwitch {
id: showNextTimeSwitch
@@ -123,7 +123,7 @@ ApplicationWindow {
anchors.fill: parent
ContentSection {
title: "Bar style"
title: Translation.tr("Bar style")
ConfigSelectionArray {
currentValue: Config.options.bar.cornerStyle
@@ -132,15 +132,15 @@ ApplicationWindow {
Config.options.bar.cornerStyle = newValue; // Update local copy
}
options: [
{ displayName: "Hug", value: 0 },
{ displayName: "Float", value: 1 },
{ displayName: "Plain rectangle", value: 2 }
{ displayName: Translation.tr("Hug"), value: 0 },
{ displayName: Translation.tr("Float"), value: 1 },
{ displayName: Translation.tr("Plain rectangle"), value: 2 }
]
}
}
ContentSection {
title: "Style & wallpaper"
title: Translation.tr("Style & wallpaper")
ButtonGroup {
Layout.fillWidth: true
@@ -159,19 +159,19 @@ ApplicationWindow {
Layout.alignment: Qt.AlignHCenter
buttonRadius: Appearance.rounding.small
materialIcon: "wallpaper"
mainText: konachanWallProc.running ? "Be patient..." : "Random: Konachan"
mainText: konachanWallProc.running ? Translation.tr("Be patient...") : Translation.tr("Random: Konachan")
onClicked: {
console.log(konachanWallProc.command.join(" "))
konachanWallProc.running = true;
}
StyledToolTip {
content: "Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers"
content: Translation.tr("Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers")
}
}
RippleButtonWithIcon {
materialIcon: "wallpaper"
StyledToolTip {
content: "Pick wallpaper image on your system"
content: Translation.tr("Pick wallpaper image on your system")
}
onClicked: {
Quickshell.execDetached([`${Directories.wallpaperSwitchScriptPath}`])
@@ -181,7 +181,7 @@ ApplicationWindow {
spacing: 10
StyledText {
font.pixelSize: Appearance.font.pixelSize.small
text: "Choose file"
text: Translation.tr("Choose file")
color: Appearance.colors.colOnSecondaryContainer
}
RowLayout {
@@ -207,19 +207,19 @@ ApplicationWindow {
StyledText {
Layout.alignment: Qt.AlignHCenter
text: "Change any time later with /dark, /light, /img in the launcher"
text: Translation.tr("Change any time later with /dark, /light, /img in the launcher")
font.pixelSize: Appearance.font.pixelSize.smaller
color: Appearance.colors.colSubtext
}
}
ContentSection {
title: "Policies"
title: Translation.tr("Policies")
ConfigRow {
ColumnLayout { // Weeb policy
ContentSubsectionLabel {
text: "Weeb"
text: Translation.tr("Weeb")
}
ConfigSelectionArray {
currentValue: Config.options.policies.weeb
@@ -228,16 +228,16 @@ ApplicationWindow {
Config.options.policies.weeb = newValue;
}
options: [
{ displayName: "No", value: 0 },
{ displayName: "Yes", value: 1 },
{ displayName: "Closet", value: 2 }
{ displayName: Translation.tr("No"), value: 0 },
{ displayName: Translation.tr("Yes"), value: 1 },
{ displayName: Translation.tr("Closet"), value: 2 }
]
}
}
ColumnLayout { // AI policy
ContentSubsectionLabel {
text: "AI"
text: Translation.tr("AI")
}
ConfigSelectionArray {
currentValue: Config.options.policies.ai
@@ -246,9 +246,9 @@ ApplicationWindow {
Config.options.policies.ai = newValue;
}
options: [
{ displayName: "No", value: 0 },
{ displayName: "Yes", value: 1 },
{ displayName: "Local only", value: 2 }
{ displayName: Translation.tr("No"), value: 0 },
{ displayName: Translation.tr("Yes"), value: 1 },
{ displayName: Translation.tr("Local only"), value: 2 }
]
}
}
@@ -256,7 +256,7 @@ ApplicationWindow {
}
ContentSection {
title: "Info"
title: Translation.tr("Info")
Flow {
Layout.fillWidth: true
@@ -272,7 +272,7 @@ ApplicationWindow {
spacing: 10
StyledText {
font.pixelSize: Appearance.font.pixelSize.small
text: "Keybinds"
text: Translation.tr("Keybinds")
color: Appearance.colors.colOnSecondaryContainer
}
RowLayout {
@@ -294,14 +294,14 @@ ApplicationWindow {
RippleButtonWithIcon {
materialIcon: "help"
mainText: "Usage"
mainText: Translation.tr("Usage")
onClicked: {
Qt.openUrlExternally("https://end-4.github.io/dots-hyprland-wiki/en/ii-qs/02usage/")
}
}
RippleButtonWithIcon {
materialIcon: "construction"
mainText: "Configuration"
mainText: Translation.tr("Configuration")
onClicked: {
Qt.openUrlExternally("https://end-4.github.io/dots-hyprland-wiki/en/ii-qs/03config/")
}
@@ -310,7 +310,7 @@ ApplicationWindow {
}
ContentSection {
title: "Useless buttons"
title: Translation.tr("Useless buttons")
Flow {
Layout.fillWidth: true
@@ -318,7 +318,7 @@ ApplicationWindow {
RippleButtonWithIcon {
nerdIcon: "󰊤"
mainText: "GitHub"
mainText: Translation.tr("GitHub")
onClicked: {
Qt.openUrlExternally("https://github.com/end-4/dots-hyprland")
}
+130 -1
View File
@@ -172,5 +172,134 @@
"Set the system prompt for the model.": "Set the system prompt for the model.",
"To Do": "To Do",
"Calendar": "Calendar",
"notifications": "notifications"
"notifications": "notifications",
"Advanced": "Advanced",
"About": "About",
"Services": "Services",
"Style": "Style",
"Edit config": "Edit config",
"Colors & Wallpaper": "Colors & Wallpaper",
"Light": "Light",
"Dark": "Dark",
"Material palette": "Material palette",
"Fidelity": "Fidelity",
"Fruit Salad": "Fruit Salad",
"Alternatively use /dark, /light, /img in the launcher": "Alternatively use /dark, /light, /img in the launcher",
"Fake screen rounding": "Fake screen rounding",
"When not fullscreen": "When not fullscreen",
"Choose file": "Choose file",
"Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers": "Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers",
"Be patient...": "Be patient...",
"Decorations & Effects": "Decorations & Effects",
"Tonal Spot": "Tonal Spot",
"Shell windows": "Shell windows",
"Auto": "Auto",
"Wallpaper": "Wallpaper",
"Content": "Content",
"Title bar": "Title bar",
"Transparency": "Transparency",
"Expressive": "Expressive",
"Yes": "Yes",
"Enable": "Enable",
"Rainbow": "Rainbow",
"Might look ass. Unsupported.": "Might look ass. Unsupported.",
"Monochrome": "Monochrome",
"Random: Konachan": "Random: Konachan",
"Center title": "Center title",
"Neutral": "Neutral",
"Pick wallpaper image on your system": "Pick wallpaper image on your system",
"No": "No",
"AI": "AI",
"Local only": "Local only",
"Policies": "Policies",
"Weeb": "Weeb",
"Closet": "Closet",
"Bar style": "Bar style",
"Show next time": "Show next time",
"Usage": "Usage",
"Plain rectangle": "Plain rectangle",
"Useless buttons": "Useless buttons",
"GitHub": "GitHub",
"Style & wallpaper": "Style & wallpaper",
"Configuration": "Configuration",
"Change any time later with /dark, /light, /img in the launcher": "Change any time later with /dark, /light, /img in the launcher",
"Keybinds": "Keybinds",
"Float": "Float",
"Hug": "Hug",
"Yooooo hi there": "Yooooo hi there",
"illogical-impulse Welcome": "illogical-impulse Welcome",
"Info": "Info",
"Volume limit": "Volume limit",
"Prevents abrupt increments and restricts volume limit": "Prevents abrupt increments and restricts volume limit",
"Resources": "Resources",
"12h am/pm": "12h am/pm",
"Base URL": "Base URL",
"Audio": "Audio",
"Networking": "Networking",
"Format": "Format",
"Time": "Time",
"Battery": "Battery",
"Prefixes": "Prefixes",
"Emojis": "Emojis",
"Earbang protection": "Earbang protection",
"Automatically suspends the system when battery is low": "Automatically suspends the system when battery is low",
"Automatic suspend": "Automatic suspend",
"Suspend at": "Suspend at",
"Max allowed increase": "Max allowed increase",
"Web search": "Web search",
"Polling interval (ms)": "Polling interval (ms)",
"Clipboard": "Clipboard",
"Low warning": "Low warning",
"24h": "24h",
"Use Levenshtein distance-based algorithm instead of fuzzy": "Use Levenshtein distance-based algorithm instead of fuzzy",
"System prompt": "System prompt",
"12h AM/PM": "12h AM/PM",
"Could be better if you make a ton of typos,\nbut results can be weird and might not work with acronyms\n(e.g. \"GIMP\" might not give you the paint program)": "Could be better if you make a ton of typos,\nbut results can be weird and might not work with acronyms\n(e.g. \"GIMP\" might not give you the paint program)",
"Critical warning": "Critical warning",
"User agent (for services that require it)": "User agent (for services that require it)",
"Such regions could be images or parts of the screen that have some containment.\nMight not always be accurate.\nThis is done with an image processing algorithm run locally and no AI is used.": "Such regions could be images or parts of the screen that have some containment.\nMight not always be accurate.\nThis is done with an image processing algorithm run locally and no AI is used.",
"Note: turning off can hurt readability": "Note: turning off can hurt readability",
"Workspaces shown": "Workspaces shown",
"Dark/Light toggle": "Dark/Light toggle",
"Dock": "Dock",
"Weather": "Weather",
"Pinned on startup": "Pinned on startup",
"Tip: Hide icons and always show numbers for\nthe classic illogical-impulse experience": "Tip: Hide icons and always show numbers for\nthe classic illogical-impulse experience",
"Appearance": "Appearance",
"Always show numbers": "Always show numbers",
"Buttons": "Buttons",
"Keyboard toggle": "Keyboard toggle",
"Scale (%)": "Scale (%)",
"Overview": "Overview",
"Rows": "Rows",
"Borderless": "Borderless",
"Screenshot tool": "Screenshot tool",
"Number show delay when pressing Super (ms)": "Number show delay when pressing Super (ms)",
"Timeout (ms)": "Timeout (ms)",
"Show app icons": "Show app icons",
"Workspaces": "Workspaces",
"Columns": "Columns",
"On-screen display": "On-screen display",
"Screen snip": "Screen snip",
"Mic toggle": "Mic toggle",
"Hover to reveal": "Hover to reveal",
"Bar": "Bar",
"Show background": "Show background",
"Show regions of potential interest": "Show regions of potential interest",
"Color picker": "Color picker",
"Help & Support": "Help & Support",
"Discussions": "Discussions",
"Color generation": "Color generation",
"Dotfiles": "Dotfiles",
"Distro": "Distro",
"Privacy Policy": "Privacy Policy",
"Documentation": "Documentation",
"Shell & utilities theming must also be enabled": "Shell & utilities theming must also be enabled",
"illogical-impulse": "illogical-impulse",
"Donate": "Donate",
"Terminal": "Terminal",
"Shell & utilities": "Shell & utilities",
"Qt apps": "Qt apps",
"Report a Bug": "Report a Bug",
"Issues": "Issues"
}
+130 -1
View File
@@ -172,5 +172,134 @@
"Set the system prompt for the model.": "为模型设置系统提示。",
"To Do": "待办",
"Calendar": "日历",
"notifications": "条通知"
"notifications": "条通知",
"Advanced": "高级",
"About": "关于",
"Services": "服务",
"Style": "样式",
"Edit config": "编辑配置",
"Colors & Wallpaper": "颜色和壁纸",
"Light": "浅色",
"Dark": "深色",
"Material palette": "颜色主题",
"Fidelity": "保真度",
"Fruit Salad": "水果沙拉",
"Alternatively use /dark, /light, /img in the launcher": "或者在启动器中使用 /dark、/light、/img",
"Fake screen rounding": "伪造屏幕圆角",
"When not fullscreen": "非全屏时",
"Choose file": "选择文件",
"Random SFW Anime wallpaper from Konachan\nImage is saved to ~/Pictures/Wallpapers": "随机 Konachan SFW 动漫壁纸\n图片保存到 ~/Pictures/Wallpapers",
"Be patient...": "请耐心等待...",
"Decorations & Effects": "装饰与特效",
"Tonal Spot": "色调点",
"Shell windows": "Shell 窗口",
"Auto": "自动",
"Wallpaper": "壁纸",
"Content": "内容",
"Title bar": "标题栏",
"Transparency": "透明度",
"Expressive": "表现力",
"Yes": "是",
"Enable": "启用",
"Rainbow": "彩虹",
"Might look ass. Unsupported.": "可能效果很差。不支持。",
"Monochrome": "单色",
"Random: Konachan": "随机:Konachan",
"Center title": "标题居中",
"Neutral": "中性",
"Pick wallpaper image on your system": "在系统中选择壁纸图片",
"No": "否",
"AI": "AI",
"Local only": "仅本地",
"Policies": "策略",
"Weeb": "二次元",
"Closet": "隐藏",
"Bar style": "Bar 样式",
"Show next time": "下次显示",
"Usage": "用法",
"Plain rectangle": "纯矩形",
"Useless buttons": "无用按钮",
"GitHub": "GitHub",
"Style & wallpaper": "样式与壁纸",
"Configuration": "配置",
"Change any time later with /dark, /light, /img in the launcher": "之后可在启动器用 /dark、/light、/img 更改",
"Keybinds": "快捷键",
"Float": "浮动",
"Hug": "贴合",
"Yooooo hi there": "哟嗬,您好呀",
"illogical-impulse Welcome": "illogical-impulse 欢迎页",
"Info": "信息",
"Volume limit": "音量限制",
"Prevents abrupt increments and restricts volume limit": "防止骤增并限制音量",
"Resources": "资源",
"12h am/pm": "12小时 上午/下午",
"Base URL": "基础 URL",
"Audio": "声音",
"Networking": "网络",
"Format": "格式",
"Time": "时间",
"Battery": "电池",
"Prefixes": "前缀",
"Emojis": "表情符号",
"Earbang protection": "防爆音保护",
"Automatically suspends the system when battery is low": "电池电量低时自动挂起系统",
"Automatic suspend": "自动挂起",
"Suspend at": "挂起阈值",
"Max allowed increase": "最大允许增幅",
"Web search": "网页搜索",
"Polling interval (ms)": "轮询间隔(毫秒)",
"Clipboard": "剪贴板",
"Low warning": "低电量警告",
"24h": "24小时制",
"Use Levenshtein distance-based algorithm instead of fuzzy": "使用 Levenshtein 距离算法替代模糊匹配",
"System prompt": "系统提示词",
"12h AM/PM": "12小时 AM/PM",
"Could be better if you make a ton of typos,\nbut results can be weird and might not work with acronyms\n(e.g. \"GIMP\" might not give you the paint program)": "如果你经常打错字可能更好用,但结果可能很奇怪,并且可能无法匹配缩写(如 \"GIMP\" 可能搜不到绘图程序)",
"Critical warning": "临界警告",
"User agent (for services that require it)": "用户代理(部分服务需要)",
"Such regions could be images or parts of the screen that have some containment.\nMight not always be accurate.\nThis is done with an image processing algorithm run locally and no AI is used.": "这些区域可能是图片或屏幕中具有一定包容性的部分。\n可能并不总是准确。\n这是通过本地运行的图像处理算法实现的,没有使用 AI。",
"Note: turning off can hurt readability": "注意:关闭后可能影响可读性",
"Workspaces shown": "显示的工作区数",
"Dark/Light toggle": "深浅色切换",
"Dock": "停靠栏",
"Weather": "天气",
"Pinned on startup": "启动时固定",
"Tip: Hide icons and always show numbers for\nthe classic illogical-impulse experience": "提示:隐藏图标并始终显示数字以获得经典体验",
"Appearance": "外观",
"Always show numbers": "总是显示数字",
"Buttons": "按钮",
"Keyboard toggle": "键盘切换",
"Scale (%)": "缩放比例(%)",
"Overview": "概览",
"Rows": "行数",
"Borderless": "无边框",
"Screenshot tool": "截图工具",
"Number show delay when pressing Super (ms)": "按下 Super 时数字显示延迟(ms)",
"Timeout (ms)": "超时时间(ms)",
"Show app icons": "显示应用图标",
"Workspaces": "工作区",
"Columns": "列数",
"On-screen display": "屏幕显示",
"Screen snip": "屏幕截图",
"Mic toggle": "麦克风切换",
"Hover to reveal": "悬停显示",
"Bar": "Bar",
"Show background": "显示背景",
"Show regions of potential interest": "显示可能感兴趣的区域",
"Color picker": "取色器",
"Help & Support": "帮助与支持",
"Discussions": "讨论区",
"Color generation": "配色生成",
"Dotfiles": "配置文件",
"Distro": "发行版",
"Privacy Policy": "隐私政策",
"Documentation": "文档",
"Shell & utilities theming must also be enabled": "必须同时启用 Shell 与工具主题",
"illogical-impulse": "illogical-impulse",
"Donate": "捐助",
"Terminal": "终端",
"Shell & utilities": "Shell 与工具",
"Qt apps": "Qt 应用",
"Report a Bug": "报告问题",
"Issues": "问题追踪"
}