我正在编写一个iOS应用程序,它在多语言环境中运行。因此,程序可以使用与系统语言不同的语言操作。甚至可以在应用程序内更改语言,而无需重新启动应用程序。因此,我没有使用NSLocalizedString,而是使用了这样的机制:
- (NSString *)stringForLanguage:(NSString*)key
{
NSString *path;
if(prefLanguage == 0) {
path = [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];
} else {
path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"];
}
NSString* str=[[NSBundle bundleWithPath:path] localizedStringForKey:key value:@"" table:nil];
return str;
}
由于我想让我的程序可访问,我写了这个小方法来切换德语和法语:
- (void)setVoLanguage:(NSObject*)object
{
if (prefLanguage == 0){
[object setAccessibilityLanguage:@"de-DE"];
} else {
[object setAccessibilityLanguage:@"fr-FR"];
}
}
我正在使用这样的方法:
- (NSString *)accessibilityLabel {
[appDelegate setVoLanguage:self];
return [NSString stringWithString:[appDelegate stringForLanguage:@"UI_SPLIT_SLIDER"]];
}
- (NSString *)accessibilityHint {
[appDelegate setVoLanguage:self];
return [NSString stringWithString:[appDelegate stringForLanguage:@"UI_SPLIT_SLIDER_H"]];
}
我的手机用英文运行。第一个工作正常,这意味着该值以德语或法语读取,而提示始终用英语读取。我很困惑。
因此它适用于accessibilityLabels和accessibilityValues,但不适用于accessibilityHints。有人知道如何设置accessibilityHints的语言吗?
谢谢。