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

React-Native Talkback reads component accessibilityRole in wrong language

我有一个 React-Native 应用程序,我们希望在其中支持芬兰语和英语的 Talkback。在芬兰语中使用 Google 的 Text to Speech 模块时,其他一切正常,除了“button”被读作“button”而不是芬兰语中的“Painike”。在 iOS 上它也能正常工作。我正在测试三星 A40。 Samsung Text to Speech 完全不支持芬兰语。

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

在 Discord、Facebook、Instagram 等应用中,按钮被正确读作“Painike”而不是“按钮”。

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

示例按钮定义:

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

本机反应:0.63.2

这里是一个 repo,该 bug 的复制最少:https://github.com/Waltari10/accessibilityRoleRN

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

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

另一种解决方案是使用 AccessibilityInfo.announceForAccessibility() 并为所有可触摸/可按下组件编写一个辅助实用程序。所以,不是阅读 role+label+hint,而是用正确的翻译明确触发公告?

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

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

重建应用程序后,它将读取您需要的内容。

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

您可以为您想要支持的每种语言创建 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