IOS应用程序使用自定义设置屏幕更改语言

时间:2012-08-13 07:59:55

标签: iphone ios localization multilingual

我开发了基于导航控制器的多语言应用程序。应用程序的主菜单还有以下设置屏幕。用户可以通过按下语言按钮切换到应用程序语言。我想刷新主菜单屏幕和设置屏幕语言当用户更改语言但我没有。

settings screen

4 个答案:

答案 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)

如果您想更改语言,则需要重新启动应用程序。

为此,您可以使用本地通知重新启动应用程序,并显示正确的消息,告知用户您的应用程序现在将重新启动。

希望这个描述可以帮助你......