Готово
Код | using System; using System.Text; using System.Net; using System.Net.Json;
namespace Google { #region TranslateLanguages public enum TranslateLanguages { Russian, English, German, French, Italian, Ukrainian } #endregion
public static class GoogleTranslate { #region Const static readonly Encoding defEncoding = Encoding.UTF8;
static readonly string langRus = "ru"; static readonly string langEng = "en"; static readonly string langGerman = "de"; static readonly string langFrench = "fr"; static readonly string langItalian = "it"; static readonly string langUkrain = "uk";
static readonly string gApiJTranslationVarName = "translatedText"; #endregion #region Helpers static string GetLanguageString(TranslateLanguages Language) { switch (Language) { case TranslateLanguages.English: return langEng; case TranslateLanguages.Russian: return langRus; case TranslateLanguages.German: return langGerman; case TranslateLanguages.French: return langFrench; case TranslateLanguages.Italian: return langItalian; case TranslateLanguages.Ukrainian: return langUkrain; default: throw new ArgumentException("Language not supported"); } }
static string GetURL(string Txt, TranslateLanguages L1, TranslateLanguages L2) { var languagePair = string.Format( "{0}|{1}", GetLanguageString(L1), GetLanguageString(L2));
return String.Format("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q={0}&langpair={1}", Txt, languagePair); }
static JsonObject GetJsonObject(string JsonText) { return new JsonTextParser().Parse(JsonText); }
static void GetJsonValue(JsonObjectCollection JOCollection, string VarName, ref JsonObject JObject) { foreach (var e in JOCollection) { if (e.GetType() == typeof(JsonObjectCollection)) GetJsonValue(e as JsonObjectCollection, VarName, ref JObject); else if (e.Name.Equals(VarName)) JObject = e; } } #endregion #region Public /// <summary> /// Google Translate /// </summary> /// <param name="inText">Input text</param> /// <param name="inLang">Input text language</param> /// <param name="outLang">Output language</param> /// <returns>Translated text</returns> public static string Translate(string inText, TranslateLanguages inLang, TranslateLanguages outLang) { if ( string.IsNullOrEmpty(inText) || inLang == null || outLang == null || inLang.Equals(outLang) ) throw new ArgumentException("Invalid agruments");
var response = string.Empty;
using (var wc = new WebClient()) { wc.Encoding = defEncoding; // JSON: {"responseData": {"translatedText":"ciao a tutti"}, "responseDetails": null, "responseStatus": 200} response = wc.DownloadString(GetURL(inText, inLang, outLang)); }
var translationText = new object() as JsonObject;
GetJsonValue( GetJsonObject(response) as JsonObjectCollection, gApiJTranslationVarName, ref translationText);
return translationText.GetValue().ToString(); } #endregion } }
|
http://sourceforge.net/projects/csjson/ Спасибо diadiavova =) |