[파이썬] 웹 프레임워크를 이용한 국제화(i18n) 처리

소개

국제화(i18n)는 웹 애플리케이션에서 다국어 지원을 제공하는 중요한 기능입니다. 사용자들에게 언어 설정에 따라 적절한 번역을 제공함으로써 전 세계 사용자들과 소통할 수 있습니다. 이번 글에서는 Python 웹 프레임워크를 이용하여 국제화를 처리하는 방법에 대해 알아보겠습니다.

Flask를 이용한 국제화 처리 방법

1. Flask-Babel 설치

pip install flask-babel

2. 기본 설정

from flask import Flask
from flask_babel import Babel

app = Flask(__name__)
babel = Babel(app)

app.config['BABEL_DEFAULT_LOCALE'] = 'en'
app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC'

3. 번역 파일 준비

/translations 디렉토리를 생성하고, 각 언어별 디렉토리를 만듭니다. 예를 들어, 한국어 번역 파일은 /translations/ko/LC_MESSAGES/messages.mo 형식으로 저장합니다.

4. 번역 함수 사용

from flask_babel import gettext

@app.route('/')
def hello():
    message = gettext('Hello, world!')
    return message

5. 번역 문자열 추출

pybabel extract -F babel.cfg -o messages.pot .
pybabel init -i messages.pot -d translations -l ko

6. 번역 진행

messages.pot 파일을 열어서 번역할 문구들을 번역 파일에 추가합니다. 번역 파일은 .po 형식이며, 완료되면 .mo 형식으로 변환합니다.

7. 언어 설정

사용자의 언어 설정을 기반으로 웹 애플리케이션의 언어를 동적으로 변경합니다.

@babel.localeselector
def get_locale():
    user_locale = # 사용자 언어 설정 값 가져오기
    return user_locale

8. 언어 선택 기능 추가

<ul>
  <li><a href="/?lang=en">English</a></li>
  <li><a href="/?lang=ko">한국어</a></li>
</ul>

Django를 이용한 국제화 처리 방법

Django는 웹 프레임워크 자체에 국제화 기능을 내장하고 있습니다. 아래는 간단한 예제입니다.

1. 설정

settings.py 파일에서 다음과 같이 사용할 언어를 설정합니다.

LANGUAGE_CODE = 'en-us'

LOCALE_PATHS = [
    '/path/to/translations',
]

2. 번역 함수 사용

from django.utils.translation import gettext as _

def hello(request):
    message = _('Hello, world!')
    return HttpResponse(message)

3. 번역 파일 준비

Django의 makemessages 명령어를 사용하여 번역할 문자열을 추출합니다.

python manage.py makemessages -l ko

/path/to/translations/ko/LC_MESSAGES/django.po 파일에 번역할 문자열을 추가하고 번역합니다.

4. 언어 설정

사용자의 언어 설정을 기반으로 웹 애플리케이션의 언어를 동적으로 변경합니다.

def set_language(request):
    user_language = request.GET.get('lang')
    # 언어 설정 저장
    return HttpResponseRedirect('/')

5. 언어 선택 기능 추가


<ul>
  <li><a href="{% url 'set_language' %}?lang=en">English</a></li>
  <li><a href="{% url 'set_language' %}?lang=ko">한국어</a></li>
</ul>

결론

Python의 Flask와 Django 웹 프레임워크를 이용하여 웹 애플리케이션에서 국제화 처리를 간편하게 할 수 있습니다. 사용자의 언어 설정을 기반으로 적절한 번역을 제공하여 다국어 사용자들과 소통할 수 있는 웹 애플리케이션을 개발해보세요.