在使用 Swift 的应用程序中有语言 select 选项

Having a language select option in an app using Swift

我用 Google 搜索了几个小时,但找不到针对以下问题的建议(使用 Swift)。

我在许多应用程序中都看到了 select 应用程序内部语言的选项,如下所示:


(来源:unity3d.com

我想实现类似的功能,但在实现时遇到了问题。我已经本地化了我的应用程序并设置了我的 Localizable.strings 文件。我想这与在 NSUserDefaults 中存储 selected 语言有关,但是一旦选择了一种语言,我怎样才能让应用程序使用适当的 Localizable.strings 文件呢?或者这是错误的处理方式?

其他人如何在 Swift 中成功实现此功能?

我已经在我的一个项目中遇到过这个问题并找到了一个解决方案:

当用户select从列表中选择一种语言时,post一种NSNotification。您的所有 UIViewController 子类都必须注册此通知并根据新语言 selected 更改标签值。

您可以使用本地化字符串来设置标签,但不应调用 NSLocalizedString(...),因为它依赖于与应用程序语言不同的设备语言。

您可以在 Github 上找到我的自定义本地化器实现,在 Swift 和 objective-C 上都可用。