【Django】サイト英訳への道 〜静的なページの多言語化〜

前々回前回とDjangoで作っていたサイトの多言語化を進めてきました。

今回は、静的なページの多言語化設定の実装手順について書いていきたいと思います。



手順

多言語化したいテキストをマークアップしていきましょう。


例えば、こんな感じ。

ポイントになるのは{% trans "清重 影織" %}と、
{% trans "きよしげ かげおり" %}という部分です。
それぞれダブルクオーテーションで囲まれた部分が、翻訳したい箇所です。

今回の例では、「清重影織」の名前と読み仮名の部分を英訳しよう、ということですね。


次にsettings.pyに以下を追記します。

このパスにあるフォルダ内に翻訳情報を格納していきます、と指定しています。


次に、プロジェクト直下と、アプリケーションディレクトリ内に「locale」という名前のディレクトリを作成します。

プロジェクト全体に関わる情報の翻訳は前者に、アプリ内の翻訳は後者に保存されます。
基本的には後者を触ることが多いはずです。
今回の例で、名前の翻訳などは後者に当たるわけですね。


ここまでできたら、翻訳したい言語のデータを作っていきます。
$ python manage.py makemessages -l en
とコマンドを叩きましょう。

このenの部分は、翻訳したい言語に合わせて変えていきます。
今回は英語なのでenですね。

すると、先ほど作ったlocaleフォルダ内に、django.poというファイルができているはずです。
これが翻訳ファイルですので、msgstrの部分を埋めていきましょう。
英語にふりがなはないので、ふりがなの部分はスペースを一つ入れておきました。

翻訳を埋めて保存したら、
$ python manage.py compilemessages
を叩くと、サイトに反映されます。

もし、さらにマークアップの追加があった場合は、再び
$ python manage.py makemessages -l en
をすると、poファイルがアップデートされます。
コマンドを叩いても、これまで書いた翻訳は消えないので安心してください。




まとめ

これで、静的ページも無事に多言語化できましたね。
めでたしめでたし。

翻訳作業が割と膨大なので、もう少し時間がかかるかもしれませんが、近日サイトをアップデート予定です。

思ったよりサクッとできたので良かったです!
わっしょい!