Djangoは国際化(i18n)とロケールをサポートしており、日本語を表示するための設定や、日本時間(JST)を扱う設定も簡単に行えます。この記事では、Djangoプロジェクトを日本語化し、日本時間を設定する手順を詳しく解説します。
1. Djangoの日本語化
1.1 settings.py
の設定
settings.py
を開いて、以下の内容を追加または変更しましょう。
# settings.py
# 日本語を使用するための設定
LANGUAGE_CODE = 'ja' # 日本語を指定
# 日本標準時(JST)を使用する設定
TIME_ZONE = 'Asia/Tokyo'
# ロケールに基づいた形式に従う
USE_L10N = True
USE_TZ = True
USE_I18N = True # 国際化を有効にする
LANGUAGE_CODE = 'ja'
: Djangoアプリケーションのメッセージやフォームが日本語で表示されます。TIME_ZONE = 'Asia/Tokyo'
: タイムゾーンを日本標準時に設定します。USE_TZ = True
: UTCで日時を保存し、表示の際にタイムゾーンを考慮する設定です。USE_I18N = True
: 翻訳機能を有効にするために必要です。
1.2 日本語翻訳ファイルの有効化
Djangoはgettext
を利用して翻訳を行います。翻訳ファイルを有効化するために、以下のコマンドを実行します。
django-admin makemessages -l ja
次に、翻訳ファイルを編集します。生成されたlocale/ja/LC_MESSAGES/django.po
を開き、翻訳を追加します。
msgid "Welcome to our website!"
msgstr "私たちのウェブサイトへようこそ!"
編集が終わったら、翻訳を適用するために以下を実行します。
django-admin compilemessages
これにより、Djangoの管理画面やシステムメッセージが日本語表示されるようになります。
2. Djangoで日本時間を扱う
2.1 日本時間を取得
Djangoのtimezone
モジュールを使って、日本時間を取得しましょう。
from django.utils import timezone
# 現在の日本時間を取得
now_jst = timezone.localtime(timezone.now())
print(now_jst)
timezone.now()
はUTC時刻を返しますが、timezone.localtime()
を使えば設定したタイムゾーン(日本時間)に変換できます。
2.2 日時の保存と表示
データベースにはUTCで日時が保存されるため、表示時にtimezone.localtime()
で日本時間に変換しましょう。
from django.utils import timezone
utc_time = timezone.now()
jst_time = timezone.localtime(utc_time)
print("UTC Time: ", utc_time)
print("Japan Time: ", jst_time)
2.3 管理画面の時間表示をJSTに統一
管理画面でも日本時間を表示するには、settings.py
のTIME_ZONE
を正しく設定しておけば問題ありません。ただし、ユーザーの入力を考慮する場合、forms.DateTimeField
でローカル時間を使う場合は以下の方法も有効です。
from django import forms
from django.utils.timezone import localtime
class MyForm(forms.Form):
my_datetime = forms.DateTimeField(widget=forms.DateTimeInput(attrs={'type': 'datetime-local'}))
def clean_my_datetime(self):
data = self.cleaned_data['my_datetime']
return localtime(data)
3. 日本語翻訳のカスタマイズ
アプリケーション内の特定メッセージをカスタマイズする方法を見ていきます。
3.1 gettext
を使った翻訳
ビュー内で翻訳を適用したい場合は、次のように書きます。
from django.utils.translation import gettext as _
def my_view(request):
message = _("Welcome to our website!")
return HttpResponse(message)
翻訳ファイルを作成し、日本語訳を追加します。
django-admin makemessages -l ja
django-admin compilemessages
locale/ja/LC_MESSAGES/django.po
に以下を追加しましょう。
msgid "Welcome to our website!"
msgstr "私たちのウェブサイトへようこそ!"
4. 日付・時刻のフォーマットをカスタマイズ
日本のロケールに合わせて日付や時刻の表示形式を変更できます。
# settings.py
DATE_FORMAT = 'Y年m月d日'
TIME_FORMAT = 'H:i:s'
DATETIME_FORMAT = 'Y年m月d日 H:i:s'
まとめ
Djangoで日本語化と日本時間(JST)を設定するのは、settings.py
の変更を中心に簡単にできます。さらに翻訳ファイルを利用すれば、メッセージのカスタマイズも可能です。管理画面でもJSTを正しく反映させる方法も取り入れることで、ユーザビリティが向上します。
この手順を取り入れることで、日本語ユーザー向けに最適化されたDjangoアプリケーションを作成できるでしょう!
コメント