- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个双语(英语 + 西类牙语)android 应用程序。我正在我的应用程序中实现可访问性,我希望 Talkback 以西类牙语阅读西类牙语单词,以英语阅读英语单词。英语和西类牙语单词将位于单独的 TextView 中。我的应用程序语言环境是英语,因此 Talkback + google 文本到语音引擎不会用西类牙语读取西类牙语单词,而是用英语读取它们,并且更经常地读出它们的字母(预期行为)。
是否有任何解决方法或 android 推荐的解决方案来实现相同的目的。
最终,我希望 Talkback 或自定义无障碍服务能够用英语读出英语单词,用西类牙语读出西类牙语单词。
最佳答案
免责声明:您必须格外小心使用此解决方案!覆盖 TalkBack 的 TTS 行为非常非常粗略。从可访问性的角度来看,有许多边缘情况可能会使这种行为变得笨拙、笨拙且非常糟糕。只有当公告的样式是特定于应用程序和所需功能的行为时,才应使用此解决方案。否则,此解决方案会破坏有关与用户代理兼容性的各种 WCAG 2.0 成功标准,并且从可访问性/可用性的角度来看通常是一个糟糕的想法!
在很多情况下,当我看到这样的问题时,我会犹豫是否提供答案,以免给开发人员提供他们不理解的工具。请不要在典型的应用程序中这样做,这是一个糟糕的主意。话虽如此,我相信这种特殊情况需要它,并且在这种情况下这是一个非常干净的解决方案。在创建 Activity 时执行以下操作:
findViewById(android.R.id.content).setAccessibilityDelegate(new View.AccessibilityDelegate() {
private TextToSpeech mTts = new TextToSpeech(MainActivity.this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
mTts.setLanguage(new Locale("es"));
//Probably other things you should do to ensure TTS is initialized before requesting it speaks something.
}
});
private boolean isSpanishView(View view) {
return true;
}
@Override
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, AccessibilityEvent event) {
switch (event.getEventType()) {
case AccessibilityEvent.TYPE_ANNOUNCEMENT:
case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: {
if (isSpanishView(child)) {
String speakableText = null;
if (event.getText() != null) {
speakableText = event.getText().toString();
} else if (event.getContentDescription() != null) {
speakableText = event.getContentDescription().toString();
}
if (speakableText != null) {
mTts.speak(speakableText.toString(), TextToSpeech.QUEUE_ADD, null);
//Prevent the default propagation of this event, have have handled it.
return false;
}
}
}
default:
return super.onRequestSendAccessibilityEvent(host, child, event);
}
}
});
基本上我们在这里所说的是将可访问性委托(delegate)附加到我们 Activity 的 Root View 。查看所有弹出的辅助功能事件。检查它是否是宣布某事的事件。如果是,请检查它是否是包含西类牙语文本的 View 。如果是,请允许我们的西类牙语 TTS 引擎宣布它,而不是让通风口传播。在所有其他情况下让 android 做它的事情。
关于Android Talkback 公告本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44426853/
翻译 silverlight 5 应用程序 (Prism + MEF) 的可用选项是什么? 如果可能的话,我想: 没有 resx 文件(我不喜欢它们的管理方式) 而是提取并翻译 xaml 字符串(我认
我可以同时使用这两种方法来本地化 $| 还是我应该使用其中一种来支持另一种? 方法一:备份“_init_scr”中$|的旧值,并在调用“_end_win”时将$|设置回旧值。方式 2:调用 local
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: C# localization , really confusing me 有人可以分享他们对大型 C# 应
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我正在使用 Phoenix 框架开发多语言应用程序 到目前为止,路由器看起来像这样: scope "/:locale", App do pipe_through [:browser, :bro
我想为我的域对象添加本地化支持。我有以下几点: class Person { int Id; City city; } class City { int Id; str
我需要 BlackBerry 本地化方面的帮助。我在 http://na.blackberry.com/eng/developers/resources/developer_labs.jsp#tab_
我正在尝试通过关注 documentation 来本地化我的 Flutter 应用程序. 我想要实现的是,在动态构建小部件的同时,我想转换来自我的模型的数据。这是我迄今为止尝试过的 List.gene
如何更改 EKEventEditViewController 中的默认语言,即使我手动设置 AppleLanguages 对象,它也始终是英语 最佳答案 我通过向我的应用程序 plist 添加一个 L
我在 iphone 日期选择器中遇到本地化问题。我希望日期选择器仅以英语显示日期,但现在它需要在 iphone 设置中设置为区域的语言。我尝试了各种没有用的方法像下面这样。 在 uidatepicke
我的应用仅支持荷兰语和法语。英语不是此应用程序的可用语言。如果我想使用可本地化的字符串,则默认值始终设置为英语。我希望这是荷兰语。所以我所做的就是使用英语可本地化字符串文件并用荷兰语单词填充它。我遇到
我即将本地化 iPhone 应用程序。当用户的语言(iOS 系统语言)是德语时,我想使用不同的 URL。 我想知道这是否是正确的方法: NSURL *url = [NSURL URLWithStrin
我正在将我的 iPhone 应用程序本地化为多种语言,除了更改一些字符串之外,我还需要更改一些背景。是否可以查询iPhone并获取用户的语言代码? 谢谢! 最佳答案 看一下 NSLocale: NSS
在本地化的 Iphone(语言设置为希伯来语)上,当我们使用 Safari 查看网页并点击输入字段时,我们会在键盘上显示希伯来语的“下一个/上一个/完成”按钮。 当我们使用应用程序中嵌入的 UIWeb
是否有更好的方法来存储大量文本以在 laravel 中进行本地化?如果我的整个页面只是纯文本,那会很容易,但是我的几个页面具有复杂的布局,我需要添加多个字符串来将文本包裹在图像/链接/媒体等内容周围。
我正在尝试将我的应用程序本地化。我为支持的语言创建了所需的 string.arb 文件。 为什么AppLocalizations.of(context)需要上下文? 我只是想访问文件/语言环境文件/类
绑定(bind)到 double可能会产生以下验证错误 Value ... could not be converted. 使用 ExceptionValidationRule 时错误更健谈: Inp
我有一些 Delphi 经验,并且正在尝试使用 Lazarus 构建一个项目,这对我来说是全新的。 我想,我已经阅读了有关 Lazarus、翻译/国际化/本地化的所有可用信息,但我无法找到我真正想要的
我一直在尝试更新网站的语言。 Controller public function getUpdateLanguage(Request $request) { $request_dat
我正在为我们正在启动的一个项目寻找框架和 CMS,该项目是一个需要支持本地化内容的网站。 Laravel 看起来不错,并且当然允许您本地化 UI 内容,但它似乎本身并不支持存储在数据库中的内容的本地化
我是一名优秀的程序员,十分优秀!