Django 다국어 사용

django 3.1 다국어 사용

* 확인사항:
django에서 다국어지원을 위해서는 os에 gettext가 설치되어 있어야 한다.

django에서 다국어 지원을 위해 settings.py에 아래 내용을 추가해야 한다.

cat project/settins.py

from django.utils.translation import ugettext_lazy as _

...


MIDDLEWARE = [
    ...
    'django.middleware.locale.LocaleMiddleware',
    ...
]

# adding for i18n
LANGUAGES =[
    ('ko', _('Korean')),
    ('en', _('English')),
    # ('zh-CN', _('Simplified Chinese')),
]

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

설정후, 아래 명령을 실행하면, locale 디렉토리가 만들어진다. 처음에 한글, 영어, 중국어 세가지를 설정으나 중국어가 제대로 작동하지 않아 주석처리했다.(아는 분 계시면 답글로 좀 알려주시길!)

$ python manage.py makemessages -l ko
processing locale ko
$ python manage.py makemessages -l en
processing locale en

locale 디렉토리아래에, 언어별로, .po 파일이 만들어지며 야래와 같은 내용이 있다.

cat project/locale/ko/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 ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-20 10:23+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: miraeqr/settings.py:139
msgid "Korean"
msgstr ""

#: miraeqr/settings.py:140
msgid "English"
msgstr ""

views.py 에 테스트용 view를 만든다.

class TestView(TemplateView):
    template_name = 'test.html'

template/test.html 을 만든다. 템플릿 파일의 윗부분에, {% load i18n %} 태그를 추가한다.

{% load i18n %}

{% block content %}

<h2>{% trans "title" %}</h2>

Title is translated!!!

{% endblock %}

이제, 언어 설정 파일에 아래 내용을 추가해준다.

project/locale/ko/LC_MESSAGES/django.po

#: project/templates/test.html:5
msgid "title"
msgstr "다국어지원테스트"

project/local/en/LC_MESSAGES/django.po

#: project/templates/test.html:5
msgid "title"
msgstr "Multi-Language Test"

언어파일을 컴파일해준다. 그러면 .mo 파일이 만들어진다.

./manage.py compilemessages

이제, 브라우저를 열어 확인하면 title에 한글 페이지가 보인다.

브라우저 설정을열고 언어를 영어로 변경하면 영어 페이지가 보인다.

1 comment

    • snowffox on 2020년 8월 26일 at 2:58 오후
    • Reply

    https://fueled.com/blog/supporting-multiple-languages-django%E2%80%8A-%E2%80%8A2/ 를 참고하여,

    중국어 설정은 아래와 같이 하였더니 작동함.

    settings.py 언어 설정에 아래 추가.

    (‘zh-cn’, _(‘Simplified Chinese’)),

    그리고 아래 명령어로 .po 파일을 생성한다. 이때, 작은따옴표와 대문자 소문자 구별해야한다.

    python manage.py makemessages -l ‘zh_CN’

    그리고, po 파일에 중국어 번역하고, compilemessages 하면 잘 됨.

답글 남기기

Your email address will not be published.