嗨 friend 们,我是 iPhone 新手。在我的项目中,我使用本地化来更改应用程序的语言。我做到了,但是问题来了。当应用程序停止并再次运行时,通过本地化设置的语言不会保留。所以我读到我们需要在 NSUserDefaults 中保存本地化设置的语言。请帮我。如何将其保存在 NSUserDefaults 中并在应用程序启动时回调?这是代码。这样我就设置了语言
- (IBAction)EngLang:(id)sender {
[[Localization sharedInstance] setPreferred:@"en" fallback:@"es"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"en" forKey:@"Applanguage"];
}
- (IBAction)espLang:(id)sender {
[[Localization sharedInstance] setPreferred:@"es" fallback:@"en"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"es" forKey:@"Applanguage"];
}
如何在 NSUserDefaults 中保存语言以及如何在应用程序启动时调用它? 现在我将语言保存在 NSUserDefaults 中。怎么读呢?这是我以前读过的代码。我在 appDelegate 中完成了此操作。
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en",@"es", nil] forKey:@"Applanguage"];
[[NSUserDefaults standardUserDefaults] synchronize];
最佳答案
试试这个。
// Set languge en
- (IBAction)EngLang:(id)sender {
[[Localization sharedInstance] setPreferred:@"en" fallback:@"es"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"en" forKey:@"Applanguage"];
[defaults synchronize];
}
// Set languge es
- (IBAction)espLang:(id)sender {
[[Localization sharedInstance] setPreferred:@"es" fallback:@"en"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"es" forKey:@"Applanguage"];
[defaults synchronize];
}
// Call this method on launching.
- (void) retainTheLastSettedLanguage
{
NSString * currentLanguage ;
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"Applanguage"] != nil)
{
currentLanguage = [[NSUserDefaults standardUserDefaults] valueForKey:@"Applanguage"];
if ([currentLanguage isEqualToString:@"en"])
{
[[Localization sharedInstance] setPreferred:@"en" fallback:@"es"];
}
else
{
[[Localization sharedInstance] setPreferred:@"es" fallback:@"en"];
}
}
}
关于ios - iPhone : Using localization change language of an app set it in NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21472208/