django에서 i18n 지원 방법

django에서 i18n 지원 방법

django 프로젝트 공식 문서를 참고하자.
https://docs.djangoproject.com/en/1.9/topics/i18n/translation/#how-django-discovers-language-preference

i18n을 사용하려면 gettext를 설치해야 하는데 윈도우 용은 아래 링크를 클릭해서 설치를 한다.
http://mlocati.github.io/gettext-iconv-windows/

settings.py 에서 MIDDLEWARE_CLASSES 에 django.middleware.locale.LocaleMiddleware 를 추가한다.

MIDDLEWARE_CLASSES = [
...
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
...
]

ugettext_lazy 를 함수를 import한다.

from django.utils.translation import ugettext_lazy as _

언어설정
LANGUAGE_CODE = 'ko-KR'

언어목록
LANGUAGES = [
  ('ko', _('Korean')),
  ('en', _('English')),
]

언어 파일 경로
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

settings.py에서 위와 같이 설정 후,
python manage.py makemessages 명령을 내리면 언어파일 경로에 각 언어별로 폴더가 생성된다. django.po 파일이 생성되면 파일을 열어서 수정한다.
msgid에는 소스에 있는 문구가 들어있고 msgstr에 한글로 번역을 하면 된다.

예)
#: .\snippets\templates\main.html:122 .\snippets\templates\main.html.py:127
msgid "Welcome to our page"
msgstr "홈페이지에 오신걸 환영합니다"

그런다음 python manage.py compilemessages 를 하면 컴파일이 된다.
언어별로 설정하려면 -l ko 와 같이 언어 옵션을 설정한다.

예) python manage.py makemessages -l ko

이제 템플릿 파일에서 {% load i18n %} 을 첫줄에 넣고 tran 구문을 넣으면 다국어지원이 가능해진다.

{% trans "Welcome to our page" %}




댓글

이 블로그의 인기 게시물

dtsrun 실행하기

Set nocount on 옵션 설정하기

Slug가 뭘까?