Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在不重新启动应用程序的情况下,语言更改无法正常工作_Ios_Swift_Xcode_Localization - Fatal编程技术网

Ios 在不重新启动应用程序的情况下,语言更改无法正常工作

Ios 在不重新启动应用程序的情况下,语言更改无法正常工作,ios,swift,xcode,localization,Ios,Swift,Xcode,Localization,更改语言后,键盘仍显示以前的语言 同样适用于相机和其他物品 这是我登录页面的代码 let actionSheetController = UIAlertController(title: "Select App Language", message: nil, preferredStyle: .actionSheet) actionSheetController.addAction(UIAlertAction(title: "Arabic"

  • 更改语言后,键盘仍显示以前的语言

  • 同样适用于相机和其他物品

  • 这是我登录页面的代码

     let actionSheetController = UIAlertController(title: "Select App Language", message: nil, preferredStyle: .actionSheet)
          actionSheetController.addAction(UIAlertAction(title: "Arabic", style: .default, handler: { (alert) in
            if currentLanguage != "ar"
            {
          // DispatchQueue.main.async {
          UIView.appearance().semanticContentAttribute = .forceRightToLeft
          UINavigationBar.appearance().semanticContentAttribute = .forceRightToLeft
          let storyboard = UIStoryboard(name: "Main", bundle: nil)
          // the view controller that you want to show after changing the language
          let viewController = storyboard.instantiateViewController(withIdentifier: "LoginVC") as! UINavigationController
            LanguageManager.shared.setLanguage(language: .ar, rootViewController: viewController) { (view) in
            self.userDefaults.set(["ar","en"], forKey: "AppleLanguages")
    //        self.userDefaults.setValue(["lo","en"], forKey: "AppleLanguages")
    
            L10n.shared.language = "ar"
            currentLanguage = "ar"
            self.userDefaults.set(currentLanguage, forKey: "currentLanguage")
            self.userDefaults.synchronize()
            view.transform = CGAffineTransform(scaleX: 2, y: 2)
            view.alpha = 0
    
          }
            }
          // }
        }))
        actionSheetController.addAction(UIAlertAction(title: "English", style: .default, handler: { (alert) in
          // DispatchQueue.main.async {
            if currentLanguage != "en"
            {
          UIView.appearance().semanticContentAttribute = .forceLeftToRight
          UINavigationBar.appearance().semanticContentAttribute = .forceLeftToRight
          let storyboard = UIStoryboard(name: "Main", bundle: nil)
          // the view controller that you want to show after changing the language
          let viewController = storyboard.instantiateViewController(withIdentifier: "LoginVC") as! UINavigationController
          LanguageManager.shared.setLanguage(language: .en, rootViewController: viewController) { (view) in
            self.userDefaults.set(["en","ar"], forKey: "AppleLanguages")
            // self.userDefaults.setValue(["en","lo"], forKey: "AppleLanguages")
            L10n.shared.language = "en"
            currentLanguage = "en"
            Bundle.setLanguage("en")
            self.userDefaults.set(currentLanguage, forKey: "currentLanguage")
            self.userDefaults.synchronize()
            //LanguageManager.shared.defaultLanguage = .en
            view.transform = CGAffineTransform(scaleX: 2, y: 2)
            view.alpha = 0
    
          }
            }
          // }
        }))
        actionSheetController.addAction(UIAlertAction( title: "z_cancel".getLocalizedValue(), style: .cancel, handler: { (alert) in
          return
        }))
        if UIDevice.current.userInterfaceIdiom == .pad {
          let popoverController = actionSheetController.popoverPresentationController
          popoverController?.sourceView = self.view
          popoverController?.sourceRect = self.view.bounds
        }
        self.present(actionSheetController, animated: true, completion: nil)
    
    在这里输入代码

  • 在AppDelegate中

  • if let currentLang = userDefaults.value(forKey: "currentLanguage") as ? String {
        if currentLang == "ar" {
            LanguageManager.shared.defaultLanguage = .ar
            LanguageManager.shared.setLanguage(language: .ar)
        }
        else {
            LanguageManager.shared.setLanguage(language: .en)
        }
        currentLanguage = currentLang
        L10n.shared.language = currentLang
    }