語言偵測,最近要用到,但是因為不是一個很重要的功能,但是花了我一些時間
而且我不覺得是非常完美的解決方案,但是研究都研究了而且堪用,就記錄一下吧
主要是因為,專案需要判斷對方是用啥語言,在西方的文字都用空白隔開,然後拉丁語系,在西班牙跟法文中在 UTF中的範圍是一樣的
這就很難搞,所以如果可以花錢當然你可以使用,Azure 的服務 ,但是畢竟身為小資一族,所以我就問了一下 CHATGPT
幾乎都是推薦 CLD2 這專案,但是我怎麼跑都會有問題( Unhandled exception. System.DllNotFoundException: Unable to load DLL 'Interop.CLD2' or one of its dependencies: 找不到指定的模組。 (0x8007007E) ),最後我放棄了所以改用兩個 library 來解決
1. 來自於 https://idsyst.hu/development/language_detector.html
一個很簡單的網址 ,打開原始碼後裡面可以下載到 LanguageDetector.cs , LanguageStatistics.cs ,其中也標明了
其來源他是改寫 https://github.com/richtr/guessLanguage.js 這專案變成 C# 的版本,但是這程式碼有個小缺點他英文的部分會取不出來
2. 使用 LanguageDetection ,這是
nuget 上面的套件,但是他有一個缺點 他對於 日文跟中文的判斷會有誤 他都會判斷成 zho 這就有點麻煩了
最後,直接兩個直接混合使用
Result:
Hello, World!
你好世界=>zh!
你好世界=>zh!
Hello World=>eng
Bonjour le monde=>fra
こんにちは世界=>ja!
สวัสดีชาวโลก=>tha
안녕하세요 세상=>kor
暫時先這樣吧,後面是驚嘆號的,就是使用 第一個的套件,基本上英文的判斷就是用 nuget 上面的那個比較準 LanguageDetection
reference:
https://idsyst.hu/development/language_detector.html
https://github.com/richtr/guessLanguage.js
https://github.com/donma/LanguageDetector/