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

    Dockerで起動したDjangoプロジェクトをPycharmのデバッグモードで起動

    Dockerで起動したDjangoプロジェクトをPycharmのデバッグモードで起動 Dockerで起動したDjangoプロジェクトをPycharmのデバッグモードで起動して、ブレークポイントを設定して任意の行でプログラ […]

    Posted on by press
    Django

    Djangoでモジュールを作りviews.pyからimportして呼び出す

    Djangoでモジュールを作りviews.pyからimportして呼び出す方法です。 同じ処理を何度も書いたり、同じ処理を複数回呼び出したりするときは、その処理をモジュール化してviews.pyからimportして呼び出 […]

    Posted on by press

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

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

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