[python] Django의 인터내셔널리제이션(i18n) 처리 방법은 어떻게 되는가?

Django는 웹 어플리케이션을 다국어로 번역하는 인터내셔널리제이션(i18n)을 지원합니다. 이를 통해 사용자에게 자신이 선호하는 언어로 웹 애플리케이션을 제공할 수 있습니다.

1. settings.py 파일 설정

Django의 인터내셔널리제이션을 활성화하기 위해 settings.py 파일에서 다음과 같이 설정합니다.

LANGUAGE_CODE = 'ko-kr'  # 기본 언어 설정
USE_I18N = True  # 인터내셔널리제이션 사용

2. 번역 파일 생성

번역할 언어의 번역 파일을 생성해야 합니다. manage.py 파일이 있는 디렉토리에서 다음 명령을 실행하여 번역 파일을 생성합니다.

python manage.py makemessages -l ko

이 명령은 locale/ko/LC_MESSAGES 디렉토리에 django.po 파일을 생성합니다.

3. 번역 파일 수정

생성된 django.po 파일을 편집하여 번역할 문구를 추가하거나 수정합니다.

msgid "Hello, World!"
msgstr "안녕, 세계!"

4. 번역 파일 컴파일

번역 파일을 컴파일하여 사용 가능한 형식(.mo 파일)으로 변환해야 합니다. manage.py 파일이 있는 디렉토리에서 다음 명령을 실행합니다.

python manage.py compilemessages

이 명령은 .mo 파일을 생성하고 번역된 내용을 사용할 수 있도록 준비합니다.

5. 템플릿에서 번역 적용

템플릿 파일에서 번역을 적용하려면 trans 템플릿 태그를 사용해야 합니다.


{% load i18n %}

<p>{% trans "Hello, World!" %}</p>

6. 런타임에서 언어 변경

애플리케이션을 실행할 때 원하는 언어로 설정하기 위해 쿠키, 세션, 또는 URL 매개변수를 사용할 수 있습니다. Django는 이러한 기능들을 지원합니다.

from django.utils.translation import activate, get_language

def set_language(request):
    language = request.GET.get('lang')
    if language:
        activate(language)  # 언어 변경
    return redirect('/')

def view(request):
    current_language = get_language()  # 현재 언어 확인
    # ...

참고 자료