在iOS应用中手动选择语言(iPhone和iPad)

我的问题:

我的iPhone应用程序如何告诉iOS,用户确实在应用程序首选项中选择了一种语言,该语言与常规设置中设置的语言不同?

相同问题的其他提法:

我该如何告诉系统,该系统NSLocalizedString (@"text", @"comment");不应访问系统范围内选择的语言,而应访问应用程序内选择的语言?

背景,例如:

请以这种情况为例:一个德国移民的儿子住在法国东北部,毗邻卢森堡和德国。他的母语是法语,因此他确实将iPhone的用户界面语言设置为法语(设置->常规->国际->语言->法语)。但是由于他的文化背景,并且因为他居住的地区是双语地区,所以他的德语也很好。但是他不会说十个英语单词。在iPhone(以及iPad)上,他没有机会选择第二种语言,因此电话只知道他会说法语。它不了解其他语言的用户技能。

现在有了我的应用程序:我确实用英语和德语开发了它(德语是我的母语,英语是IT的标准语言)。我确实是根据适用于多个iOS应用程序的所有规则和最佳实践开发它的。我的应用程序的“第一”语言(默认语言)是英语。

这意味着:

如果有人在“设置”中选择了英语或德语,则应用程序用户界面将自动使用所选的语言。用户甚至不会注意到还有其他语言可用。

但是,如果他在常规设置中选择了任何其他语言(例如中文,波兰语或法语),他将获得应用程序的默认语言,在我的情况下为英语。但是对于我的法国德国朋友来说,这不是最佳选择。他想使用现有的德语版本,但是似乎没有办法让用户选择此版本。

添加法文翻译将为我们的法德朋友解决问题,但不会解决其他两种语言(例如意大利语和德语)的问题,并且我无法使用此星球上所有语言支持我的应用程序。将默认语言设置为德语也不是最佳选择,因为这对于说法语(母语)和英语(作为第二语言)的人们会产生相同的问题。

因此,我认为我的应用程序必须可以手动选择与预先选择的语言不同的语言。向应用程序设置面板添加语言选择不是问题。但是我如何告诉系统,该系统NSLocalizedString (@"text", @"comment");不应该访问系统范围内选择的语言,而应访问应用程序内选择的语言?


函数式编程
浏览 667回答 3
3回答

慕婉清6462132

只需将以下内容添加到屏幕上即可选择语言:    NSString *tempValue = //user chosen language. Can be picker view/button/segmented control/whatever. Just get the text out of it    NSString *currentLanguage = @"";    if ([tempValue rangeOfString:NSLocalizedString(@"English", nil)].location != NSNotFound) {        currentLanguage = @"en";    } else if ([tempValue rangeOfString:NSLocalizedString(@"German", nil)].location != NSNotFound) {        currentLanguage = @"de";    } else if ([tempValue rangeOfString:NSLocalizedString(@"Russian", nil)].location != NSNotFound) {        currentLanguage = @"ru";    }    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:currentLanguage, nil] forKey:@"AppleLanguages"];    [[NSUserDefaults standardUserDefaults]synchronize];然后要求他们重新启动应用程序,该应用程序将使用其他语言。希望能帮助到你
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS