import Foundation public class LocalizationManager { public static let shared = LocalizationManager() private var currentLanguage: String private var strings: [String: String] = [:] private init() { // Detect system language let preferredLanguages = Locale.preferredLanguages let systemLanguage = preferredLanguages.first ?? "en" if systemLanguage.hasPrefix("es") { currentLanguage = "es" } else { currentLanguage = "en" } loadStrings() } public func localizedString(_ key: String, comment: String = "") -> String { return strings[key] ?? key } private func loadStrings() { // Load strings for current language if let path = Bundle.main.path(forResource: "Localizable", ofType: "strings", inDirectory: "Localizations/\(currentLanguage).lproj"), let data = FileManager.default.contents(atPath: path), let content = String(data: data, encoding: .utf8) { parseStringsFile(content) } else { // Fallback to embedded strings loadEmbeddedStrings() } } private func parseStringsFile(_ content: String) { let lines = content.components(separatedBy: .newlines) for line in lines { let trimmed = line.trimmingCharacters(in: .whitespacesAndNewlines) if trimmed.hasPrefix("\"") && trimmed.contains("\" = \"") && trimmed.hasSuffix("\";") { // Parse: "key" = "value"; let parts = trimmed.dropFirst().dropLast() // Remove leading " and trailing "; if let equalIndex = parts.firstIndex(of: "=") { let keyPart = String(parts[.. String { return LocalizationManager.shared.localizedString(key) }