NSLocalizedStringFromTable在运行时更改默认语言

时间:2014-06-16 07:33:07

标签: ios

我使用此行更改默认语言

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"it"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize]; //to make the change immediate

并使用此行获取值

NSLocalizedStringFromTable(@"text", @"PA", nil);

唯一的问题是我需要重新启动应用才能应用更改。

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

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

这是我创建的示例项目,用于演示此问题 https://dl.dropboxusercontent.com/u/13431688/LocalizationTest.zip

1 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的。您可以做的是在Localizable.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]

并通过LocalizedString(@"error.general", @"en");

进行调用