[파이썬] Flask-Babel 확장

Flask-Babel은 Flask 애플리케이션에서 다국어 지원을 제공하는 확장입니다. 다양한 언어로 작성된 웹 애플리케이션을 개발하고자 할 때 Flask-Babel을 사용하면 간편하게 다국어 지원을 구현할 수 있습니다.

Flask-Babel 설치

Flask-Babel을 사용하기 위해 먼저 Flask 및 Babel을 설치해야 합니다. 만약 가상 환경을 사용한다면 가상 환경에 Flask 및 Babel을 설치하는 것이 좋습니다.

pip install Flask
pip install Flask-Babel

Flask-Babel 설정

Flask-Babel을 사용하기 위해서는 Flask 애플리케이션의 설정에서 필요한 옵션들을 정의해야 합니다. 다음은 Flask-Babel 확장을 사용하기 위한 설정 예시입니다.

from flask import Flask
from flask_babel import Babel

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

app.config['BABEL_DEFAULT_LOCALE'] = 'en'
app.config['BABEL_SUPPORTED_LOCALES'] = ['en', 'fr', 'es']

위의 예시에서 BABEL_DEFAULT_LOCALE은 기본 언어를 설정하고, BABEL_SUPPORTED_LOCALES은 지원하는 언어 목록을 설정합니다. 이를 통해 Flask-Babel은 애플리케이션을 선호하는 언어로 표시하고, 사용자가 다른 언어로 변경하도록 선택할 수 있도록 합니다.

다국어 지원

Flask-Babel을 사용하여 다국어 지원을 구현할 수 있습니다. 다음은 Flask-Babel에서 제공하는 기능들의 예시입니다.

번역 문자열

Flask-Babel을 사용하여 애플리케이션에서 번역할 문자열을 정의할 수 있습니다. gettext 함수를 사용하여 번역할 문자열을 표시합니다.

from flask_babel import gettext

message = gettext('Hello, world!')

언어 변경

사용자가 원하는 언어로 변경하기 위해 Flask-Babel은 babel.localeselector 데코레이터를 제공합니다. 이 데코레이터를 사용하여 Flask 애플리케이션의 언어 선택 로직을 정의할 수 있습니다.

from flask_babel import Babel, lazy_gettext

@babel.localeselector
def get_locale():
    # 언어 선택 로직
    return request.accept_languages.best_match(app.config['BABEL_SUPPORTED_LOCALES'])

HTML에서 번역

HTML 템플릿에서 번역 문자열을 표시하려면 {{ _('번역할 문자열') }} 형식으로 사용합니다.


<h1>{{ _('Welcome to Flask-Babel') }}</h1>

결론

Flask-Babel 확장은 Flask 애플리케이션에서 다국어 지원을 쉽게 구현할 수 있도록 도와줍니다. 번역 문자열, 언어 선택, HTML 템플릿에서의 번역 표시 등 다양한 기능을 제공합니다. Flask-Babel을 사용하여 웹 애플리케이션을 다국어 환경에서 개발할 때 편리하게 사용할 수 있습니다.