콘텐츠로 바로 가기
Django i18n

Django i18n: Python 웹 앱을 위한 내장 번역

Django는 GNU gettext 기반의 완전한 국제화 프레임워크를 제공합니다. gettext 함수와 템플릿 태그를 사용하여 뷰, 모델, 템플릿에서 번역할 문자열을 표시하세요. Django는 .po 파일을 .mo 바이너리로 컴파일하여 빠른 조회가 가능하며, 미들웨어가 URL 접두사, 쿠키, 브라우저 헤더를 기반으로 올바른 로케일을 자동으로 활성화합니다.

Django i18n 기능

_() 및 gettext_lazy() 번역 함수를 사용한 GNU gettext 통합
makemessages 및 compilemessages 명령어를 사용한 .po/.mo 파일 작업 흐름
템플릿 내 번역을 위한 템플릿 태그 {% trans %} 및 {% blocktrans %}
ngettext 및 {% blocktrans count %}를 통한 복수형 지원
gettext_lazy()를 사용한 모델 필드 및 양식 레이블의 지연 번역
URL, 쿠키 및 헤더를 통해 언어를 자동으로 감지하는 LocaleMiddleware
로케일 접두사가 붙은 URL 라우팅을 위한 i18n_patterns (예: /en/about, /fr/about)
날짜, 숫자 및 통화에 대한 형식 및 모델 필드 현지화
USE_TZ 및 pytz 통합을 통한 시간대 고려 날짜/시간 처리

실전 딕쟈고 i18n

views에서 복수형 처리를 위해 gettext 함수와 ngettext를 사용하고, settings.py의 LANGUAGES를 구성하여 지원되는 로케일을 정의하세요.

# views.py
from django.utils.translation import gettext as _
from django.utils.translation import ngettext

def welcome(request):
    output = _("Welcome to our site")
    count = 5
    output += ngettext(
        "%(count)d item",
        "%(count)d items",
        count
    ) % {"count": count}
    return HttpResponse(output)

# settings.py
LANGUAGE_CODE = 'en'
USE_I18N = True
LANGUAGES = [
    ('en', 'English'),
    ('fr', 'French'),
    ('de', 'German'),
]

지금 바로 Django 현지화를 시작하세요

AI 기반 워크플로우, CLI 동기화, 50ms 미만의 CDN 전송 기능을 통해 Django .po 파일 번역을 관리하세요.