如何在不重新启动的情况下从应用内部更改应用的本地化?

时间:2015-01-13 12:50:35

标签: ios objective-c iphone xcode localization

我遇到了应用程序中语言设置的问题,用户可以随时更改它,但是..

当我使用此代码更改它时,例如

[[NSUserDefaults standardUserDefaults] setObject:@[@"de", @"en", @"it"] forKey:@"AppleLanguages"];

在重启应用程序之前它没有效果becuase bundle已经在appDelegate中加载了,对吗?

所以我尝试了这个解决方案

https://stackoverflow.com/a/20257557/2839104

但已经加载的viewControllers没有影响,所以......

如何在不重新启动应用程序语言的情况下更新应用程序语言,而无需使用其他内容更改NSLog用法?有什么办法吗?

我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您必须实现一个类,该类将加载与项目中可用语言相对应的每个localizable.string。

然后创建一个viewController以允许选择一种新语言。
当用户选择一种语言时,您必须重新加载语言标签并通知每个控制器它必须自行刷新。

我在我的一些应用程序中做了这个。

我创建了一个宏来将我的viewController作为委托添加到languageManager。