" Комментарии к документации XML (Руководство по программированию на C #) В Visual C # вы можете создать документацию для своего кода, включив теги XML в специальные поля комментариев в исходном коде непосредственно перед блоком кода, на который они ссылаются. "
http://msdn.microsoft.com/en-us/library /b2s063f7.aspx
затем вы можете использовать Sandcastle для генерации файлов chm, если хотите
-121 --- 14129 ] Если у контекста вашего кода есть доступ в Интернет, вы можете попробовать использовать Google API для определения языка. http://code.google.com/apis/ajaxlanguage/documentation/var text = "¿Dónde está el baño?";
google.language.detect(text, function(result) {
if (!result.error) {
var language = 'unknown';
for (l in google.language.Languages) {
if (google.language.Languages[l] == result.language) {
language = l;
break;
}
}
var container = document.getElementById("detection");
container.innerHTML = text + " is: " + language + "";
}
});
И, поскольку вы используете C #, ознакомьтесь с этой статьей о том, как вызывать API из C #. .
ОБНОВЛЕНИЕ: Эта ссылка на C # исчезла, вот кешированная копия ее ядра:
string s = TextBoxTranslateEnglishToHebrew.Text;
string key = "YOUR GOOGLE AJAX API KEY";
GoogleLangaugeDetector detector =
new GoogleLangaugeDetector(s, VERSION.ONE_POINT_ZERO, key);
GoogleTranslator gTranslator = new GoogleTranslator(s, VERSION.ONE_POINT_ZERO,
detector.LanguageDetected.Equals("iw") ? LANGUAGE.HEBREW : LANGUAGE.ENGLISH,
detector.LanguageDetected.Equals("iw") ? LANGUAGE.ENGLISH : LANGUAGE.HEBREW,
key);
TextBoxTranslation.Text = gTranslator.Translation;
По сути, вам нужно создать URI и отправить его в Google, который выглядит так:
Это сообщает API, что вы хотите перевести "hello world" с английского на иврит, на что ответ Google в формате JSON будет выглядеть как :
{"responseData": {"translatedText":"שלום העולם"}, "responseDetails": null, "responseStatus": 200}
Я решил создать базовый класс, представляющий типичный ответ Google JSON:
[Serializable]
public class JSONResponse
{
public string responseDetails = null;
public string responseStatus = null;
}
Затем объект перевода, который наследуется от этого класса:
[Serializable]
public class Translation: JSONResponse
{
public TranslationResponseData responseData =
new TranslationResponseData();
}
Этот класс перевода имеет объект TranslationResponseData, который выглядит следующим образом:
[Serializable]
public class TranslationResponseData
{
public string translatedText;
}
Наконец, мы можем сделать класс GoogleTranslator:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Net;
using System.IO;
using System.Runtime.Serialization.Json;
namespace GoogleTranslationAPI
{
public class GoogleTranslator
{
private string _q = "";
private string _v = "";
private string _key = "";
private string _langPair = "";
private string _requestUrl = "";
private string _translation = "";
public GoogleTranslator(string queryTerm, VERSION version, LANGUAGE languageFrom,
LANGUAGE languageTo, string key)
{
_q = HttpUtility.UrlPathEncode(queryTerm);
_v = HttpUtility.UrlEncode(EnumStringUtil.GetStringValue(version));
_langPair =
HttpUtility.UrlEncode(EnumStringUtil.GetStringValue(languageFrom) +
"|" + EnumStringUtil.GetStringValue(languageTo));
_key = HttpUtility.UrlEncode(key);
string encodedRequestUrlFragment =
string.Format("?v={0}&q={1}&langpair={2}&key={3}",
_v, _q, _langPair, _key);
_requestUrl = EnumStringUtil.GetStringValue(BASEURL.TRANSLATE) + encodedRequestUrlFragment;
GetTranslation();
}
public string Translation
{
get { return _translation; }
private set { _translation = value; }
}
private void GetTranslation()
{
try
{
WebRequest request = WebRequest.Create(_requestUrl);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string json = reader.ReadLine();
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
DataContractJsonSerializer ser =
new DataContractJsonSerializer(typeof(Translation));
Translation translation = ser.ReadObject(ms) as Translation;
_translation = translation.responseData.translatedText;
}
}
catch (Exception) { }
}
}
}
Если вы имеете в виду естественный (то есть человеческий) язык, это вообще сложная проблема. Какой язык «сервер» - английский или турецкий? На каком языке идет чат - на английском или французском? Какой язык является «уно» - итальянский или испанский (или латинский!)?
Не обращая внимания на контекст и не прилагая усилий к обработке естественного языка (<----- это фраза для Google для) у вас нет шанса.
Возможно, вам понравится Frengly - это красивый интерфейс службы Google Translate, который пытается угадать язык вводимого текста ...
Статистический подход с использованием орграфов или триграфов - очень хороший индикатор. Например, вот наиболее распространенные диграфы на английском языке по порядку: http://www.letterfrequency.org/#digraph-frequency (можно найти лучшие или более полные списки). Этот метод может иметь более высокий процент успеха, чем анализ слов для коротких фрагментов текста, потому что в тексте больше диграфов, чем целых слов.
Проведите статистический анализ строки: разделите строку на слова. Получите словарь для каждого языка, который вы хотите проверить. Затем найдите язык с наибольшим количеством слов.
В C # каждая строка в памяти будет иметь кодировку Unicode и не кодируется. Также в текстовых файлах кодировка не сохраняется. (Иногда только указание на 8 или 16 бит.)
Если вы хотите провести различие между двумя языками, вы можете найти несколько простых приемов. Например, если вы хотите отличить английский от голландского, строка, содержащая «y», будет в основном английской. (Ненадежно, но быстро).