Ariver
2026-05-11 1a7643b2e7e8f9712533e5a68536ee3b23b0804b
Apptag/L10n.swift
@@ -4,6 +4,7 @@
enum L10n {
    static var current: [String: String] = [:]
    private(set) static var currentCode = "en"
    /// Call once at startup to load the saved or system language.
    static func setup() {
@@ -28,12 +29,23 @@
        UserDefaults.standard.set(code, forKey: "appLanguage")
    }
    /// 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) {
        guard let url = Bundle.main.url(
            forResource: code, withExtension: "json",
            subdirectory: "Localization"
        ) else {
            // Fallback to bundled English
            if code != "en" { load("en") }
            return
        }
@@ -41,6 +53,7 @@
              let dict = try? JSONSerialization.jsonObject(with: data) as? [String: String]
        else { return }
        current = dict
        currentCode = code
    }
    private static func fallbackCode() -> String {