RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 Meisyo Python

Flask-Babelを使って、Pythonアプリで多言語対応を行う

投稿日:

Pythonで多言語対応してみたいなーと思っていました。
思っていましたが、実際になかなか使うタイミングがない・・・。
今回自作ゲームでユーザー数の増加がみられ、かつ海外からのアクセスも複数確認できたので追加することにしました。

目的

名将と呼ばれた者達+のアクティブ人口を増やすために、少しアクセスがあった中国語英語に対応する。

バージョン情報

flask-babel==2.0.0

作業

5が一番つらい

1. 翻訳ファイルテンプレート作成
pybabel extract -F babel.cfg -k lazy_gettext -o translations/base.pot .

2. 各言語の翻訳ファイルを定義
pybabel init -i translations/base.pot -d translations -l ja
pybabel init -i translations/base.pot -d translations -l en
pybabel init -i translations/base.pot -d translations -l zh
pybabel init -i translations/base.pot -d translations -l ko
# 日本語, 英語, 中国語, 韓国語に対応

3. テンプレートを翻訳ファイルに定義
pybabel update -i translations/base.pot -d translations

4. view, functions, templatesのファイルを書き換える
・view, functions
from flask_babel import gettext
gettext(”)

・templates
{{ gettext(”) }}

5. 各言語の.poファイルを書き換える
gettext(‘文字列’)内の文字列がリストアップされて、自分で翻訳文を書く。自動翻訳ではない。つらい。

6. .poファイルをバイナリ.moファイルに書き換える
pybabel compile -d translations

Flaskの構成


Flaskの詳細な構成については、VPSでつくるPythonでのWebアプリ運用環境(連載記事)をご覧ください。基本的な設計思考は同じです。

下記をapp.pyのreturn app前に定義してください。

    # 多言語対応
    babel = Babel(app)
    @babel.localeselector
    def get_locale():
        return request.accept_languages.best_match(['ja', 'ja_JP', 'en', 'zh', 'ko'])

※ja_JPがないとバグが起こる可能性もあるようなので追加しています
※ko(韓国語)は記載例。他の言語も同様に追加可能です。

どれだけ変わるの?

メイン画面で比較してみました。

日本語

英語


各ボタンのpossible要らないねえ…

中国語


ガバ翻訳すぎた

注意することは何?

コードの書き方です。
コードの書き方如何で作業量がかなり変動します…。

さいごに

今回はFlask-Babelで多言語対応を行いました。
目的はあくまでアクティブ人数の増加、それを目指すためのアクセス数の増加です。
そちらの続報については1~2か月後に記事を書きます。

-Web制作, Meisyo, Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

[Meisyo]模擬戦の追加(テスト)vs 大阪桐蔭2018

模擬戦(NPC勝ち抜き戦)を追加しました! 模擬戦のコンセプトは「甲子園歴代優勝校と戦える場を」です。 経験値高め。もらえるアイテムも多いです。 挑戦には練習試合で7日に1回くらい拾える「試合チケット …

【教材紹介】BERTによる自然言語処理

自然言語処理の応用モデルであるBERTを今すぐに使いたい、機械学習の概要を知っている担当者レベルに向けた書籍を紹介します。 名称 BERTによる自然言語処理 著者 ストックマーク株式会社 近江崇宏、金 …

Google Driveを使ってXAMPP+CakePHPのドキュメントルートを共有する in Windows

どこでも同じように作業がしたい。 デスクトップでも、ノートでも。 無論、サーバー(XAMPP)も同じように動かしたいな ・・・ということで、Google Driveを使って環境を構築していきます。 今 …

ノートPCとPythonでできる音声合成

「音声合成やってみたいけど難しそうだなあ」 私もそう思っていました。 私が使おうとしたきっかけは、大量の青空文庫の書籍を機械に朗読させたいと思ったからです。 そこで、調べてみるとできるということが分か …

[Meisyo]第4回公式戦決勝戦

名将と呼ばれた者達、今年最後の第4回公式戦決勝戦がありました。結果をお伝えします。 (ゲームにログインしていれば、こちらから結果を見ることが出来ます) オモテ: 市立織田高校 チーム総合力:119.5 …