Ios NSLocalizedStringFromTable在运行时更改默认语言

Ios NSLocalizedStringFromTable在运行时更改默认语言,ios,Ios,我正在使用此行更改默认语言 [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"it"] forKey:@"AppleLanguages"]; [[NSUserDefaults standardUserDefaults] synchronize]; //to make the change immediate 用这一行来得到这个值 NSLocalizedStringFromTable(@"tex

我正在使用此行更改默认语言

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"it"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize]; //to make the change immediate
用这一行来得到这个值

NSLocalizedStringFromTable(@"text", @"PA", nil);
唯一的问题是我需要重新启动应用程序才能应用更改

当我调用NSLocalizedStringFromTable时,它总是从更改之前的语言返回

是否可以让用户在不退出应用程序的情况下更改本地语言

下面是我创建的一个示例项目,它演示了这个问题
据我所知,这是不可能的。您可以做的是在
可本地化的.strings
文件键值对中包含

"en.error.general" = "An error occured.";
"fr.error.general" = "...";
然后定义一个宏,如:

#define LocalizedString(key, language) [[NSBundle mainBundle] localizedStringForKey:[NSString stringWithFormat:@"%@.%@", language, key] value:key table:nil]
并通过本地化字符串(@“error.general”,@“en”)调用它