[python] 파이썬을 이용한 웹 애플리케이션의 국제화 방법

국제화(Internationalization, i18n)는 웹 애플리케이션을 다국어 및 지역에 대해 대응 가능하게 하는 프로세스입니다. 파이썬을 사용하여 웹 애플리케이션을 국제화하는 방법을 알아보겠습니다.

1. 언어 코드 사용

다국어 지원을 위해 지원할 언어의 코드를 정의하고, 해당 언어에 대한 번역 텍스트를 관리해야 합니다. 파이썬의 gettext 모듈은 이러한 작업을 간편하게 할 수 있도록 지원합니다.

from flask import Flask, request, g
from flask_babel import Babel, _
app = Flask(__name__)
babel = Babel(app)

@babel.localeselector
def get_locale():
    return request.accept_languages.best_match(['en', 'fr'])

@app.route('/')
def index():
    return _("Hello, World!")

2. 번역 파일 작성

gettext을 사용하여 번역 파일을 작성합니다. 해당 언어 코드에 맞는 디렉터리와 messages.po 파일을 생성하고 번역을 작성합니다.

locale/
├── en/
│   └── LC_MESSAGES/
│       └── messages.po
└── fr/
    └── LC_MESSAGES/
        └── messages.po

3. 번역 파일 컴파일

작성한 번역 파일을 컴파일하여 실제로 어플리케이션에서 사용할 수 있는 형식으로 변환합니다.

pybabel compile -d locale -D messages

4. 템플릿에서 번역 사용

플라스크(Flask)와 함께 Babel을 사용하여 템플릿에서 번역된 문구를 사용합니다.


<!DOCTYPE html>
<html>
    <body>
        <h1>{{ _('Hello, World!') }}</h1>
    </body>
</html>

이와 같은 방법을 통해 파이썬으로 작성된 웹 애플리케이션의 국제화를 간단하게 처리할 수 있습니다.

이러한 과정 외에도, 날짜 형식, 통화, 숫자 형식 등의 지역화 처리에 대한 고려가 필요합니다. 또한, 문자열의 하드코딩을 피하고, 번역 메모리(memory)도 축적하는 것이 중요합니다. 이러한 지식을 토대로, 웹 애플리케이션을 효과적으로 국제화할 수 있습니다.

참고 자료