2011-07-17 66 views
3

說我在Chrome中打開一個網站,它是用俄語編寫的。 Chrome告訴我這是俄文,並提供翻譯給我。如何使用C#查找網頁的語言?這是愛找出實際的語言,如英語,西班牙語,俄羅斯等。如何找出C#中網頁的語言(不是編程!)

+1

也許這可以指向你在一個適當的方向:http://stackoverflow.com/questions/1464362/detect-language-of-text – Bart

回答

4

你可以嘗試解析頁面頭部的<meta http-equiv="language" content="ru" /><meta http-equiv="content-language" content="ru" />標籤。

通常這些標籤在每個頁面上都不可用。

我認爲如果缺少這些標籤Google會在內部數據庫中進行一種「單詞查找」以嘗試確定頁面最可能的語言。

編輯

您也可以使用SOAP API of Bing檢測語言。

從他們的網站的一個例子:

var client = new TranslatorService.LanguageServiceClient(); 
var result = client.Detect(
    "myAppId", 
    "I have no idea what this language may be"); 

Console.WriteLine("The detected language friendly code is: " + result); 

只需提取你想從檢測並把它傳遞給SOAP功能HTML網頁一些文本(例如用HTML Agility Pack)。

+1

'語言'從來沒有官方,在任何情況下,都應該與HTML或其他元素上的'lang'屬性。 – Joey

+0

@Joey,語言不是官方的,但Content-Language是RFC 2616.但是,由於lang和xml:lang屬性可以識別文檔中語言的變化,我同意他們應該受到青睞。當然,他們依賴於作者將它們放在那裏 - 谷歌和Bing有一個巨大的來源,他們可以做比較來處理這些信息丟失甚至不正確的優勢。 –

+0

請注意,Content-Language在HTML 5中也已被棄用。 – Joey

0

使用Google's api,將一些(或全部?)文本從頁面發送到API以檢測語言。

對於.NET庫,請參閱答案this question

+0

我讀到谷歌將在2011年年底終止API。 –

+1

@Uwe Keim:是的,那是因爲像我這樣的人廣泛使用API​​。正如Google所說,由於「由於廣泛濫用造成巨大的經濟負擔」,他們正在關閉它。無論如何,對於仍在尋找「免費」翻譯的人來說,他們建議使用以下內容:http://www.google.com/webelements/#!/translate哪些課程沒有任何直接檢測語言的方法。它不是一個API –