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

我正在使用Localize-Swift库( 链接 )来本地化我的应用程序,它与.strings文件工作正常。 问题是我必须本地化到左边的语言,我必须通过Interface Builder Storyboard本地化,这样我才能使视图控制器看起来正确的RTL格式。 问题是如何将故事板实时设置为用户select的语言?

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

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

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

我如何在他们之间实时切换?

我已经知道我可以改变它在scheme和设备的语言,但我想实时做,我不想让用户重新启动他们的设备。

谢谢

find我的答案:

 NSUserDefaults.standardUserDefaults().setObject(["language identifier"], forKey: "AppleLanguages") NSUserDefaults.standardUserDefaults().synchronize() 

不幸的是用户必须重新启动应用 如果有人可以find一个解决scheme,不重新启动应用程序,请通知我。

您可以使用NSBundle +语言第三方类。

也许RSMultiLanguage pod对你有用吗? 我已经在我的应用程序中使用它,它提供了更改应用程序中的用户语言的可能性。 我很确定你可以根据用户的位置设置一个if循环。 这样你可能不必重新启动应用程序。

RSMultiLanguage

用法

要运行示例项目,请克隆该回购站,并首先从示例目录运行pod安装。

安装

RSMultiLanguage通过CocoaPods可用。 要安装它,只需将以下行添加到您的Podfile:

 pod "RSMultiLanguage" 

作者

Roy Ng,roytornado@gmail.com

执照

RSMultiLanguage根据MIT许可证提供。 查看许可证文件获取更多信息。

  1. 需要重新启动应用程序。 按照下面的代码行。

    UserDefaults.standard.set([“language identifier”],forKey:“AppleLanguages”)UserDefaults.standard.synchronize()

  2. 重新启动的应用程序不需要(答案可能需要定制在提供的源代码)。 按照提供的网页链接。

http://www.factorialcomplexity.com/blog/2015/01/28/how-to-change-localization-internally-in-your-ios-application.html