在iOS 10.0或更高版本上本地化Emoji阅读 [英] Localizing the Reading of Emoji on IOS 10.0 or Higher

查看:46
本文介绍了在iOS 10.0或更高版本上本地化Emoji阅读的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我注意到一个问题,在iOS 10.0或更高版本上,iOS似乎无法本地化(由AVSpeechSynthesizer)读取表情符号,但它似乎在iOS 9.3或更低版本上正确地执行了这一操作。

如果你通过向设置为英语的AVSpeechSynthesizer发送字符串"😀"来告诉它说一个表情符号,它会说"正常眼睛咧嘴笑"。

当你将Synth的语音语言改为英语以外的任何语言时,比如法语,并发送相同的表情符号时,它应该会说"Visage Souriant avec des yeux normaux",这在iOS 9.3或更低版本上是这样做的,但在iOS 10.0及更高版本上,它只会用法国口音朗读英文文本("用正常的眼睛咧嘴笑")。

我在下面想出了一个"游乐场",展示了我是如何得出这个结论的……尽管我希望我错过了什么或者做错了什么。

若要重现此问题,请在XCode中创建新项目,并将一个按钮附加到SpeakNext()函数。

在运行iOS 9.3或更低版本的模拟器上运行,然后在iOS 10.0或更高版本上执行相同的操作。

你能解释一下zat吗?

import UIKit
import AVKit

class ViewController: UIViewController {

    var counter = 0

    let langArray = ["en","fr","de","ru","zh-Hans"]

    let synth = AVSpeechSynthesizer()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func speakNext(_ sender: Any) {
        print("testing (langArray[counter])")
        let utterance = AVSpeechUtterance(string: "😀")
        utterance.voice = AVSpeechSynthesisVoice(language: langArray[counter])
        counter += 1
        if (counter > 4) { counter = 0 }
        synth.speak(utterance)
    }

}

推荐答案

更新:iOS13.2中的问题似乎已修复!耶!

更新:iOS 13正式发布后,这个问题已经被一个更糟糕的问题(iOS 13 Text To Speech (TTS - AVSpeechSynthesisVoice) crashes for some users after update)所掩盖/取代。

//原文:

通过反馈助手通知苹果后,这似乎是iOS 10中以某种方式引入的一个错误,在连续三个版本的iOS中都没有被注意到。

在测试iOS 13 beta 5(17A5547d)后,未出现此问题。

他们声称从此问题已明确解决。

这篇关于在iOS 10.0或更高版本上本地化Emoji阅读的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆