如何在 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 应用本地化运行时间

如何在 iOS 模拟器上使用某种语言键盘启动 Appium 测试

Flutter:不使用AppBar时如何在Android和iOS上更改状态栏文本颜色[重复]

如何在 java swing 运行时更改语言

如何在colab中编写R [重复]

如何在 iOS 中更改 cordova-camera-plugin 语言?