Mezzanine にはというか django には 国際化機能があり、
Mezzanine の翻訳ファイルもその機能で作成されています。
翻訳の一部で気になっていた箇所があり、
翻訳ファイルを修正して、Pull Request を送ったので、
その時の手順を記載しておきます。
参考記事
前提
-
OS Version
sw_vers ---------------------------- ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1108 ----------------------------
-
python Version
python -V ---------------------- Python 2.7.10 ----------------------
django-admin-tools の インストール
翻訳には、django 管理ツールの makemessages
、compilemessages
を使います。
これらのコマンドが、manage.pyを介さなくても実行できるように、
django-admin-tools
をインストールします。
pip install django-admin-tools
適当な場所で、以下のコマンドを実行します。
CommandError で、gettext
が入ってるか確認しろと出るので、
gettext
をインストールします。
django-admin.py makemessages
--------------------------------------
CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.
--------------------------------------
gettext の インストール
brew で インストールします。
brew install gettext
---------------------------------------
/usr/local/Cellar/gettext/0.19.8.1: 1,934 files, 16.9M
---------------------------------------
makemessages
を実行しても、まだエラーが出るので、
django-admin.py makemessages -l ja
---------------------------------------
CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.
---------------------------------------
brew link --force gettext
---------------------------------------
Linking /usr/local/Cellar/gettext/0.19.8.1... 185 symlinks created
---------------------------------------
Mezzanine リポジトリに対して実施したこと
Mezzanine の翻訳ファイルの作成時に実施したことを記載します。
djangoプロジェクトならほぼ同じような手順になるかと思います。
github で folk。 clone して、branchを作成する。
-
Folk したリポジトリを ローカルにgit clone する。
git clone https://github.com/{フォークしたリポジトリ}.git
-
Local にブランチ(作業用)を作成
git branch develop_sandbox
-
作成したブランチに移動
git checkout develop_sandbox
編集対象の、django.po をリストアップ
これは、TODO用途に対象のdjango.poファイルを控えたかっただけとなります。
mezzanineのアプリケーションごとに、django.po
ファイルが存在します。
find ./ -name django.po | grep /ja/
------------------------------------------------
.//mezzanine/accounts/locale/ja/LC_MESSAGES/django.po
.//mezzanine/blog/locale/ja/LC_MESSAGES/django.po
.//mezzanine/conf/locale/ja/LC_MESSAGES/django.po
.//mezzanine/core/locale/ja/LC_MESSAGES/django.po
.//mezzanine/forms/locale/ja/LC_MESSAGES/django.po
.//mezzanine/galleries/locale/ja/LC_MESSAGES/django.po
.//mezzanine/generic/locale/ja/LC_MESSAGES/django.po
.//mezzanine/mobile/locale/ja/LC_MESSAGES/django.po
.//mezzanine/pages/locale/ja/LC_MESSAGES/django.po
.//mezzanine/twitter/locale/ja/LC_MESSAGES/django.po
------------------------------------------------
django.po ファイルの編集
-
ディレクトリ移動
cd .//mezzanine/accounts
-
makemessages の実行
実行するまで、わかりませんでしたが、既存の翻訳済メッセージも引き継がれた状態で、差分メッセージが追加&削除されたdjango-admin.py makemessages -l ja
django.po
ファイルが生成されます。
もう1つ階層が上でも、django-admin.py makemessages -l ja
は実行できますが、django.poファイル内の、メッセージ使用箇所のファイル名と行数の記述、が変わってきます。
このため、アプリケーションディレクトリで、makemessages
を実行したほうがよいかと思います。
以下、変更箇所の例を抜粋。
# アプリケーションディレクトリ直下で生成した場合 #: templates/accounts/account_signup.html:11
# mezzanineディレクトリ(1つ上の階層で実行した場合) #: accounts/templates/accounts/account_signup.html:11
-
msgid に対する 翻訳文字列 msgstr を割り当てる。 msgid に対して、msgstrが未設定
""
の箇所に翻訳した文字列を設定します。
例えば、以下のようになります。
msgid "Email" msgstr "Eメール"
-
compilemessages を実行
django-admin.py compilemessages -l ja
-
一通り作業が終わったら git commit
git commit -m "modify django.po" ./locale/ja/LC_MESSAGES/django.po git commit -m "generate django.mo" ./locale/ja/LC_MESSAGES/django.mo
この作業を、繰り返します。
編集後のファイルを Pull Reuqest
-
master ブランチに切り替え
git checkout master
-
squash
オプションでマージ
squash したのは、pull request する際に嫌がられたりするかもだったため、実施しました。git merge –-squash develop_sandbox
他の翻訳系の pull request はまとまってなかったりしたので、そのままでも OK かもしれません。 -
commit して、 push します。
-
Github 上で Pull Request 送付
しばし待つ。で、まってたら、マージしてもらえました。
ちなみに気になっていた箇所について
ブログ投稿のメタデータ欄に、サイトマップに含めるか含めないかの、
チェックボックスがあるのですが、それが【サイトマップ内に表示表示】になっていて、
これを【サイトマップ内に表示】にしたかったのです。
元旦に Pull Request、正月に風邪を引きながらやることじゃないですが、
今年も宜しくお願い致します。
以上です。
コメント