Navigation

Related Articles

Back to Latest Articles

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 / Djangoを中心にウェブアプリケーションを開発している株式会社ファントムが運営しています。

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




Show Comments (0)

Comments

Related Articles

Django

Djangoでカスタムコマンドを作り実行する

DjangoでWEBアプリケーションを開発していてデータベースの集計などをバッチ処理したいときに、カスタムコマンドを作り実行する方法です。 今回はサンプルとしてmycommandアプリケーションを作成するので以下のコマン […]

Posted on by press
Django

DockerのPostgreSQLコンテナのリストア

Dockerで動いているPostgreSQLにデータをリストアする方法です。書き出したPostgreSQLのdumpファイル(リストア用データ)はデスクトップに置いてあるという前提で進めます。 ディレクトリ構造 Dock […]

Posted on by press