使用UITextChecker对Swift 5中的希伯来文文本进行拼写检查

使用UITextChecker对Swift 5中的希伯来文文本进行拼写检查,swift,localization,spell-checking,hebrew,spelling,Swift,Localization,Spell Checking,Hebrew,Spelling,对于任何希伯来文文本,无论文本是否包含任何真实单词,我都会返回真值: func wordIsSpelledCorrect(word: String) -> Bool { let checker = UITextChecker() let range = NSRange(location: 0, length: word.count) let wordRange = checker.rangeOfMisspelledWord(in: word, range: range, sta

对于任何希伯来文文本,无论文本是否包含任何真实单词,我都会返回真值:

func wordIsSpelledCorrect(word: String) -> Bool {
  let checker = UITextChecker()
  let range = NSRange(location: 0, length: word.count)
  let wordRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "he")

  return wordRange.location == NSNotFound
}
// wordIsSpelledCorrect("שלום") // which is Hebrew for "peace" returns true
// but
// wordIsSpelledCorrect("םולש") // which is not a real word, also returns true
我在我的设备上安装了希伯来语词典,我在设置>语言和地区中将希伯来语设置为“iPhone语言”和不设置希伯来语。有人知道UITextChecker是否不支持希伯来语吗?如果是这样,那么对于不受支持的语言,是否总是返回true作为预期行为

我的英语很好。如果UITextChecker是希伯来语的半身像,我有没有其他方法可以解决这个问题?无论如何,我更喜欢另一种解决方案,因为我的应用程序是通用的,而且UIKit在macOS上不起作用

[更新1]

我花了一些时间调查访问macOS语言词典的情况,结果一无所获。我看不出这是一个移动的唯一需要。例如,这不是苹果在页面和他们自己的字典应用程序中实现的吗?我想我的下一步将是开始研究多语言词典API,但调用我知道就在系统上的东西似乎效率很低。任何想法或方向都将不胜感激

[更新2]

根据我正在寻找的API不存在,因此我将不得不暂停我的通用应用程序。但是回到上面的代码,除了希伯来语,它在我尝试过的所有语言中都能很好地工作,有人能帮我让希伯来语在iOS上工作吗

[更新3]

为完整起见,以下代码适用于英语、法语、西班牙语等语言:

func wordIsSpelledCorrect(word: String) -> Bool {
    if let language = NLLanguageRecognizer.dominantLanguage(for: word) {
        let checker = UITextChecker()
        let range = NSRange(location: 0, length: word.count)
        let wordRange = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: language.rawValue)
        return wordRange.location == NSNotFound
    } else {
        return false
    }
}

检查语言是否在
UITextChecker.availableLanguages
中。否则,
UITextChecker
将找不到拼写错误。

检查
UITextChecker中是否存在希伯来语。availableLanguages
Hi@paiv,我发现希伯来语未列在availableLanguages中,因此它不受支持。如果你想在回答中陈述尽可能多的内容,我想这是我最接近的答案了get@paiv,如果你的回答是可用语言可以用来查看支持哪些语言,我将奖励你,谢谢,@paiv。