[파이썬] web2py에서의 국제화(i18n)

Web2py는 파이썬 웹 애플리케이션 프레임워크로, 사용자의 국제화 요구사항을 처리하는 내장된 기능을 제공합니다. 이를 통해 애플리케이션을 다국어로 제공하고 언어에 따라 텍스트 및 메시지를 동적으로 번역할 수 있습니다.

국제화 설정

web2py에서 국제화를 사용하려면 애플리케이션의 기본 세팅을 변경해야 합니다. 이를 위해 routes.py 파일을 열고 다음과 같은 내용을 추가합니다:

routers = dict(
    BASE = dict(default_application='myapp', function='index'),
)

위 코드는 기본으로 myapp 애플리케이션을 사용하며, index 함수를 기본으로 설정합니다. myapp은 본인이 사용하는 애플리케이션 이름으로 변경해야 합니다.

번역 파일 생성

번역할 텍스트 및 메시지를 저장하기 위해, 각 언어에 해당하는 번역 파일을 생성해야 합니다. 이를 위해 다음 단계를 따릅니다:

  1. myapp 폴더 내에 languages 폴더를 생성합니다.
  2. languages 폴더 내에 언어별 폴더를 생성합니다. 예를 들어, 영어를 위한 폴더 이름은 en, 중국어를 위한 폴더 이름은 zh와 같습니다.
  3. 각 언어별 폴더 내에 *.py 파일을 생성합니다. 이 파일은 언어에 해당하는 번역을 저장하는 파일입니다.

각 언어별 *.py 파일에는 다음과 같이 번역할 텍스트를 정의할 수 있습니다:

# languages/en/default.py
{
    'Hello World': 'Hello World',
    'Welcome to myapp': 'Welcome to myapp',
    'Login': 'Login',
    # ...
}

템플릿에서 번역 사용하기

web2py 템플릿에서 번역을 사용하려면, 다음과 같은 코드를 사용합니다:


{{=T('Hello World')}}

위 코드는 Hello World라는 텍스트를 번역하는 역할을 합니다. T() 함수를 사용하여 번역 텍스트를 지정하고, = 기호를 사용하여 해당 텍스트를 출력합니다.

컨트롤러에서 번역 사용하기

web2py 컨트롤러에서 번역을 사용하려면, 다음과 같은 코드를 사용합니다:

def index():
    message = T('Welcome to myapp')
    return dict(message=message)

위 코드는 Welcome to myapp라는 번역된 텍스트를 message 변수에 할당합니다. 이 변수는 템플릿에서 사용될 수 있습니다.

언어 설정

web2py는 브라우저의 Accept-Language 헤더를 자동으로 감지하여 언어를 결정합니다. 하지만, 브라우저에서 전달되는 헤더가 없는 경우 또는 특정 언어를 선택하고 싶은 경우, 다음 단계를 따를 수 있습니다:

  1. languages 폴더 내에서 en.py와 같은 언어 파일을 선택하고 텍스트를 번역합니다.
  2. routes.py 파일에 다음과 같이 request.set_language를 추가합니다:
def set_language():
    language = request.args(0)
    if language:
        request.set_language(language)
    return redirect(URL('default', 'index'))

위 코드는 URL에 set_language/en와 같은 경로를 추가하여 해당 언어로 설정하는 역할을 합니다. 주소 경로의 en 부분을 다른 언어로 변경하여 다른 언어로 설정할 수 있습니다.

결론

web2py에서는 국제화 기능을 쉽게 사용할 수 있으며, 다국어 애플리케이션을 구축하는 데 필요한 도구와 지원을 제공합니다. 번역 파일을 생성하고 템플릿 및 컨트롤러에서 번역을 적용하여 다중 언어 지원을 적용할 수 있습니다. 이를 통해 사용자의 언어에 맞춰 텍스트와 메시지를 동적으로 제공할 수 있습니다.