Skip to content

Instantly share code, notes, and snippets.

@mukyasa
Created November 23, 2020 16:40
Show Gist options
  • Save mukyasa/57b777a6c6e898c7331539eb99e96847 to your computer and use it in GitHub Desktop.
Save mukyasa/57b777a6c6e898c7331539eb99e96847 to your computer and use it in GitHub Desktop.
final class AppLanguageManager {
static let shared = AppLanguageManager()
private(set) var currentLanguage: String
private(set) var currentBundle: Bundle = Bundle.main
var bundle: Bundle {
return currentBundle
}
private init() {
if let appLanguage = UserDefaults.standard.string(forKey: "AppLanguage") {
currentLanguage = appLanguage
} else {
currentLanguage = Locale.current.languageCode!
}
}
func setAppLanguage(_ languageCode: String) {
setCurrentLanguage(languageCode)
setCurrentBundlePath(languageCode)
}
private func setCurrentLanguage(_ languageCode: String) {
currentLanguage = languageCode
UserDefaults.standard.setValue(languageCode,
forKey: "AppLanguage")
}
private func setCurrentBundlePath(_ languageCode: String) {
guard let bundle = Bundle.main.path(forResource: languageCode,
ofType: "lproj"),
let langBundle = Bundle(path: bundle) else {
currentBundle = Bundle.main
return
}
currentBundle = langBundle
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment