Show the desktop shell in Chinese under zh_CN

This commit is contained in:
ZacharyZhang-NY committed 2026-10-06 21:29:39 -04:00
1 parent e590f22de6
commit e236713d9f
55 files changed
+867 -331

No files matched your search

+30 -30
View File
@@ -24,16 +24,16 @@ Panel {
property string mullvadQuery: ""
property int phraseIndex: 0
readonly property var activePhrases: [
"Encrypting connections",
"Sending secrets",
"Guarding wires",
"Braiding packets",
"Polishing tunnels",
"Hiding routes",
"Sealing ports",
"Sorting tailnets",
"Shuffling keys",
"Watching machines"
I18n.tr("Encrypting connections"),
I18n.tr("Sending secrets"),
I18n.tr("Guarding wires"),
I18n.tr("Braiding packets"),
I18n.tr("Polishing tunnels"),
I18n.tr("Hiding routes"),
I18n.tr("Sealing ports"),
I18n.tr("Sorting tailnets"),
I18n.tr("Shuffling keys"),
I18n.tr("Watching machines")
]
readonly property string heroPhraseText: activePhrases[phraseIndex % activePhrases.length]
@@ -52,7 +52,7 @@ Panel {
// "header" stays navigable, but an absent CLI leaves nothing to highlight.
readonly property bool headerHasCursor: cursorActive && focusSection === "header" && tailscale.installed
readonly property color iconColor: tailscale.active ? foreground : dim
readonly property string toggleHint: tailscale.active ? "Turn Tailscale off" : (tailscale.needsLogin ? "Authorize this device" : "Turn Tailscale on")
readonly property string toggleHint: tailscale.active ? I18n.tr("Turn Tailscale off") : (tailscale.needsLogin ? I18n.tr("Authorize this device") : I18n.tr("Turn Tailscale on"))
readonly property color barIconColor: tailscale.active ? barForeground : Qt.darker(barForeground, 1.55)
readonly property color hoverFill: bar ? Style.hoverFillFor(bar.foreground, Color.accent) : "transparent"
readonly property color selectedFill: bar ? Style.selectedFillFor(bar.foreground, Color.accent) : "transparent"
@@ -76,7 +76,7 @@ Panel {
var nodes = []
for (var i = 0; i < tailscale.tailnetExitNodes.length; i++) nodes.push(tailscale.tailnetExitNodes[i])
for (var j = 0; j < recentMullvadExitNodes.length; j++) nodes.push(recentMullvadExitNodes[j])
if (tailscale.mullvadRegions.length > 0) nodes.push({ id: "mullvad:add", AddMullvad: true, DisplayName: "Choose Mullvad region" })
if (tailscale.mullvadRegions.length > 0) nodes.push({ id: "mullvad:add", AddMullvad: true, DisplayName: I18n.tr("Choose Mullvad region") })
return nodes
}
@@ -132,7 +132,7 @@ Panel {
}
function mullvadRegionTitle(peer) {
if (!peer) return "Unknown"
if (!peer) return I18n.tr("Unknown")
var city = String(peer.City || "").trim()
var country = String(peer.Country || "").trim()
if (city === "" || city === "Any") return country || String(peer.DisplayName || "Unknown")
@@ -458,7 +458,7 @@ Panel {
id: hero
width: parent.width
title: tailscale.installed ? (tailscale.selfName || "Tailscale") : "Tailscale"
meta: tailscale.active ? root.heroPhraseText : "Tailscale is disconnected"
meta: tailscale.active ? root.heroPhraseText : I18n.tr("Tailscale is disconnected")
foreground: root.foreground
fontFamily: root.fontFamily
iconOpacity: tailscale.active ? 1.0 : 0.5
@@ -501,7 +501,7 @@ Panel {
textFormat: Text.PlainText
visible: tailscale.actionStatus !== "" || tailscale.lastError !== ""
width: parent.width
text: tailscale.actionStatus !== "" ? tailscale.actionStatus : tailscale.lastError
text: I18n.tr(tailscale.actionStatus !== "" ? tailscale.actionStatus : tailscale.lastError)
color: tailscale.lastError !== "" && tailscale.actionStatus === "" ? root.urgent : root.dim
font.family: root.fontFamily
font.pixelSize: Style.font.bodySmall
@@ -520,7 +520,7 @@ Panel {
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Style.space(12)
text: "Tailscale CLI is not installed or not on PATH."
text: I18n.tr("Tailscale CLI is not installed or not on PATH.")
color: root.dim
font.family: root.fontFamily
font.pixelSize: Style.font.body
@@ -539,7 +539,7 @@ Panel {
spacing: Style.space(10)
PanelSectionHeader {
text: "CONNECTIONS"
text: I18n.tr("CONNECTIONS")
foreground: root.foreground
fontFamily: root.fontFamily
}
@@ -572,7 +572,7 @@ Panel {
spacing: Style.space(10)
PanelSectionHeader {
text: "EXIT NODES"
text: I18n.tr("EXIT NODES")
foreground: root.foreground
fontFamily: root.fontFamily
}
@@ -602,7 +602,7 @@ Panel {
id: mullvadSearch
width: parent.width
foreground: root.foreground
placeholderText: "Search regions"
placeholderText: I18n.tr("Search regions")
text: root.mullvadQuery
onTextChanged: {
root.mullvadQuery = text
@@ -638,7 +638,7 @@ Panel {
Text {
visible: root.filteredMullvadRegions.length === 0
width: parent.width
text: "No Mullvad regions found."
text: I18n.tr("No Mullvad regions found.")
color: root.dim
font.family: root.fontFamily
font.pixelSize: Style.font.bodySmall
@@ -676,7 +676,7 @@ Panel {
spacing: Style.space(10)
PanelSectionHeader {
text: "MACHINES"
text: I18n.tr("MACHINES")
foreground: root.foreground
fontFamily: root.fontFamily
}
@@ -684,7 +684,7 @@ Panel {
Text {
visible: tailscale.installed && tailscale.active && tailscale.peers.length === 0
width: parent.width
text: "No machines found on this tailnet."
text: I18n.tr("No machines found on this tailnet.")
color: root.dim
font.family: root.fontFamily
font.pixelSize: Style.font.body
@@ -777,7 +777,7 @@ Panel {
Text {
Layout.fillWidth: true
text: "Authorize Tailscale operator"
text: I18n.tr("Authorize Tailscale operator")
color: root.foreground
font.family: root.fontFamily
font.pixelSize: Style.font.body
@@ -786,7 +786,7 @@ Panel {
Text {
Layout.fillWidth: true
text: "Allow this user to operate this Tailscale profile"
text: I18n.tr("Allow this user to operate this Tailscale profile")
color: root.dim
font.family: root.fontFamily
font.pixelSize: Style.font.caption
@@ -803,7 +803,7 @@ Panel {
property int rowIndex: 0
readonly property bool selectedAccount: account && account.selected === true
readonly property bool switchingAccount: account && tailscale.switchingAccountId === String(account.id || "")
readonly property string accountText: account ? tailscale.accountLabel(account) : "Account"
readonly property string accountText: account ? tailscale.accountLabel(account) : I18n.tr("Account")
hasCursor: root.cursorActive && root.focusSection === "accounts" && root.accountIndex === rowIndex
current: selectedAccount
@@ -867,7 +867,7 @@ Panel {
id: peerRow
property var peer: null
property int rowIndex: 0
readonly property string peerName: peer ? String(peer.DisplayName || peer.HostName || "Unknown") : "Unknown"
readonly property string peerName: peer ? String(peer.DisplayName || peer.HostName || I18n.tr("Unknown")) : I18n.tr("Unknown")
readonly property string peerIp: peer && peer.TailscaleIPs && peer.TailscaleIPs.length > 0 ? String(peer.TailscaleIPs[0]) : ""
readonly property string peerIpv6: {
if (!peer || !peer.TailscaleIPv6 || peer.TailscaleIPv6.length === 0) return ""
@@ -978,7 +978,7 @@ Panel {
id: sendButton
visible: tailscale.canSendFiles(peerRow.peer)
iconText: "󰒊"
tooltipText: "Send files"
tooltipText: I18n.tr("Send files")
foreground: root.foreground
fontFamily: root.fontFamily
Layout.alignment: Qt.AlignVCenter
@@ -1118,8 +1118,8 @@ Panel {
readonly property bool addMullvad: peer && peer.AddMullvad === true
readonly property bool activeExitNode: peer && peer.ExitNode === true
readonly property bool settingExitNode: peer && tailscale.settingExitNodeId === String(peer.id || "")
readonly property string peerName: peer ? String(peer.DisplayName || peer.HostName || "Unknown") : "Unknown"
readonly property string actionTooltip: addMullvad ? "" : (activeExitNode ? "Disconnect" : "Connect")
readonly property string peerName: peer ? String(peer.DisplayName || peer.HostName || I18n.tr("Unknown")) : I18n.tr("Unknown")
readonly property string actionTooltip: addMullvad ? "" : (activeExitNode ? I18n.tr("Disconnect") : I18n.tr("Connect"))
hasCursor: root.cursorActive && root.focusSection === "exitNodes" && root.exitNodeIndex === rowIndex
current: activeExitNode || settingExitNode || (addMullvad && root.mullvadPickerOpen)
@@ -1199,7 +1199,7 @@ Panel {
readonly property bool activeExitNode: peer && peer.ExitNode === true
readonly property bool settingExitNode: peer && tailscale.settingExitNodeId === String(peer.id || "")
readonly property bool selectedRegion: root.mullvadPickerOpen && root.mullvadRegionIndex === rowIndex
readonly property string actionTooltip: activeExitNode ? "Disconnect" : "Connect"
readonly property string actionTooltip: activeExitNode ? I18n.tr("Disconnect") : I18n.tr("Connect")
foreground: root.foreground
fill: root.hoverFill