Ios 如何设置accessibilityHint的语言?

Ios 如何设置accessibilityHint的语言?,ios,accessibility,Ios,Accessibility,我正在编写一个iOS应用程序,它在多语言环境中运行。因此,程序可以使用不同于系统语言的语言运行。甚至可以在应用程序内部更改语言,而无需重新启动应用程序。因此,我没有使用NSLocalizedString,而是使用了如下机制: - (NSString *)stringForLanguage:(NSString*)key { NSString *path; if(prefLanguage == 0) { path = [[NSBundle mainBundle] pathForRes

我正在编写一个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;
}
- (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"]];
}
为了让我的程序可以访问,我编写了一个在德语和法语之间切换的小方法:

- (void)setVoLanguage:(NSObject*)object
{
  if (prefLanguage == 0){
    [object setAccessibilityLanguage:@"de-DE"];
  } else {
    [object setAccessibilityLanguage:@"fr-FR"];
  }
}
我是这样使用这些方法的:

- (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;
}
- (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"]];
}
我的电话是用英语打的。第一个很好,这意味着值是用德语或法语读取的,而提示总是用英语读取。我很困惑

因此,它适用于AccessibilityLabel和AccessibilityValue,但不适用于AccessibilityHits。有人知道如何设置可访问性提示的语言吗


谢谢。

根据文档,这应该行得通。您是否使用
NSLocalizedString
返回带有
accessibilityHint
getter的字符串?NSLocalizedString只会对当前系统语言的字符串进行本地化。由于应用程序使用不同的语言,我使用的是不同的机制。我将编辑我的问题以使其更清楚。没错,我的意思是-通过覆盖
accessibilityHint
getter,您是否使用了类似的东西?@A-Live不,没有比我上面列出的更多的东西。很难判断该代码有什么问题,我猜您正在使用自定义本地化宏或开关根据区域设置代码来区分字符串。令人困惑的地方在于
stringForLanguage:
参数,传递的字符串显然不是语言代码,而是可访问性项键。我相信您会在负责
UI\u SPLIT\u SLIDER\u H
键或at Strings数据源的宏/代码分支中发现问题,而不是在iOs可访问性SDK中。