我正在编写一个在多语言环境中运行的 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。有人知道如何设置可访问性提示的语言吗?
谢谢你。