我使用此行更改默认语言
[[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
答案 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");