翻訳ツールキットには、2.5.0 APIは、業界のためのドキュメント変換ツールの翻訳です。JSON例えばHTMLやのような翻訳のためにPOファイルを使用するように変換します。達成するためにフラスコのWebフレームワーク本明細書中で使用される基本的な機能は、ツールキットのAPIを翻訳します。
それは、私が眠って半分だった、Webアプリケーションを実現するために使用するAPIの3日以内に、数日前に書かれた要求だった(しばらくの間、種類のうち、実際にある)「レイは死ぬ」書面によるフォローアップはないが、(タスクを完了しましたまだ入力されたナンセンス、よく〜仕事しませんしませんでした。
私のオリジナルのオープンソース中国のブログで:https://my.oschina.net/finchxu/blog/3217430
プロジェクトは、簡単に私のgithubのhttps://github.com/finch-xu/f-ttのビューにダウンロード
0環境:
- Ubuntu18.04
- ツールキットAPI 2.5.0 http://docs.translatehouse.org/projects/translate-toolkit/en/latest/index.html翻訳
- フラスコ1.1.1
- Pythonの3.7
- uWSGI
- nginxの
ピップのpython3のようなuwsgi環境・ツールキットの翻訳フラスコインストール
1.機能が達成するために:
このAPIは、主に、コンバータの関数であり、単純にtxtファイル転送poファイル、JSONファイル転送ファイルPO、PO包括的なデータファイル統計これらの3つの機能を実現するために、ここで、いくつかのツールが付属しています。
1.A. TXT / JSONファイル転送POはそれぞれ、txt2po / json2po呼び出すAPIドキュメントが書かれているかを見てみましょう:
ここでは、開いているファイルを再生し、その後、txt2poを呼び出し、彼の内部原理はreadlinesが含まれている判定方法分割の他の方法があります。
from translate.convert import txt2po, json2po, html2po
@app.route('/convertfile/<path:filename>')
def convert_file(filename):
#给输出的文件设定po拓展名
filenameOut = os.path.splitext(filename)[0] + '.po'
#判断拓展名,来进行不同的转换操作
key = os.path.splitext(filename)[-1][1:]
if key == 'txt':
aa = open(os.path.join(app.config['UPLOAD_FOLDER'], filename), 'rb+')
bb = open(os.path.join(app.config['CONVERT_FOLDER'], filenameOut), 'wb+')
txt2po.run_converter(aa,bb,template_file=None,duplicatestyle='msgctxt',encoding='utf-8',flavour='plain',no_segmentation=False)
aa.close()
bb.close()
return redirect(url_for('manage_file'))
if key == 'json':
aa = open(os.path.join(app.config['UPLOAD_FOLDER'], filename), 'rb+')
bb = open(os.path.join(app.config['CONVERT_FOLDER'], filenameOut), 'wb+')
json2po.convertjson(aa, bb, template_file=None, pot=False, duplicatestyle='msgctxt',dialect='default', filter=None)
aa.close()
bb.close()
return redirect(url_for('manage_file'))
return redirect(url_for('manage_file'))
カウント機能を達成するために、ここで1.B.ツール、ドキュメントの段落の数は、そのような翻訳の完成度などの文字の数に関する統計情報。
ここでソースコードを表示するために、pocount.calcstats_old()と呼ばれます
#查看源码
def calcstats_old(filename):
...
...
...
sourcewords = lambda elementlist: sum(wordcounts[id(unit)][0] for unit in elementlist)
targetwords = lambda elementlist: sum(wordcounts[id(unit)][1] for unit in elementlist)
stats = {}
...
...
...
# words
stats["translatedsourcewords"] = sourcewords(translated)
stats["translatedtargetwords"] = targetwords(translated)
stats["fuzzysourcewords"] = sourcewords(fuzzy)
stats["untranslatedsourcewords"] = sourcewords(untranslated)
stats["reviewsourcewords"] = sourcewords(review)
stats["totalsourcewords"] = (stats["translatedsourcewords"] +
stats["fuzzysourcewords"] +
stats["untranslatedsourcewords"])
return stats
だから我々は、辞書のフロントエンドに戻った、直接呼び出さ
from translate.tools import pocount
#统计功能
@app.route('/count/<path:filename>')
def count_file(filename):
countfilename = os.path.join(app.config['CONVERT_FOLDER'],filename)
state = pocount.calcstats_old(countfilename)
return render_template("countinfo.html", state=state, filename=filename)
辞書を取得するためのフロントエンドは、抽出されたデータだけで罰金を必要とします
<h2>PO文件内容统计信息</h2>
<table border = 1>
<tr>
<th>{{filename}}</th>
<th> Strings </th>
<th>Words (source)</th>
<th>Words (translation)</th>
</tr>
<tr>
<td>Translated: </td>
<td> {{state["translated"]}}( {{state["translatedsourcewords"] * 100 / state["total"]}}%)</td>
<td>{{state["translatedsourcewords"]}}( {{state["translatedsourcewords"] * 100 / state["totalsourcewords"]}}%)</td>
<td>{{state["translatedtargetwords"]}}</td>
</tr>
<tr>
<td>Fuzzy:</td>
<td>{{state["fuzzy"]}}( {{state["fuzzy"] * 100 / state["total"]}}%)</td>
<td> {{ state["fuzzysourcewords"] }}( {{state["fuzzy"] * 100 / state["totalsourcewords"]}}%) </td>
<td>n/a</td>
</tr>
...
...
...
</table>
2.ここで再びPYCharmは私にアップロードプロジェクト全体でデバッグを開始githubのhttps://github.com/finch-xu/f-tt
ファイルにエラーが発生します他のコーディングGBK他のプロジェクトをアップロードする場合、プロジェクトが、UTF8ファイルをアップロードするだけで書き込まれていることに留意すべきです。中国がある場合は、中国語でUTF8にファイルを変換します。(メモ帳++タップを変換することができ、自己百度)
#Windows10下调试,注入环境变量
#这里用hello.py这个文件作为app启动文件
set FLASK_APP=hello.py
#设置debug网页显示
set FLASK_DEBUG=1
#启动
Flask run
あなたは見つけるでしょう、Webブラウザを開くには、この時間
3.運用環境に展開
使用nginxのは、PythonのWebアプリケーションを実行するためにuWSGIを聴きます。まず、uwsgi.iniプロファイルを作成します。唯一のpython3は、デフォルトがうまくPythonで書かれている場合、すべての後に、同じ時間であっpython2.7とUbuntuののpython3場合は、コンフィギュレーション・ファイルはのpython3に書き込まれることに注意することは、ここで、uwsgiとnginxの後のUbuntuをインストールするためのプロジェクトをアップロードし、プロジェクトがありますPython3.7が書かれて。
ここでnginxのを使用してリスニングするためにローカルポート622を設定します
[uwsgi]
socket = 127.0.0.1:622
chdir = /home/ubuntu/f-tt/flaskr/
wsgi-file = /home/ubuntu/f-tt/flaskr/hello.py
callable = app
processes = 1
threads = 1
logto = /home/ubuntu/uwsgilogs/%n.log
#这里我的服务器上有python2和3,所以这里要写python3,如果你只有一个,那么就不需要写3或者2
plugins = python3
構成ファイルを変更nginxの
sudo vim /etc/nginx/sites-available/default
server {
listen 5000;
root /var/www/html;
server_name ip或者你的域名;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:622;
}
、短期で、非常に明確に書かれたログをエラー自体の一部を投射するプロジェクトを開始し、エラー500シリーズが発生した場合、あなたは通常、十分な権限(sudoのソリューション)に促さや繰り返しのように起動すると、次のディレクトリにログを表示することができ、またはPythonの
sudo uwsgi /home/ubuntu/f-tt/flaskr/uwsgi.ini -d /home/ubuntu/f-tt/flaskr/logs/log.log
その他のファイルのアップロードおよびダウンロード機能やその他のコンテンツは、私のGitHubを参照することができます。
私たちは完了です。