I have a problem when I change the application language using swift code. In my case I had to use the xliff file that was automatically generated from the storyboard/xib. My code:
let APPLE_LANGUAGE_KEY = "AppleLanguages"
/// L102Language
class L102Language {
    /// get current Apple language
    class func currentAppleLanguage() -> String{
        let userdef = UserDefaults.standard
        let langArray = userdef.object(forKey: APPLE_LANGUAGE_KEY) as! NSArray
        let current = langArray.firstObject as! String
        return current
    }
    /// set @lang to be the first in Applelanguages list
    class func setAppleLAnguageTo(lang: String) {
        let userdef = UserDefaults.standard
        userdef.set([lang,currentAppleLanguage()], forKey: APPLE_LANGUAGE_KEY)
        userdef.synchronize()
        
    }
}
Use:
if L102Language.currentAppleLanguage() == "en" {
    L102Language.setAppleLAnguageTo(lang: "vi")
    UIView.appearance().semanticContentAttribute = .forceRightToLeft
} else {
    L102Language.setAppleLAnguageTo(lang: "en")
    UIView.appearance().semanticContentAttribute = .forceLeftToRight
}
After userdef.synchronize() is executed the application does not change the language. It only really works when I restart the app. I think this way is not good. In this case, what else do I need to do to change the language of the application without restarting.
thanks everyone
Update: I resolved problem with answer https://stackoverflow.com/a/48187049/12429634 Thanks everyone!
 
    