3

Google 翻訳を使用して翻訳しようとしていますが、Server Unavailable というエラーが表示されます。私の推測では、アドレスバーに同じものを入力しようとすると、入力するキャプチャが表示されます。キャプチャを通過すると、txtファイルがダウンロードされるだけです。これは、サーバーが利用できないという問題ではなく、キャプチャ ページの問題である可能性があると考えています。

呼び出し機能。

string result = TranslateGoogle("Life is great and one is spoiled when it goes on and on and on", "en", "hi");
Console.WriteLine(result);

TranslateGoogle 関数

public string TranslateGoogle(string text, string fromCulture, string toCulture)
{
    fromCulture = fromCulture.ToLower();
    toCulture = toCulture.ToLower();
    string[] tokens = fromCulture.Split('-');
    if(tokens.Length > 1)
        fromCulture = tokens[0];

    tokens = toCulture.Split('-');
    if(tokens.Length > 1)
        toCulture = tokens[0];

    string url = string.Format(@"http://translate.google.com/translate_a/t?client=j&text={0}&hl=en&sl={1}&tl={2}", System.Uri.EscapeDataString(text), fromCulture, toCulture);

    string html = null;
    try
    {
        WebClient web = new WebClient();

        web.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0");
        web.Headers.Add(HttpRequestHeader.AcceptCharset, "UTF-8");

        web.Encoding = Encoding.UTF8;
        html = web.DownloadString(url);
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
        return null;
    }

    string result = Regex.Match(html, "trans\":(\".*?\"),\"", RegexOptions.IgnoreCase).Groups[1].Value;
    return result;
}

期待される出力

{
    "sentences":
    [
        {
            "trans":"जीवन महान है और इस पर और पर और पर चला जाता है जब एक खराब है",
            "orig":"Life is great and one is spoiled when it goes on and on and on",
            "translit":"Jīvana mahāna hai aura isa para aura para aura para calā jātā hai jaba ēka kharāba hai",
            "src_translit":"",
            "backend":0
        }
    ],
    "src":"en",
    "server_time":85
}

これは私が得ているものです。

「リモート サーバーがエラーを返しました: (503) サーバーを利用できません。」

プログラムの期待される出力を得るにはどうすればよいですか。

4

2 に答える 2

1

Google TTS も使用しようとしていますが、もう機能しません。Google 翻訳 v2 は TTS をサポートしなくなりました (こちらを参照)

C# を使用しているため、System.Speech.Synthesis で speechsynthesis をより適切に使用できます。

 public static void TextToSpeech (string utterance)
    {
        SpeechSynthesizer speaker = new SpeechSynthesizer();
        speaker.Speak(utterance);
        return;
    }

これがあなたの質問に少し答えることを願っています。キャプチャの回避策はまだありません。

于 2015-10-09T09:18:31.960 に答える