繁体   English   中英

iOS应用中VoiceOver在什么情况下会自动切换语言

[英]Under what conditions does VoiceOver automatically switch language in an iOS app

我的手机设置为 en_us 作为系统语言,并且我在 VoiceOver 转子语言中添加了瑞典语和法语。

添加语言后,我发现在浏览包含语言设置的文档的网页时,VoiceOver/Safari 组合会自动以适当的语言启动。

在检查了我安装的各种非英语 AppStore 应用程序后,其中一个在我打开屏幕阅读器时会触发自动语言更改。

我在一个非常简单的 iOS 应用程序中尝试了语言和本地化设置,看看我是否可以触发这样的切换。 该应用程序包含一个带有 UILabel 的视图控制器,在故事板编辑器中创建。

我试图更改 Info.plist 中“本地化本地开发区域”的值。 瑞典语在图形编辑器的下拉菜单中不可用,因此我将其更改为“作为源代码打开”。 这只是将瑞典标签读作英文文本,也就是说,与什么都不做没有区别。

然后我尝试了ahbou编辑 project.pbxproj的解决方案,用“sv”替换对“en”的引用。 我重新部署并进行了此更改,但没有任何区别。

我尝试添加第二个非英语语言环境,以及选中和取消选中“使用基础本地化”选项,但这也没有什么区别。

随着所有的琐碎,它确实以瑞典语开始,但在将转子转回后,我再也无法触发更改。

我突然想到从 Xcode 部署和部署 IPA 之间可能存在差异,所以我尝试了这一点,但没有运气。

我尝试查看是否可以在不依赖故事板且本地化为英语和瑞典语的非最小应用程序中触发 VoiceOver 语言更改。 如果我在通过 Xcode 部署之前编辑架构,将“应用程序语言”设置为瑞典语,将“应用程序区域”设置为瑞典语会导致 VoiceOver 以瑞典语启动应用程序,但仅设置应用程序语言不会。

在查看我安装的触发瑞典语语音的 AppStore 应用程序时,看起来该应用程序可能是显示在 Web 视图中的 Web 内容。 即使是这种情况,它工作的事实表明应该有某种方法可以触发标准 iOS 应用程序中的自动切换。

感谢任何想法!

---- 编辑于 2019 年 2 月 6 日星期三 ----

我根据 Mats 的有用建议尝试了可访问性语言设置。 在 UIApplication 上设置语言确实会将它传播到应用程序中的所有元素。 我修改了应用程序委托如下:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        application.accessibilityLanguage = "sv"
        return true
    }

请注意,默认情况下 UIApplication 的isAccessibilityElement值为 false(与用户通常希望看到或与之交互的组件不同)。 没有必要将它更改为 true 以便应用语言设置,我不确定更改它的价值是什么,因为用户不直接与应用程序交互。 我确实尝试将其设置为 true,就 VoiceOver 而言,这似乎没有任何区别。

您可以通过检查 Info.plist 文件(XCode 的 GUI 编辑器只允许几种语言)来更改您的首选语言,一旦修改下一个属性

<key>CFBundleLocalizations</key>
<array>
    <string>sp</string>
</array>

使用您想要使用的区域设置代码,而不是sp (西班牙语代码)。 我这样做了,现在 VoiceOver 语言在应用程序中无处不在。

您可以使用任何辅助功能元素上的accessibilityLanguage属性更改 VoiceOver 语言。 它记录在UIAccessibility添加到NSObject

我认为它也会影响所有子元素,所以你应该只需要为你的应用程序窗口设置它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM