[python] 웹 서버에 다중 언어 지원 기능 추가하기

소개

웹 서버에 다중 언어 지원 기능을 추가하여 사용자들에게 웹 페이지를 여러 언어로 제공할 수 있습니다. 이를 통해 전 세계의 사용자들에게 편리한 서비스를 제공할 수 있습니다.

필요한 라이브러리 설치하기

Python에서 웹 서버를 구축할 때 다음과 같은 라이브러리들이 필요합니다:

먼저, 필요한 라이브러리를 설치해야 합니다. 터미널 또는 명령 프롬프트를 열고 다음 명령어를 실행합니다:

pip install Flask Flask-Babel

기본 설정하기

다음으로 Flask-Babel을 초기화하고 기본 언어를 설정해야 합니다. Flask 애플리케이션 파일(app.py 또는 main.py 등)에 다음 코드를 추가합니다:

from flask import Flask
from flask_babel import Babel

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

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

기본 언어를 ‘en’로 설정하였지만, 필요에 따라 원하는 언어로 변경할 수 있습니다.

다중 언어 지원 파일 관리하기

각 언어에 대한 번역된 텍스트는 별도의 파일로 관리됩니다. 예를 들어, 다음과 같은 구조로 파일을 관리할 수 있습니다:

- translations/
  - en/
    - LC_MESSAGES/
      - messages.po
      - messages.mo
  - ko/
    - LC_MESSAGES/
      - messages.po
      - messages.mo
  - fr/
    - LC_MESSAGES/
      - messages.po
      - messages.mo

각 언어 폴더(en/, ko/, fr/)에는 LC_MESSAGES 폴더가 있으며, 이 폴더에 번역된 텍스트 파일(messages.pomessages.mo)이 저장됩니다.

언어 설정하기

애플리케이션에 다중 언어 지원을 추가하려면 언어 설정을 사용자에게서 가져와야 합니다. 일반적으로는 사용자의 웹 브라우저 설정이나 사용자 세션 정보에서 언어 설정을 확인합니다. 다음은 사용자 세션을 이용한 언어 설정 예제입니다:

from flask import request, session

def get_user_language():
    # 세션에서 언어 설정 가져오기
    user_language = session.get('language')

    # 세션에 언어 설정이 없을 경우 웹 브라우저 설정 사용
    if not user_language:
        user_language = request.accept_languages.best_match(['en', 'ko', 'fr'])

    return user_language

번역된 텍스트 사용하기

번역된 텍스트를 사용하기 위해서는 다음과 같은 과정을 거쳐야 합니다:

  1. babel.get_locale() 메소드를 사용하여 현재 언어 설정을 가져옵니다.
  2. gettext 함수를 사용하여 번역된 텍스트를 가져옵니다.

다음은 간단한 예제입니다:

from flask_babel import gettext

@app.route('/')
def index():
    # 현재 언어 설정 가져오기
    user_language = babel.get_locale()

    # 번역된 텍스트 가져오기
    hello_message = gettext('Hello, World!')

    return f'[{user_language}] {hello_message}'

번역 파일 업데이트하기

번역 파일(messages.po)을 업데이트하려면 다음 명령어를 실행합니다:

flask translate update

이 명령어를 실행하면 app.py 파일에서 텍스트를 추출하여 messages.po 파일이 업데이트됩니다. 업데이트 이후에는 해당 파일을 번역해야 합니다.

번역 확인하기

번역된 텍스트를 확인하려면 다음 명령어를 실행하여 번역된 텍스트 파일(messages.mo)을 생성합니다:

flask translate compile

번역된 텍스트를 확인하면서 문제가 발생할 경우 messages.po 파일을 수정하고 다시 컴파일해야 합니다.

결론

이제 다중 언어 지원 기능을 웹 서버에 추가했습니다. 사용자에게 다양한 언어로 웹 페이지를 제공하여 사용자 경험을 향상시킬 수 있습니다. Flask-Babel을 사용하면 간단하게 다중 언어 기능을 구현할 수 있으며, 번역 파일 관리와 텍스트 사용에 대한 지원을 제공합니다.

참고 자료