Tip!
- 국제화와 지역화는 출판물이나 하드웨어 또는 소프트웨어 등의 제품을 언어 및 문화권 등이 다른 여러 환경에 대해 사용할 수 있도록 지원하는 것을 의미
- 이때 국제화는 제품 자체가 여러 환경을 지원할 수 있도록 제품을 설계하는 것을 의미하며, 지역화는 제품을 각 환경에 대해 지원하는 것을 의미
HTTP 헤더
Accept-Language
로 보내는 값으로 언어-국가
형식이며 ko-kr
같이 쓰는데 모두 소문자로 되어 있음ko_KR
은 대한민국 한국어이고 ko_KP
는 북한 한국어 의미로 언어_국가
형식Tip!
- 로케일(locale)은 세계 각 국에서 사용하는 언어, 문자, 화폐 표시, 시간 등에 대해 국제화(i18n; Internationalization)와 지역화(l10n; localization)를 통해 어떻게 표시할 지 정의한 매개 변수의 모음
- 로케일이 필요한 이유는 동일한 데이타라도 문화권마다 표시하고 처리하는 방법이 다르기 때문
- 로케일을 활용하면 언어권에 맞게 프로그램마다 데이타의 입력과 출력을 수정하지 않고도 사용하는 언어별에 맞는 데이타를 처리할 수 있는 장점 존재
.po 파일
: 번역가가 직접 번역하는 메시지 파일.mo 파일
: Django가 인식할 수 있도록 개발자가 .po
번역 메시지 파일을 컴파일해 만든 파일: settings.py
파일의 내용을 수정 및 추가
settings.py
파일에서 아래와 같이 SessionMiddleware
와 CommonMiddleware
사이에 LocaleMiddleware
를 추가MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
settings.py
파일에서 다음 내용을 수정LANGUAGE_CODE = 'ko-KR'
settings.py
파일에서 상단에 다음과 같이 import문
을 추가from django.utils.translation import ugettext_lazy as _
LANGUAGES = [
('ko', _('Korean')),
('en', _('English')),
]
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
: 실제로 번역 파일을 만들고 컴파일하는 작업으로 실질적으로 가장 시간이 많이 소요되는 부분
# 모델: models.py 예시
from django.utils.translation import ugettext_lazy as _
class Post(models.Model):
STATUS_CHOICES = (
('draft', _('Draft')),
('published', _('Published')),
)
title = models.CharField(_('Title'), max_length=250)
# 템플릿: template.html 예시
<li><a href="{% url "blog:post_index" %}">{{ _('Blog') }}</a></li>
python manage.py makemessage -a
python manage.py makemessages -l ko
python manage.py makemessages -l en
python manage.py compilemessages
.po
메시지 파일에 주석으로 #
, fuzzy
표시가 있으면 해당 문자열은 번역되지 않음#
, fuzzy
표시가 있으면 해당 부분의 주석을 삭제$ python manage.py makemessages
CommandError: Can't find xgettext. Make sure you have GNU gettext tools 0.15 or newer installed.
$ brew install gettext
$ brew link gettext --force