如何在 iOS 运行时更改语言 [重复]
Posted
技术标签:
【中文标题】如何在 iOS 运行时更改语言 [重复]【英文标题】:How to change language at runtime in iOS [duplicate] 【发布时间】:2016-06-01 12:12:12 【问题描述】:在我的 ios 应用中,我需要一个更改语言的选项。我们可以在不更改设备设置中的语言的情况下更改它吗
【问题讨论】:
通过链接。这将解决您的问题createdineden.com/blog/post/… 【参考方案1】:您可以使用以下代码设置语言
- (void) setLanguage:(NSString*) lang
NSString *path = [[NSBundle mainBundle] pathForResource:lang ofType:@"lproj"];
if (path == nil)
myBundle = [NSBundle mainBundle];
else
myBundle = [NSBundle bundleWithPath:path];
if (myBundle == nil)
myBundle = [NSBundle mainBundle];
然后你可以得到本地化
- (NSString*) localizedStringForKey:(NSString*) key
return [myBundle localizedStringForKey:key value:@"" table:nil];
【讨论】:
【参考方案2】:例如,在您的应用程序中使用不同的语言字符串存储不同的静态 json/plist 等,当您切换选项时解析它并设置为标签。
【讨论】:
如何切换选项? 在 UI 中,您可以在某些设置页面或代码检查中添加切换按钮[NSLocale currentLocale]
或 [NSLocale systemLocale]
但最好使用标准的本地化.strings【参考方案3】:
我不确定,但是使用 NSUserDefaults 尝试一下这段代码
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray* languages = [userDefaults objectForKey:@"AppleLanguages"];
[languages insertObject:@"de" atIndex:0]; // ISO639-1
[[NSUserDefaults standardUserDefaults] synchronize];
【讨论】:
以上是关于如何在 iOS 运行时更改语言 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 模拟器上使用某种语言键盘启动 Appium 测试