こんにちは
英文をコピペしてGoogle翻訳に入れると改行が変なところに入って変な訳になってしまったことはないでしょうか。
例えばこんな感じ

なんかおかしい訳ですね。笑
これをどうにかしようとpythonとtkinterを使って翻訳アプリを作ってみました。
実際に作るとなるといろいろ大変だったので、作り方を紹介したいと思います。
流れ
大まかな流れとしては次の通りです。
tkinterで作ったテキストエリアにコピペされた英文を読み込む
⬇︎
pythonが動き英文を日本語に翻訳(googletransを使用)さらに改行を取り除く
⬇︎
翻訳した日本文をtkinterを別のテキストエリアに出力
という感じです。
tkinterとは
tkinterとはpythonでGUIを制作できるライブラリです。
これを使って原文の英語を入力したり、翻訳した日本文を表示したりします。
tkinterのインストール
pythonをインストールしたら自動的にインストールされているはずなので、すぐ使えます。
インストールしてなかった場合はこちらを参照してください。⬇︎

制作していこう!
さっそくやっていきましょう!
Projectフォルダ
まず、専用のフォルダを作りましょう。
Project |-translate.py |_main.py
最終的な構造は以下のような形です。
これからtranslate.pyとmain.pyにコードを書き込んでいきます。
googletransの導入
まず、powershell(Anaconda使っている人はAnaconda prompt)からgoogletransをインストールします。
以下のコードを打ち込みます。
$ pip install googletrans
translate.pyのコーディング
以下のコードをtranslate.pyに書きます。
import re from googletrans import Translator def translate(text): comment_pattern = re.compile(r'//([^\n]*)') out = re.sub(comment_pattern, r'\1', text) out = re.sub(r'^\s*|\s*(?=\s)|\s*$', '', out) out = re.sub(r'[\r\n]', ' ', out) out = re.sub(r':\s+', r':\n', out) out = re.sub(r'\.\s+([A-Z])', r'.\n\1', out) out = ' '.join( '\n' + line if ' ' in line else line for line in out.splitlines()) out = '\n'.join( re.sub(r' ([A-Z]\w+)', r' _\1_', line) for line in out.splitlines()) for t in Translator().translate(out.strip().splitlines(), src='en', dest='ja'): return t.text
これで翻訳した英文を文字列として返します。
main.pyのコーディング
次にmain.pyに以下のコードを書いていきます。
import tkinter import translate from translate import translate def btn_click(): lang = str(translate(txt_1.get())) txt_2.insert(0, lang) # 画面作成 tki = tkinter.Tk() tki.geometry('300x300') tki.title('翻訳機') # ラベル lbl_1 = tkinter.Label(text='英文:') lbl_1.place(x=30, y=70) lbl_2 = tkinter.Label(text='日本文:') lbl_2.place(x=30, y=100) # テキストボックス txt_1 = tkinter.Entry(width=20) txt_1.place(x=90, y=70) txt_2 = tkinter.Entry(width=20) txt_2.place(x=90, y=100) # ボタン btn = tkinter.Button(tki, text='翻訳', command=btn_click) btn.place(x=140, y=170) # 画面をそのまま表示 tki.mainloop()
このコードでtkinterを使っています。
一番大変だったのはbtn_click関数の書き方でした。
def btn_click(): lang = str(translate(txt_1.get())) txt_2.insert(0, lang)
翻訳した文字列を取得し、日本文のテキストボックスに出力しています。
実験してみる
さて、適当な英文をネットから引っ張ってきたら「英文:」にコピペしましょう。
「日本文:」に翻訳されたら成功です!!

(見えねぇ…)

メモにコピーしてみました。ちゃんと訳されてました。
改善点
さて、こうして一応完成しましたがいくつか改善すべき点があると思います。
- 英文を連続で記入すると、前の日本文が消えずに残ってしまう。
- テキストボックスが小さいのでちょっと見ずらい 。
tkinterの工夫次第でなんとかなるかな…とは思いますが、ちょっと力不足で実装できませんでした…
あとは今ローカルでしか動かないところです。
自分用に作ったのでこれでもいいですが、どうせならサーバーに入れて誰でも使えるようにしたいですね。
ということで…
以下の記事で翻訳アプリを作ってみました!!
pythonのフレームワークのDjangoを使って製作しています。
今回の問題点をほぼ解決したものとなっているのでぜひご覧ください!!
参考




コメント
[…] ここからは前回作った翻訳アプリを使って説明していきます。 […]