我开发了基于导航控制器的多语言应用程序。应用程序的主菜单还有以下设置屏幕。用户可以通过按下语言按钮切换到应用程序语言。我想刷新主菜单屏幕和设置屏幕语言当用户更改语言但我没有。
答案 0 :(得分:4)
NSString *path = [[NSBundle mainBundle] pathForResource:@"nl" ofType:@"lproj"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
NSString *englishWord = @"translate";
NSString *translation = [bundle localizedStringForKey:englishWord value:englishWord table:nil];
NSLog(@"%@ = %@", englishWord, translation);
// nl.lproj/Localizable.strings:
"translate" = "vertaal"
答案 1 :(得分:1)
请记住,Apple不鼓励在应用中选择语言。最好的解决方案是本地化您的视图并使用NSLocalizableString,并让应用程序中的语言遵循手机设置的语言。
答案 2 :(得分:0)
在AppDelegate中创建一个方法(返回从plist加载的语言字符串的字典)。 每当用户选择语言时,相应地设置NSUserDefaults,并在app delegate中调用该方法。 现在在每个控制器的viewWillAppear中使用此方法,并获取所需的语言字典并加载视图。
-(NSMutableDictionary*)getCurrentLanguageDictionaryFromResource
{
NSString *defaultPath;
defaultPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@.plist",[self getAppCurrentSettingsLanguage]] ofType:nil];
if(languageDictionary !=nil)
{
[languageDictionary release];
languageDictionary=nil;
}
languageDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:defaultPath];
return languageDictionary;
}
答案 3 :(得分:-1)
如果您想更改语言,则需要重新启动应用程序。
为此,您可以使用本地通知重新启动应用程序,并显示正确的消息,告知用户您的应用程序现在将重新启动。
希望这个描述可以帮助你......