Physics-Station 2

旧 http://physics-station.blogspot.jp/ から当はてなブログに移行しました。間違ってるところがあればコメントください。記述の正確性は保証しません。

C#でMicrosoft Translator Text APIを使う、2017年1月1日以降も有効な方法

日本語のドキュメントを見つけたぜ、と思ったのだが、罠にかかった。

qiita.com

コメントにも書いたが、この方法は2017年1月1日以降は有効ではない。コメント欄でも紹介されていたが、

Getting Started with Microsoft Translator

に書かれているとおりに進めば良いだろう。

トークンを取得するのに使うのは次の画像のKEY 1というものだ。とにかく、この画面が見れたら勝利は目前だ。ちなみに、KEY 2をつかってもトークンは取得できる。

f:id:onsanai:20170108192503p:plain:w400

トークンを取得する方法はここに書いている。

github.com

翻訳をするためのコアのコードは他の読み物が沢山あるためここでは詳細に書かない。だが、自分のメモのために一応コードを書いておく。追加すべきusingや参照は何も書いていないので注意が必要である。

private string TranslateMethod(string authToken, string translating)
{
    string translated = string.Empty;
    string from = "ja";
    string to = "en";
    string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + 
        System.Web.HttpUtility.UrlEncode(translating) + "&from=" + from + "&to=" + to;

    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
    httpWebRequest.Headers.Add("Authorization", authToken);
    WebResponse response = null;
    try
    {
        response = httpWebRequest.GetResponse();
        using (Stream stream = response.GetResponseStream())
        {
            DataContractSerializer dcs = new DataContractSerializer(Type.GetType("System.String"));
            translated = (string)dcs.ReadObject(stream);
        }
    }
    finally
    {
        if (response != null)
        {
            response.Close();
            response = null;
        }
    }
    return translated;
}

以上だ。