多言語環境で動作するiOSアプリを書いています。結果として、プログラムはシステム言語とは異なる言語で動作する可能性があります。例:私の電話は英語で実行されており、プログラムはドイツ語またはフランス語で実行されています。すべてのテキストは正しい言語で表示されます。
今、私は、VoiceOverが正しい言語でテキストを話すことを望んでいます。これは、次の方法を使用することでほとんどの場合正常に機能します。
- (void)setVoLanguage:(NSObject*)object
{
if (prefLanguage == 0){
[object setAccessibilityLanguage:@"de-DE"];
} else {
[object setAccessibilityLanguage:@"fr-FR"];
}
}
次のいずれかの方法を使用して、VoiceOverにナビゲーションコントローラーのテキストを正しい言語で話させようとしています。
[self setVoLanguage:navController];
[self setVoLanguage:navController.title];
[self setVoLanguage:navController.navigationBar.topItem];
[self setVoLanguage:navController.navigationBar.backItem];
[self setVoLanguage:navController.navigationBar.topItem.title];
[self setVoLanguage:navController.navigationBar.backItem.title];
[self setVoLanguage:navController.navigationBar.topItem.titleView];
[self setVoLanguage:navController.navigationBar.backItem.titleView];
しかし、その結果、ナビゲーションバーのドイツ語またはフランス語のテキストは常に英語の音声を使用して話されます。
ナビゲーションバーでVoiceOver言語を切り替える方法を知っている人はいますか?
ありがとうございました。
更新:iOS5.1.1を使用して動作する回避策は次のとおりです。
- (NSString *)accessibilityLanguage {
cnlAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
if (appDelegate != nil) {
if ([appDelegate prefLanguage] == 0) {
return @"de-DE";
} else {
return @"fr-FR";
}
}
return @""; // this line should never be reached
}
私のappDelegateオブジェクトは、現在の言語を格納するオブジェクトです。すべてのオブジェクトのaccessibilityLanguageを上書きすると、問題が解決するようです。
これが誰かに役立つことを願っています。