Djangoの国際化(i18n)で多言語化(後半)


press
Djangoの国際化(i18n)で多言語化(後半)

Djangoの国際化(i18n)で多言語化(後半)

前回からの続きです。

コードはGitHubリポジトリにあげています。

django-admin makemessages -l en --no-location

上記コードを実行すると、locale/en/LC_MESSAGES/django.poが生成されます。このファイルが翻訳ファイルとなっています。
(en)とすることで英語用ファイルが生成されます。
(–no-location)とすることで翻訳する文章の位置が非表示になります。非表示にしないと修正のたびに位置が変更になりファイルの視認性が下がります。

GNU gettextがインストールされていないと以下のエラーが出るので、こちらを参考にしてください。

 CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.

locale/en/LC_MESSAGES/django.po

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""

...
msgid "国際化"
msgstr "Internationalization"

msgid "English"
msgstr ""

msgid "Japanese"
msgstr ""

msgid "ハロー・ワールド"
msgstr "Hello, world!"
...

翻訳したい文章をmsgstrの部分に記入します。(今回は「国際化」と「ハロー・ワールド!」を「Internationalization」と「Hello, world!」に翻訳します)

django-admin compilemessages

上記コードを実行すると、locale/en/LC_MESSAGES/django.moが生成されて翻訳完了です。

最終的なディレクトリ構造

.
├── app
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── locale
│   └── en
│       └── LC_MESSAGES
│           ├── django.mo
│           └── django.po
├── manage.py
├── multilingualization
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── requirements.txt
└── templates
    └── index.html

動作確認

python manage.py runserver

http://127.0.0.1:8000/

Djangoの国際化(i18n)で多言語化

http://127.0.0.1:8000/en/

Djangoの国際化(i18n)で多言語化

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Show Comments (0)

    Comments

    Related Articles

    Django

    Pandasで作ったCSVをダウンロードする

    Django上でPandasで作ったCSVをダウンロードさせる方法です。df.to_csv(“filename.csv”)でも出力は出来ますがダウンロードは出来ないので、ダウンロード機能が必要な場 […]

    Posted on by press
    Django

    Djangoのテンプレートにrangeを渡す

    Djangoのテンプレートに範囲を渡す方法です。指定した月の全日数を表示したいときや日毎に処理をして表示させたいときなどにrangeに範囲を入れてテンプレートに渡せます。 views.py 現在の年と月を指定して総日数を […]

    Posted on by press

    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません