微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React-Native Talkback 以错误的语言读取组件 accessibilityRole

如何解决React-Native Talkback 以错误的语言读取组件 accessibilityRole

我有一个 React-Native 应用程序,我们希望在其中支持芬兰语和英语的 Talkback。在芬兰语中使用谷歌的文本到语音模块时,其他一切正常,除了“按钮”被读作“按钮”而不是芬兰语等效的“Painike”。在 iOS 上它也可以正常工作。我正在三星 A40 上进行测试。三星 Text to Speech 根本不支持芬兰语。

例如,当我按下显示“Paina minua”的按钮时,它会显示“按钮,paina minua”,而不是“painike,paina minua”。这仅发生在我正在开发的应用程序中。它还将 Image 组件读取为 Images 而不是芬兰语。可能还有其他组件。

discord、Facebook、Instagram 等应用中,按钮被正确解读为“Painike”而不是“button”。

我该怎么做才能使 Talkback 在我们的应用程序中正常工作?

示例按钮定义:

<TouchableOpacity
  onPress={onPress}
  accessibilityRole="button"
>
  <Text>Paina minua</Text>
</TouchableOpacity>

反应原生:0.63.2

这是一个错误进行最少重现的存储库:https://github.com/Waltari10/accessibilityRoleRN

解决方法

尝试将以下代码添加到您的 android/app/src/main/res/values/strings.xml

<string name="button_description" translatable="false">Painike</string>

一旦你重新构建你的应用,它就会读取你需要的内容。

如果您需要为不同的语言设置不同的文件夹,请按如下方式创建文件夹结构:

folder structure

您可以为要支持的每种语言创建 values-xx 文件夹,只需查看此处:https://developer.android.com/guide/topics/resources/localization

您可能想要覆盖的所有可用值的列表在此文件中可用:https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/res/views/uimanager/values/strings_unlocalized.xml

,

至少在使用模拟器进行测试时我遇到了同样的问题。

一种选择是使 accessibilityHint 足够冗长以“覆盖”仅在芬兰语中读出的 accessibilityRole 概念。

另一个,虽然一个hacky 的解决方案是使用 AccessibilityInfo.announceForAccessibility() 代替,并为所有可触摸/可按压组件编写一个辅助实用程序。因此,您不是阅读角色+标签+提示,而是使用正确的翻译明确触发公告?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。