Swift:如何更改应用内的语言?

Kab*_*Chi 7 xcode localization objective-c ios swift

我正在使用Localize-Swift库(链接)来本地化我的应用程序,它可以正常使用.strings文件.问题是我必须本地化为一个从右到左的语言,我必须通过Interface Builder Storyboard进行本地化,这样我就可以使视图控制器看起来正确的RTL格式.问题是如何将故事板实时设置为用户选择的语言?

例如,我有2个故事板文件:

1- ... /ProjectName/Base.lproj/Main.storyboard

2- ... /ProjectName/fa-IR.lproj/Main.storyboard

我如何实时切换它们?

我已经知道我可以在方案和设备语言中更改它,但我想实时做,我不希望用户重新启动他们的设备.

谢谢

Kab*_*Chi 8

找到了答案:

NSUserDefaults.standardUserDefaults().setObject(["language identifier"], forKey: "AppleLanguages") 
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)

不幸的是用户必须重启应用程序!如果有人能找到解决方案,不重新启动应用程序,请通知我.

  • `.synchronize()` 已经过时,根本不应该再使用。 (2认同)

jor*_*gut 7

我认为 KababChi 的回答是正确的。但是,在较新版本的 Swift 中NSUserDefaults已被UserDefaults. 所以代码看起来像这样:

UserDefaults.standard.set(languages[indexPath.row], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
Run Code Online (Sandbox Code Playgroud)

应用仍需要重新启动才能应用这些更改。