2023-10-23

[C#] Language Detector - 免費語言偵測方案分享,使用兩個套件混搭

語言偵測,最近要用到,但是因為不是一個很重要的功能,但是花了我一些時間

而且我不覺得是非常完美的解決方案,但是研究都研究了而且堪用,就記錄一下吧

主要是因為,專案需要判斷對方是用啥語言,在西方的文字都用空白隔開,然後拉丁語系,在西班牙跟法文中在 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/