c#:翻訳をできるようにしたい

翻訳できるように、色々調べて搭載したが、どうしても503を返し時があるので試していたら、ようやく巡り会えた。

コーディングはこれ

Translator t = new Translator();
string html=t.Translate(”ゴニョゴニョ”, “Japanese”, “English”);
//スピーク
//t.TranslationTime.TotalMilliseconds + ” mSec”
//Translated speech = ” + t.TranslationSpeechUrl

無くならないように、覚書

感謝!!
http://www.codeproject.com/Articles/12711/Google-Translator
すっきり!した

スピークの対応もしてると着てるけど、どうもttは、グーグルv2で対応しなくなったと言うらしい。とりあえずいいか

必要な参照
using System.Linq;
using System.Threading;
クラスはこれ、

public class Translator
{
#region Properties

/// <summary>
/// Gets the supported languages.
/// </summary>
public static IEnumerable<string> Languages
{
get
{
Translator.EnsureInitialized();
return Translator._languageModeMap.Keys.OrderBy(p => p);
}
}

/// <summary>
/// Gets the time taken to perform the translation.
/// </summary>
public TimeSpan TranslationTime
{
get;
private set;
}

/// <summary>
/// Gets the url used to speak the translation.
/// </summary>
/// <value>The url used to speak the translation.</value>
public string TranslationSpeechUrl
{
get;
private set;
}

/// <summary>
/// Gets the error.
/// </summary>
public Exception Error
{
get;
private set;
}

#endregion

#region Public methods

/// <summary>
/// Translates the specified source text.
/// </summary>
/// <param name=”sourceText”>The source text.</param>
/// <param name=”sourceLanguage”>The source language.</param>
/// <param name=”targetLanguage”>The target language.</param>
/// <returns>The translation.</returns>
public string Translate
(string sourceText,
string sourceLanguage,
string targetLanguage)
{
// Initialize
this.Error = null;
this.TranslationSpeechUrl = null;
this.TranslationTime = TimeSpan.Zero;
DateTime tmStart = DateTime.Now;
string translation = string.Empty;

try
{
// Download translation
string url = string.Format(“https://translate.googleapis.com/translate_a/single?client=gtx&sl={0}&tl={1}&dt=t&q={2}”,
Translator.LanguageEnumToIdentifier(sourceLanguage),
Translator.LanguageEnumToIdentifier(targetLanguage),
HttpUtility.UrlEncode(sourceText));
string outputFile = Path.GetTempFileName();
using (WebClient wc = new WebClient())
{
wc.Headers.Add(“user-agent”, “Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36”);
wc.DownloadFile(url, outputFile);
}

// Get translated text
if (File.Exists(outputFile))
{

// Get phrase collection
string text = File.ReadAllText(outputFile);
int index = text.IndexOf(string.Format(“,,\”{0}\””, Translator.LanguageEnumToIdentifier(sourceLanguage)));
if (index == -1)
{
// Translation of single word
int startQuote = text.IndexOf(‘\”‘);
if (startQuote != -1)
{
int endQuote = text.IndexOf(‘\”‘, startQuote + 1);
if (endQuote != -1)
{
translation = text.Substring(startQuote + 1, endQuote – startQuote – 1);
}
}
}
else
{
// Translation of phrase
text = text.Substring(0, index);
text = text.Replace(“],[“, “,”);
text = text.Replace(“]”, string.Empty);
text = text.Replace(“[“, string.Empty);
text = text.Replace(“\”,\””, “\””);

// Get translated phrases
string[] phrases = text.Split(new[] { ‘\”‘ }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; (i < phrases.Count()); i += 2)
{
string translatedPhrase = phrases[i];
if (translatedPhrase.StartsWith(“,,”))
{
i–;
continue;
}
translation += translatedPhrase + ”  “;
}
}

// Fix up translation
translation = translation.Trim();
translation = translation.Replace(” ?”, “?”);
translation = translation.Replace(” !”, “!”);
translation = translation.Replace(” ,”, “,”);
translation = translation.Replace(” .”, “.”);
translation = translation.Replace(” ;”, “;”);

// And translation speech URL
this.TranslationSpeechUrl = string.Format(“https://translate.googleapis.com/translate_tts?ie=UTF-8&q={0}&tl={1}&total=1&idx=0&textlen={2}&client=gtx”,
HttpUtility.UrlEncode(translation), Translator.LanguageEnumToIdentifier(targetLanguage), translation.Length);
}
}
catch (Exception ex)
{
this.Error = ex;
}

// Return result
this.TranslationTime = DateTime.Now – tmStart;
return translation;
}

#endregion

#region Private methods

/// <summary>
/// Converts a language to its identifier.
/// </summary>
/// <param name=”language”>The language.”</param>
/// <returns>The identifier or <see cref=”string.Empty”/> if none.</returns>
private static string LanguageEnumToIdentifier
(string language)
{
string mode = string.Empty;
Translator.EnsureInitialized();
Translator._languageModeMap.TryGetValue(language, out mode);
return mode;
}

/// <summary>
/// Ensures the translator has been initialized.
/// </summary>
private static void EnsureInitialized()
{
if (Translator._languageModeMap == null)
{
Translator._languageModeMap = new Dictionary<string, string>();
Translator._languageModeMap.Add(“Afrikaans”, “af”);
Translator._languageModeMap.Add(“Albanian”, “sq”);
Translator._languageModeMap.Add(“Arabic”, “ar”);
Translator._languageModeMap.Add(“Armenian”, “hy”);
Translator._languageModeMap.Add(“Azerbaijani”, “az”);
Translator._languageModeMap.Add(“Basque”, “eu”);
Translator._languageModeMap.Add(“Belarusian”, “be”);
Translator._languageModeMap.Add(“Bengali”, “bn”);
Translator._languageModeMap.Add(“Bulgarian”, “bg”);
Translator._languageModeMap.Add(“Catalan”, “ca”);
Translator._languageModeMap.Add(“Chinese”, “zh-CN”);
Translator._languageModeMap.Add(“Croatian”, “hr”);
Translator._languageModeMap.Add(“Czech”, “cs”);
Translator._languageModeMap.Add(“Danish”, “da”);
Translator._languageModeMap.Add(“Dutch”, “nl”);
Translator._languageModeMap.Add(“English”, “en”);
Translator._languageModeMap.Add(“Esperanto”, “eo”);
Translator._languageModeMap.Add(“Estonian”, “et”);
Translator._languageModeMap.Add(“Filipino”, “tl”);
Translator._languageModeMap.Add(“Finnish”, “fi”);
Translator._languageModeMap.Add(“French”, “fr”);
Translator._languageModeMap.Add(“Galician”, “gl”);
Translator._languageModeMap.Add(“German”, “de”);
Translator._languageModeMap.Add(“Georgian”, “ka”);
Translator._languageModeMap.Add(“Greek”, “el”);
Translator._languageModeMap.Add(“Haitian Creole”, “ht”);
Translator._languageModeMap.Add(“Hebrew”, “iw”);
Translator._languageModeMap.Add(“Hindi”, “hi”);
Translator._languageModeMap.Add(“Hungarian”, “hu”);
Translator._languageModeMap.Add(“Icelandic”, “is”);
Translator._languageModeMap.Add(“Indonesian”, “id”);
Translator._languageModeMap.Add(“Irish”, “ga”);
Translator._languageModeMap.Add(“Italian”, “it”);
Translator._languageModeMap.Add(“Japanese”, “ja”);
Translator._languageModeMap.Add(“Korean”, “ko”);
Translator._languageModeMap.Add(“Lao”, “lo”);
Translator._languageModeMap.Add(“Latin”, “la”);
Translator._languageModeMap.Add(“Latvian”, “lv”);
Translator._languageModeMap.Add(“Lithuanian”, “lt”);
Translator._languageModeMap.Add(“Macedonian”, “mk”);
Translator._languageModeMap.Add(“Malay”, “ms”);
Translator._languageModeMap.Add(“Maltese”, “mt”);
Translator._languageModeMap.Add(“Norwegian”, “no”);
Translator._languageModeMap.Add(“Persian”, “fa”);
Translator._languageModeMap.Add(“Polish”, “pl”);
Translator._languageModeMap.Add(“Portuguese”, “pt”);
Translator._languageModeMap.Add(“Romanian”, “ro”);
Translator._languageModeMap.Add(“Russian”, “ru”);
Translator._languageModeMap.Add(“Serbian”, “sr”);
Translator._languageModeMap.Add(“Slovak”, “sk”);
Translator._languageModeMap.Add(“Slovenian”, “sl”);
Translator._languageModeMap.Add(“Spanish”, “es”);
Translator._languageModeMap.Add(“Swahili”, “sw”);
Translator._languageModeMap.Add(“Swedish”, “sv”);
Translator._languageModeMap.Add(“Tamil”, “ta”);
Translator._languageModeMap.Add(“Telugu”, “te”);
Translator._languageModeMap.Add(“Thai”, “th”);
Translator._languageModeMap.Add(“Turkish”, “tr”);
Translator._languageModeMap.Add(“Ukrainian”, “uk”);
Translator._languageModeMap.Add(“Urdu”, “ur”);
Translator._languageModeMap.Add(“Vietnamese”, “vi”);
Translator._languageModeMap.Add(“Welsh”, “cy”);
Translator._languageModeMap.Add(“Yiddish”, “yi”);
}
}

#endregion

#region Fields

/// <summary>
/// The language to translation mode map.
/// </summary>
private static Dictionary<string, string> _languageModeMap;

#endregion
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です