使用フラスコのWebアプリケーションを構築するためのツールキット2.5.0 APIを翻訳

翻訳ツールキットには、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環境:

ピップの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

ここでソースコードを表示するために、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を参照することができます。

私たちは完了です。

おすすめ

転載: www.cnblogs.com/finch-xu/p/12654797.html