相关疑难解决方法(0)

快速改变语言

现在我知道苹果不推荐这个.

通常,您不应在应用程序中更改iOS系统语言(通过使用AppleLanguages pref键).这违反了在Settings应用程序中切换语言的基本iOS用户模型,并且还使用了未记录的首选项键,这意味着在将来的某个时候,键名可能会更改,这会破坏您的应用程序.

但是,这是一个应用程序,在运行中改变语言是有道理的,只要相信我.我也知道这里提出了这个问题:在运行iOS时,以编程方式动态更改语言.然而,这已经老了,我想知道是否有更新,更好或更简单的方法来做到这一点.目前在我的应用程序中,我有一个语言选择屏幕.单击此视图中的按钮可使用与该按钮关联的语言调用以下函数:

 func changeLang(language: String) {

    if language != (currentLang as! String?)! {
        func handleCancel(alertView: UIAlertAction!)
        {

        }
        var alert = UIAlertController(title: NSLocalizedString("language", comment: "Language"), message: NSLocalizedString("languageWarning", comment: "Warn User of Language Change Different Than Defaults"), preferredStyle: UIAlertControllerStyle.Alert)

        alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler:handleCancel))
        alert.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.Default, handler:{ (UIAlertAction) in

            NSUserDefaults.standardUserDefaults().setObject([language], forKey: "AppleLanguages")
            NSUserDefaults.standardUserDefaults().synchronize()
            println(self.currentLang)

            let alert = UIAlertView()
            alert.title = NSLocalizedString("language", comment: "Sign In Failed")
            alert.message = NSLocalizedString("languageChangeNotification", comment: "Notify of language change")
            alert.addButtonWithTitle(NSLocalizedString("ok", comment: …
Run Code Online (Sandbox Code Playgroud)

iphone internationalization nsuserdefaults ios swift

15
推荐指数
2
解决办法
2万
查看次数

如果不重新启动应用程序,iOS StoryBoard 本地化将无法工作

我想更改应用程序的语言。我用英语和印地语为 Main.strings 创建了两个文件。还有印地语和英语的 Localized.strings。这是我更改语言的方法:

 LocalizationSystem.sharedInstance.setLanguage(languageCode: "hi")

 UIView.appearance().semanticContentAttribute = .forceLeftToRight

 let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

 let vc = storyboard.instantiateViewController(withIdentifier: "SwipeViewController")as! SwipeViewController

let navigationController = UINavigationController(rootViewController: vc)

navigationController.modalPresentationStyle = .overFullScreen
 UIApplication.shared.keyWindow?.rootViewController = navigationController
Run Code Online (Sandbox Code Playgroud)

这是 LocalizationSystem 类

class LocalizationSystem : NSObject {

var bundle: Bundle!

class var sharedInstance: LocalizationSystem {
    struct Singleton {
        static let instance: LocalizationSystem = LocalizationSystem()
    }
    return Singleton.instance
}

override init() {
    super.init()
    bundle = Bundle.main
}

func localizedStringForKey(key:String, comment:String) -> String {
    return bundle.localizedString(forKey: key, …
Run Code Online (Sandbox Code Playgroud)

localization storyboard ios swift

5
推荐指数
1
解决办法
624
查看次数