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

안녕하세요! 이번에는 파이썬을 사용하여 웹 서버에 다국어 지원 기능을 추가하는 방법에 대해 알아보겠습니다.

1. Flask 웹 프레임워크 설치하기

먼저, 다국어 지원 기능을 추가하기 위해 Flask 웹 프레임워크를 설치해야 합니다. 다음 명령어를 사용하여 Flask를 설치합니다.

pip install Flask

2. 언어별로 번역 파일 준비하기

각각의 언어에 대한 번역 파일을 준비해야 합니다. 예를 들어, 한국어와 영어에 대한 번역 파일을 준비한다면 messages_ko.inimessages_en.ini와 같은 형식으로 파일을 준비합니다.

아래는 messages_ko.ini의 예시입니다.

[nav]
home = 
about = 소개
contact = 연락

[content]
welcome_message = 환영합니다!

3. Flask 애플리케이션 설정하기

Flask 애플리케이션을 설정할 때, 기본 언어를 설정하고 다국어 지원을 활성화해야 합니다. 다음은 Flask 애플리케이션의 예시입니다.

from flask import Flask, render_template, request
from flask_babel import Babel

app = Flask(__name__)
app.config['BABEL_DEFAULT_LOCALE'] = 'ko'
babel = Babel(app)

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

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

위의 코드에서 Babel은 Flask에서 다국어 지원을 도와주는 라이브러리입니다. 여기에서 기본 언어를 한국어로 설정하고, 요청에 따라 언어를 선택합니다.

4. HTML 템플릿 작성하기

이제 HTML 템플릿에서 다국어를 지원할 수 있도록 작성해보겠습니다. 다음은 index.html의 예시입니다.


<!DOCTYPE html>
<html lang="{{ language }}">
<head>
    <meta charset="UTF-8">
    <title>{{ _('My Website') }}</title>
</head>
<body>
    <nav>
        <ul>
            <li><a href="#">{{ _('Home') }}</a></li>
            <li><a href="#">{{ _('About') }}</a></li>
            <li><a href="#">{{ _('Contact') }}</a></li>
        </ul>
    </nav>
    <div>
        <h1>{{ _('Welcome') }}</h1>
        <p>{{ _('Welcome to my website!') }}</p>
    </div>
</body>
</html>

위의 코드에서 {{ language }}{{ _('...') }}는 플라스크에서 제공하는 템플릿 문법입니다. {{ language }}는 현재 언어를 출력하고, {{ _('...') }}는 해당 문자열을 번역합니다.

5. 번역 파일 로드하기

app 폴더 내에 translations 폴더를 생성하고, 각 언어별로 LC_MESSAGES 폴더를 만듭니다. 예를 들어, 한국어의 경우 ko_KR 폴더를 만들고 그 안에 messages.mo 파일을 저장합니다.

다음은 번역 파일을 로드하는 코드입니다. app 폴더 내에서 실행해야 합니다.

pybabel compile -d translations

6. 다국어 지원 기능 테스트하기

이제 다국어 지원 기능을 테스트해볼 차례입니다. 다음 명령어로 Flask 애플리케이션을 실행합니다.

python app.py

브라우저에서 http://localhost:5000을 열어서 웹 페이지를 확인하세요. URL에 /en을 추가하여 영어로 번역된 페이지를 확인할 수도 있습니다.

마무리

이렇게 Flask를 사용하여 웹 서버에 다국어 지원 기능을 추가하는 방법을 알아보았습니다. 이를 응용하여 다양한 언어에 대한 번역 파일을 추가하고 나만의 다국어 웹 서비스를 만들어보세요!

참고 자료