Ariver
2026-05-11 c8a1b811bffd13dc6dfa39a7c5c0d4ee76cd11e5
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) {