Visual Studio 2017からPythonで翻訳(Microsoft Translator Text API)

Microsoft Translator Text APIで翻訳するアプリをPythonで開発してみました。
※Microsoft Azureのアカウントが必要になります（携帯電話、クレジットカード要）

#環境
Windows 7 Professional SP1 64bit
Visual Studio 2017 Community 15.2 (26430.6)
Python 3.6.0
mstranslator 0.3.2

#Azureアカウント作成
Microsoft Azureのサイトからアカウントを作成します。アカウントの作成には携帯電話とクレジットカードが必要になります。
https://azure.microsoft.com/ja-jp

こちらの説明がわかりやすいです。
https://www.ipentec.com/document/document.aspx?page=microsoft-azure-sign-up

最初は無料で色々できますが、無料期間が終了して有料のサービスを残した状態で従量制のサブスクリプションに変更すると課金されるので注意してください。

無料期間が終了してもMicrosoft Translator Text APIを利用するだけなら月200万文字まで無料で利用できるようです。

#Microsoft Translator Text API アクセスキーを取得
Azure Portalにサインインします。
https://portal.azure.com/

サインインしたら左のメニューから新規を選択します。
![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/bb14d8aa-ed6d-86dc-ab12-a8cbc2e10285.png)

テキストボックスに「Translator Text API」と入力して検索します。
![bbb.png](https://qiita-image-store.s3.amazonaws.com/0/112075/7b8dd3a5-a051-1081-2884-96292ba45388.png)

「Translator Text API」が見つかったら選択します。
![ccc.png](https://qiita-image-store.s3.amazonaws.com/0/112075/3502a0d4-bff3-f35f-b47f-aee284e83e1e.png)

右にTranslator Text APIの説明が表示されるので作成を選択します。
![ddd.png](https://qiita-image-store.s3.amazonaws.com/0/112075/1c16c170-30b9-7ac8-0c35-7e14b4415a72.png)

Translator Text APIを作成します。名前やリソースグループは適当に入力して、価格は無料で利用するのでF0を選択しました。
![eee.png](https://qiita-image-store.s3.amazonaws.com/0/112075/c66ce40b-8d98-59f9-d038-8885d5de4a97.png)

Translator Text APIが作成されると概要が表示されるので「アクセスキーを表示...」を選択します。
![fff.png](https://qiita-image-store.s3.amazonaws.com/0/112075/4c856952-9329-502b-0673-efacb94449f5.png)

アクセスキーが表示されるのでメモしてください。今回は「キー1」だけ使います。
![ggg.png](https://qiita-image-store.s3.amazonaws.com/0/112075/f9462041-20c0-3a56-5661-1ae086712214.png)

#プロジェクト作成
新しいプロジェクトから「Python アプリケーション」を作成します。
![hhh.png](https://qiita-image-store.s3.amazonaws.com/0/112075/d7e85101-4c03-f55b-b63c-cec52c048123.png)

プロジェクトの仮想環境を作成します。
![iii.png](https://qiita-image-store.s3.amazonaws.com/0/112075/76152008-2571-a8ae-1265-82fd6077a5c4.png)

ダイアログが表示されるのでプロジェクトで使うPythonのバージョンを選択して仮想環境を作成します。
![jjj.png](https://qiita-image-store.s3.amazonaws.com/0/112075/8975bbca-9f19-d800-6da5-410fc2910ab6.png)

#mstranslatorパッケージインストール（失敗した手順）
プロジェクトのPython環境から「env (Python 3.6 (64bit))」を右クリックして「Python パッケージのインストール...」を選択します。
![kkk.png](https://qiita-image-store.s3.amazonaws.com/0/112075/758d7b08-e794-fcbf-64bd-882907638adf.png)

テキストボックスに「mstranslator」と入力して、「mstranslator(0.3.2)のインストール」を選択するとパッケージがインストールされ・・・ません。
![lll.png](https://qiita-image-store.s3.amazonaws.com/0/112075/7985a28f-6561-4ca3-ea0d-eb51ee2afaac.png)

UnicodeDecodeErrorが出て正常にインストールされません。

```:出力
----- 'mstranslator==0.3.2' をインストールしています -----
Collecting mstranslator==0.3.2
  Using cached mstranslator-0.3.2.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\xxxxxx\AppData\Local\Temp\pip-build-tohptics\mstranslator\setup.py", line 12, in <module>
        long_description=open('README.rst').read() + '\n\n' +
    UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 1138: illegal multibyte sequence
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\xxxxxx\AppData\Local\Temp\pip-build-tohptics\mstranslator\
----- 'mstranslator==0.3.2' をインストールできませんでした -----
```

WindowsでのPython外部モジュール導入のはまりどころ
http://qiita.com/yukinoi/items/1fe023408d3e684da983

この記事にあるようにWindowsの文字コードの問題に対応されていない外部パッケージでエラーになってしまうようです。

#mstranslatorパッケージインストール（成功した手順）
mstranslatorパッケージのREADME.rstファイルの文字コードはUTF-8で、Windowsの文字コードはCP932(ShiftJIS)が前提になっているためエラーになってしまうようです。

こうなるとVisual Studioの機能でパッケージをインストールできないので、自分でパッケージをダウンロードしてソースコードをWindowsに対応させてからインストールする必要があります。

こちらから「mstranslator-0.3.2.tar.gz」をダウンロードします。
https://pypi.python.org/pypi/mstranslator

今回はプロジェクトフォルダ下のenvフォルダにダウンロードして解凍しました。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/88e96aa2-9897-a0e6-bf08-329c9f1285c8.png)

解凍したmstranslator-0.3.2フォルダ内のsetup.pyを以下のように修正します。
これでREADME.rstファイルがUTF-8でオープンされるようになります。

```:setup.py(修正前)
    long_description=open('README.rst').read() + '\n\n' +
```

```:setup.py(修正後)
    long_description=open('README.rst', encoding='utf-8').read() + '\n\n' +
```

プロジェクトからコマンドプロンプトを開きます。
![bbb.png](https://qiita-image-store.s3.amazonaws.com/0/112075/09cc85e2-fea7-cc8a-ffe4-23fc75c07e66.png)

コマンドプロンプトから以下のコマンドでパッケージをインストールします。

```bat:コマンドプロンプト
> cd env\mstranslator-0.3.2
> python setup.py install
```
env仮想環境にmstranslatorパッケージと依存するパッケージがインストールされます。
![ccc.png](https://qiita-image-store.s3.amazonaws.com/0/112075/1a3b84b9-0cbc-4f1c-aa58-10a49413504b.png)

このままだと入力補完（インテリセンス）が使えないので解凍したmstranslator-0.3.2フォルダを検索パスに追加します。
![ddd.png](https://qiita-image-store.s3.amazonaws.com/0/112075/9fc8f330-199e-26ba-f961-42284b29cb36.png)

検索パスにフォルダが追加されると入力補完（インテリセンス）が使えるようになります。
![eee.png](https://qiita-image-store.s3.amazonaws.com/0/112075/719e6c0e-c973-1b2c-13de-4b02ce70aa61.png)

#翻訳する
翻訳するプログラムをTranslator.pyに記述します。
ACCESS_KEYに取得したアクセスキーを指定してください。

```py3:Translator.py
from mstranslator import Translator

ACCESS_KEY = 'xxxxxxxx'

translator = Translator(ACCESS_KEY)

#日本語から英語に翻訳
print(translator.translate(text='ちゃんと翻訳できるかな？', lang_from='ja', lang_to='en'))

#複数の文を翻訳
print(translator.translate_array(['りんご', 'みかん', 'ぶどう'], lang_from='ja', lang_to='en'))
```

ちゃんと翻訳されたら完成です。