Skip to content

Instantly share code, notes, and snippets.

@EFLFE
Created August 22, 2014 15:11
Show Gist options
  • Save EFLFE/1493f1c9c7422790cf0c to your computer and use it in GitHub Desktop.
Save EFLFE/1493f1c9c7422790cf0c to your computer and use it in GitHub Desktop.
Yandex Translate API 1.5 xml
using System;
using System.IO;
using System.Net;
using System.Xml;
namespace TryYandexTranslateAPI
{
// Перевод текста с помощью Yandex переводчика.
// http://api.yandex.ru/translate/doc/dg/concepts/api-overview.xml
// Код взят из сайта http://jobtools.ru/2014/05/yandex-translate-api-1-5-v-c/
// и был дополнен под xml формат.
public static class YandexTranslateAPI
{
private const string APIKey = "ВАШ Yandex API КЛЮЧ!";
/// <summary> Определение языка </summary>
/// <param name="text"></param>
/// <returns>Язык строки</returns>
public static string Detect(string text)
{
WebRequest request = WebRequest.Create("https://translate.yandex.net/api/v1.5/tr/detect?key=" + APIKey + "&text=" + text);
WebResponse response = request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
var fetchedXml = sr.ReadToEnd();
XmlDocument d = new XmlDocument();
d.LoadXml(fetchedXml);
XmlNodeList langNodes = d.GetElementsByTagName("DetectedLang");
XmlNode node = langNodes.Item(0);
return node.Attributes[1].Value;
}
}
/// <summary> Получить перечень доступных направлений для перевода </summary>
/// <param name="ui">Если задан, ответ будет дополнен расшифровкой кодов языков.
/// Названия языков будут выведены на языке, код которого соответствует этому параметру.</param>
public static void GetLangs(string ui)
{
WebRequest request = WebRequest.Create("https://translate.yandex.net/api/v1.5/tr/getLangs?key=" + APIKey + "&ui=" + ui);
WebResponse response = request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
var fetchedXml = sr.ReadToEnd();
XmlDocument d = new XmlDocument();
d.LoadXml(fetchedXml);
XmlNodeList trDirectionNodes = d.GetElementsByTagName("string");
int i = 1;
foreach (XmlNode trDirectionNode in trDirectionNodes)
Console.WriteLine((i++) + ": {0}", trDirectionNode.InnerText);
}
}
/// <summary> Перевести текст </summary>
/// <param name="lang">Язык на какой перевести (ru-en или en-ru).</param>
/// <param name="text">Текст для перевода</param>
/// <returns>Возвращает NodeList переведенного текста</returns>
public static string Translate(string lang, string text)
{
WebRequest request = WebRequest.Create(
"https://translate.yandex.net/api/v1.5/tr/translate?key=" + APIKey + "&text=" + text + "&lang=" + lang);
WebResponse response = request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
var fetchedXml = sr.ReadToEnd();
XmlDocument d = new XmlDocument();
d.LoadXml(fetchedXml);
XmlNodeList textNodes = d.GetElementsByTagName("text");
return textNodes[0].InnerText;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment