在 Swift 5 中使用 UITextChecker 对希伯来文文本进行拼写检查
Posted
技术标签:
【中文标题】在 Swift 5 中使用 UITextChecker 对希伯来文文本进行拼写检查【英文标题】:Spellchecking with UITextChecker for hebrew text in Swift 5 【发布时间】:2021-06-03 20:31:09 【问题描述】:无论文本是否包含任何真实单词,我都会为任何希伯来文本返回 true:
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 的语言词典,但什么也没找到。我不明白这是一个仅限移动设备的需求。例如,这不是Apple在Pages和他们自己的Dictionary App中实现的吗?我想我的下一步将是开始研究多语言字典 API,但是调用我知道就在系统上的东西似乎真的很低效。任何想法或方向将不胜感激。
[更新 2]
根据the answers here,我正在寻找的 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
中是否存在希伯来语
嗨@paiv,我看到希伯来语没有列在availableLanguages 中,所以它不受支持。如果您想在答案中陈述尽可能多的内容,我想这与我将得到的一样接近
@paiv,如果您发布的答案说 availableLanguages 可用于查看支持的语言,我会奖励您。
【参考方案1】:
检查语言是否在UITextChecker.availableLanguages
中。否则UITextChecker
不会发现拼写错误。
【讨论】:
谢谢你,@paiv。以上是关于在 Swift 5 中使用 UITextChecker 对希伯来文文本进行拼写检查的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 在 Swift 5 中使用 Alamofire 接收图像上传
如何使用 Swift 5 在 Xcode 10.2.1 中添加 alamofire
Swift新手教程系列5-函数+selector在swift中的使用方法