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