From 5daf158908b4e77a9599a7e1625d67a9a7484481 Mon Sep 17 00:00:00 2001 From: True Zhuanjia Date: Thu, 30 Apr 2026 01:24:15 +0800 Subject: [PATCH] update widget localization strings --- VoidLink/Input/OnScreenWidgetView.swift | 17 +- VoidLink/Localization/Localizable.xcstrings | 505 +++++++++++++++++++- 2 files changed, 511 insertions(+), 11 deletions(-) diff --git a/VoidLink/Input/OnScreenWidgetView.swift b/VoidLink/Input/OnScreenWidgetView.swift index e700b0c9..2c2e3cf2 100644 --- a/VoidLink/Input/OnScreenWidgetView.swift +++ b/VoidLink/Input/OnScreenWidgetView.swift @@ -125,8 +125,10 @@ import ObjectiveC.runtime @objc public var borderWidth: CGFloat = 0.0 @objc public var backgroundAlpha: CGFloat = 0.5 + @objc public var originalBackgroundAlpha: CGFloat = 0.5 @objc public var componentAlpha: CGFloat = 1 @objc public var labelAlpha: CGFloat = 0.82 + @objc public var originalLabelAlpha: CGFloat = 0.82 @objc public var borderAlpha: CGFloat = 0.1 @objc public var highlightAlpha: CGFloat = 0.77 @objc public var vibrationStyle: Int = 6 @@ -625,6 +627,8 @@ import ObjectiveC.runtime CATransaction.setDisableActions(true) self.backgroundAlpha = alpha + self.originalBackgroundAlpha = alpha + if self.hasComponent { self.componentAlpha = self.backgroundAlpha self.tweakAlpha(tweakBorderAlpha: false) @@ -695,6 +699,7 @@ import ObjectiveC.runtime @objc public func tweakLabelAlpha(alpha:CGFloat){ labelAlpha = alpha + originalLabelAlpha = alpha // label.textColor = UIColor(white: 1.0, alpha: labelAlpha) self.setupAtrributedText() } @@ -729,7 +734,7 @@ import ObjectiveC.runtime self.layer.borderColor = defaultBorderColor } - if tweakLabelAlpha {self.tweakLabelAlpha(alpha: backgroundAlpha > 0 ? 0.4 : -0.4)} + if tweakLabelAlpha {self.tweakLabelAlpha(alpha: backgroundAlpha > 0 ? 0.8 : -0.92)} if widgetType == WidgetTypeEnum.touchPad { self.backgroundColor = UIColor.clear // make touchPad transparent @@ -864,6 +869,13 @@ import ObjectiveC.runtime return false } + @objc func reverseColorPhase(reversed: Bool){ + backgroundAlpha = reversed ? (originalBackgroundAlpha.sign == .minus ? 0.5 : -0.5) : originalBackgroundAlpha + self.tweakAlpha(tweakBorderAlpha: true, tweakLabelAlpha: false) + labelAlpha = reversed ? (originalBackgroundAlpha.sign == .minus ? 0.5 : -0.9) : originalLabelAlpha + self.setupAtrributedText() + } + @objc func setupAtrributedText(){ var text = self.widgetLabel.contains("#") ? "\(self.widgetLabel.split(separator: "#").first ?? "")" : SwiftLocalizationHelper.localizedString(forKey: self.widgetLabel) @@ -886,7 +898,7 @@ import ObjectiveC.runtime } let attr = NSAttributedString( - string: self.folded ? "[\(text)]" : text, + string: self.folded ? "[\(text)]" : (self.isFolder ? " 🟡 \(text)" : "\(text)"), attributes: [ .foregroundColor: UIColor(white:labelAlpha>0 ? 1.0 : 0, alpha: abs(labelAlpha)), // 填充色 .strokeColor: (labelAlpha>0 ? UIColor.black : UIColor.white).withAlphaComponent(abs(labelAlpha)*0.43), // 描边色 @@ -3572,6 +3584,7 @@ import ObjectiveC.runtime // guard folder.folded != hidden else { return } folder.folded = hidden folder.setupAtrributedText() + folder.reverseColorPhase(reversed: !folder.folded) if hidden { for sequence in folder.sequenceSet { guard let widget = OnScreenWidgetView.mapping[sequence], widget != exception else {continue} diff --git a/VoidLink/Localization/Localizable.xcstrings b/VoidLink/Localization/Localizable.xcstrings index e8ba8248..599ed147 100644 --- a/VoidLink/Localization/Localizable.xcstrings +++ b/VoidLink/Localization/Localizable.xcstrings @@ -663,6 +663,35 @@ } } }, + "=dagger" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dagger" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "匕首" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "匕首" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "匕首" + } + } + } + }, "=DisableTouch" : { "extractionState" : "manual", "localizations" : { @@ -750,6 +779,35 @@ } } }, + "=flash" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Flash" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "闪光弹" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "閃光彈" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "閃光彈" + } + } + } + }, "=Folder" : { "extractionState" : "manual", "localizations" : { @@ -831,6 +889,35 @@ } } }, + "=gyro" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gyro" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "陀螺仪" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "陀螺儀" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "陀螺儀" + } + } + } + }, "=gyroRsvpad" : { "extractionState" : "manual", "localizations" : { @@ -860,6 +947,64 @@ } } }, + "=inspect" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inspect" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "检视" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "檢視" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "檢視" + } + } + } + }, + "=interact" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Interact" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "交互" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "互動" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "互動" + } + } + } + }, "=jump" : { "extractionState" : "manual", "localizations" : { @@ -895,7 +1040,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "KBM" + "value" : "KB/M" } }, "zh-Hans" : { @@ -906,13 +1051,13 @@ }, "zh-Hant" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "鍵鼠佈局" } }, "zh-HK" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "鍵鼠佈局" } } @@ -947,6 +1092,122 @@ } } }, + "=laser" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Laser" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "激光" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "雷射" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "雷射" + } + } + } + }, + "=left" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Left" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "左倾" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "左傾" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "左傾" + } + } + } + }, + "=map" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Map" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "地图" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "地圖" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "地圖" + } + } + } + }, + "=mic" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mic" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "麦克风" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "麥克風" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "麥克風" + } + } + } + }, "=noSingleTouch" : { "extractionState" : "manual", "localizations" : { @@ -1034,6 +1295,35 @@ } } }, + "=pickup" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pickup" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "拾取" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "拾取" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "拾取" + } + } + } + }, "=pressureCurve" : { "extractionState" : "manual", "localizations" : { @@ -1063,6 +1353,35 @@ } } }, + "=prone" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prone" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "卧倒" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "臥倒" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "臥倒" + } + } + } + }, "=quitApp" : { "extractionState" : "manual", "localizations" : { @@ -1121,6 +1440,35 @@ } } }, + "=right" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Right" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "右倾" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "右傾" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "右傾" + } + } + } + }, "=rsvpadTip" : { "extractionState" : "manual", "localizations" : { @@ -1190,20 +1538,20 @@ }, "zh-Hans" : { "stringUnit" : { - "state" : "needs_review", - "value" : "开火" + "state" : "translated", + "value" : "射击" } }, "zh-Hant" : { "stringUnit" : { - "state" : "needs_review", - "value" : "開火" + "state" : "translated", + "value" : "射擊" } }, "zh-HK" : { "stringUnit" : { - "state" : "needs_review", - "value" : "開火" + "state" : "translated", + "value" : "射擊" } } } @@ -1237,6 +1585,64 @@ } } }, + "=skill1" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Skill1" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "技能1" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "技能1" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "技能1" + } + } + } + }, + "=skill2" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Skill2" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "技能2" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "技能2" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "技能2" + } + } + } + }, "=softkeyboard" : { "extractionState" : "manual", "localizations" : { @@ -1266,6 +1672,58 @@ } } }, + "=sprint" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sprint" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "冲刺" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "衝刺" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "衝刺" + } + } + } + }, + "=squat" : { + "extractionState" : "manual", + "localizations" : { + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "蹲下" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "蹲下" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "蹲下" + } + } + } + }, "=toolbox" : { "extractionState" : "manual", "localizations" : { @@ -1295,6 +1753,35 @@ } } }, + "=ult" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ult." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "终极技" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "終極技" + } + }, + "zh-HK" : { + "stringUnit" : { + "state" : "translated", + "value" : "終極技" + } + } + } + }, "=virtualGamepad" : { "extractionState" : "manual", "localizations" : {