0

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

谢谢你。

4

0 回答 0