How to detect text (string) language in iOS?

后端 未结 3 1633
無奈伤痛
無奈伤痛 2020-12-15 07:40

For instance, given the following strings:

let textEN = \"The quick brown fox jumps over the lazy dog\"
let textES = \"El zorro marrón rápido salta sobre el          


        
3条回答
  •  天涯浪人
    2020-12-15 08:07

    You can use NSLinguisticTagger's tagAt method. It support iOS 5 and later.

    func detectLanguage(for text: T) -> String? {
        let tagger = NSLinguisticTagger.init(tagSchemes: [.language], options: 0)
        tagger.string = String(text)
    
        guard let languageCode = tagger.tag(at: 0, scheme: .language, tokenRange: nil, sentenceRange: nil) else { return nil }
        return Locale.current.localizedString(forIdentifier: languageCode)
    }
    
    detectLanguage(for: "The quick brown fox jumps over the lazy dog")              // English
    detectLanguage(for: "El zorro marrón rápido salta sobre el perro perezoso")     // Spanish
    detectLanguage(for: "الثعلب البني السريع يقفز فوق الكلب الكسول")                // Arabic
    detectLanguage(for: "Der schnelle braune Fuchs springt über den faulen Hund")   // German
    

提交回复
热议问题