From beebaf7b68b3749f4a1bc4d916e23906b8c16d7f Mon Sep 17 00:00:00 2001
From: Ariver <ar@MacBook-Air.local>
Date: Wed, 13 May 2026 23:31:23 +0800
Subject: [PATCH] Release TagLauncher 5.6.0
---
Apptag/L10n.swift | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/Apptag/L10n.swift b/Apptag/L10n.swift
index 9d6ac8b..d2d3612 100644
--- a/Apptag/L10n.swift
+++ b/Apptag/L10n.swift
@@ -2,6 +2,10 @@
// MARK: - Localization Manager
+extension Notification.Name {
+ static let appLanguageDidChange = Notification.Name("AppLanguageDidChange")
+}
+
enum L10n {
static var current: [String: String] = [:]
private(set) static var currentCode = "en"
@@ -25,8 +29,23 @@
]
static func switchTo(_ code: String) {
+ guard supported.contains(where: { $0.code == code }) else { return }
+ guard code != currentCode else { return }
load(code)
UserDefaults.standard.set(code, forKey: "appLanguage")
+ NotificationCenter.default.post(name: .appLanguageDidChange, object: nil, userInfo: ["code": currentCode])
+ }
+
+ /// Load a specific key's translation for a given language code without switching.
+ static func loadedTranslation(_ key: String, for code: String) -> String? {
+ guard let url = Bundle.main.url(
+ forResource: code, withExtension: "json",
+ subdirectory: "Localization"
+ ) else { return nil }
+ guard let data = try? Data(contentsOf: url),
+ let dict = try? JSONSerialization.jsonObject(with: data) as? [String: String]
+ else { return nil }
+ return dict[key]
}
private static func load(_ code: String) {
--
Gitblit v1.9.3