// // LanguageManager.swift // VDS // // Created by Matt Bruce on 9/25/24. // import Foundation // Language Manager to control the current language setting public class LanguageManager { // Enum to define supported languages public enum SupportedLanguage: String, CustomStringConvertible { case english = "en" case spanish = "es" public var description: String { self == .english ? "English" : "Spanish"} } // Private static variable to hold the in-memory current language private static var _currentLanguage: SupportedLanguage? { didSet { TextStyle.Provider.updateCurrentStyles() } } // Static property to manage the current language setting public static var currentLanguage: SupportedLanguage { get { // Check if there is an in-memory language setting guard let _currentLanguage else { // set default var deviceCurrentLanguage: SupportedLanguage = .english // Check device's preferred language let deviceLanguage = Locale.preferredLanguages.first ?? "en" if deviceLanguage.starts(with: "es") { deviceCurrentLanguage = .spanish } _currentLanguage = deviceCurrentLanguage return deviceCurrentLanguage } return _currentLanguage } set { // Set the in-memory language _currentLanguage = newValue } } // Method to set language using a language code string public static func setLanguage(with code: String) { if code.starts(with: "es") { _currentLanguage = .spanish } else { _currentLanguage = .english } } }