やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Pythonで国際化した(pot, po, moファイル作成手順をshスクリプトに書いた)

3ヶ国語を用意してみた。実行中に任意の言語で表示する。

成果物

GitHubPython.i18n.201709151041

前回

今回

翻訳ファイル(potpomo)の作成を半自動化した。

残念ながら、翻訳とそのpoファイルへのテキスト入力は手作業である。

./res/i18n/make_pot.sh

export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
echo "Pythonコマンド準備完了。"

SOURCE_CODE=../../src/main.py
DOMAIN_NAME=hello
mkdir -p ./po/
python pygettext.py ${SOURCE_CODE}
cp messages.pot ./po/${DOMAIN_NAME}_de.po
cp messages.pot ./po/${DOMAIN_NAME}_en.po
cp messages.pot ./po/${DOMAIN_NAME}_ja.po
mv messages.pot ./po/messages.pot
echo "対象ソースコード'${SOURCE_CODE}'からpotファイルを作成しました。"
echo "(ドメイン名は'${DOMAIN_NAME}'です。対象ソースコードに gettext.install('${DOMAIN_NAME}') のようにしてドメイン名を指定してください)"
#
# ( 手作業: poファイルに翻訳テキストを記入する )
#
echo "./po/配下にある各.poファイルに翻訳したテキストを入力してください。完了したらENTERキーを押下してください。"
read
mkdir -p ./languages/de/LC_MESSAGES
mkdir -p ./languages/en/LC_MESSAGES
mkdir -p ./languages/ja/LC_MESSAGES
python msgfmt.py ./po/${DOMAIN_NAME}_de.po
python msgfmt.py ./po/${DOMAIN_NAME}_en.po
python msgfmt.py ./po/${DOMAIN_NAME}_ja.po
mv ./po/${DOMAIN_NAME}_de.mo ./languages/de/LC_MESSAGES/${DOMAIN_NAME}.mo
mv ./po/${DOMAIN_NAME}_en.mo ./languages/en/LC_MESSAGES/${DOMAIN_NAME}.mo
mv ./po/${DOMAIN_NAME}_ja.mo ./languages/ja/LC_MESSAGES/${DOMAIN_NAME}.mo
echo "moファイルの作成と配置が完了しました。正常終了します。"

課題

  • 翻訳とそのテキスト入力も自動化したい
  • 複数の.pyファイルを対象とするときはどうやって管理する?

たった1ファイルの2箇所を3カ国で翻訳するだけなのに、ファイル数やドメイン名などの管理項目が多すぎる。規模が大きくなったら破綻しそう。

所感

規模の拡大に伴い、自動化と管理の負荷が大きくなる。というか、すでに大きい。現実的でないレベル。手作業でやると本筋が進まない。