[python] cx_Freeze를 사용하여 작성한 실행 파일의 다국어 지원 방법

cx_Freeze는 파이썬 프로그램을 standalone 실행 파일로 변환해 주는 유용한 도구입니다. 다국어 지원은 대부분의 소프트웨어에서 중요한 요소이며, cx_Freeze를 통해 작성한 실행 파일에서도 다국어를 지원할 수 있습니다. 이 글에서는 cx_Freeze와 함께 다국어를 지원하는 방법에 대해 알아보겠습니다.

다국어 번역 파일 준비

다국어 지원을 위해서는 각 언어별로 번역된 파일을 준비해야 합니다. 보통 .po 파일 형식으로 준비하며, 이 파일들은 gettext라는 파이썬 라이브러리를 사용하여 처리됩니다.

먼저, 프로젝트 폴더에 locale이라는 폴더를 생성하고 locales라는 하위 폴더를 만듭니다. 각 언어별로 폴더를 생성하고 그 안에 .po 파일을 넣어두면 됩니다. 예를 들어, 한국어로 번역된 파일은 locale/ko_KR/LC_MESSAGES/messages.po와 같은 경로에 위치시킬 수 있습니다.

번역 파일 컴파일

.po 파일을 .mo 파일로 컴파일하여 사용합니다. 이렇게 컴파일된 파일들은 실행 파일이 번역 문구를 가져오는 데 사용됩니다. 다음의 명령어를 사용하여 .po 파일을 컴파일합니다.

msgfmt -o locale/ko_KR/LC_MESSAGES/messages.mo locale/ko_KR/LC_MESSAGES/messages.po

각 언어별로 .po 파일을 컴파일해 줍니다. 이렇게 컴파일된 .mo 파일들은 .py 파일에서 로드될 것입니다.

cx_Freeze 설정 파일 수정

이제 cx_Freeze 설정 파일을 수정하여 다국어 번역을 지원할 수 있도록 해봅시다. 설정 파일은 보통 setup.py라는 이름으로 저장되며, 다음과 같은 내용으로 작성됩니다.

import sys
from cx_Freeze import setup, Executable

# 실행 파일에 포함시킬 모듈과 패키지들
includes = []
excludes = []
packages = []
build_exe_options = {"includes": includes, "excludes": excludes, "packages": packages}

# 실행 파일 설정
exe = Executable(
    script="main.py",
    base=None,  # 실행 파일의 기본 동작을 지정합니다. 일반적으로 None으로 설정합니다.
    targetName="app.exe",  # 생성되는 실행 파일의 이름을 지정합니다.
    icon="icon.ico",  # 실행 파일 아이콘의 경로를 지정합니다.
)

# cx_Freeze 설정
setup(
    name="MyApp",
    version="1.0",
    description="My Application",
    options={"build_exe": build_exe_options},
    executables=[exe],
    locale = ["locale"]  # 다국어 번역 파일의 경로를 지정합니다.
)

위의 설정 파일에서 중요한 부분은 locale 옵션입니다. 해당 옵션은 locale 폴더의 경로를 지정하여 번역 파일들을 실행 파일에 포함시킵니다.

번역 사용하기

이제 다국어 번역을 사용하는 방법에 대해 알아보겠습니다. 프로그램의 어디에서든지 번역된 문자열을 사용하려면, gettext 라이브러리를 이용하여 번역을 처리해야 합니다.

import gettext

# 번역을 위한 초기화
t = gettext.translation("messages", localedir="locale", fallback=True)
_ = t.gettext

# 번역된 문자열 사용
print(_("Hello, World!"))

위의 코드에서 localedir 매개변수에는 번역 파일들이 위치한 폴더 경로를 입력합니다. 이렇게 하면 번역 파일이 사용되고 해당 언어에 맞는 문구가 출력됩니다.

실행 파일 빌드

마지막으로 cx_Freeze를 사용하여 실행 파일을 빌드합니다. 이를 위해 다음과 같이 명령어를 실행합니다.

python setup.py build

위의 명령어를 실행하면 build 폴더에 다국어를 지원하는 실행 파일이 생성될 것입니다.

마무리

이제 cx_Freeze를 사용하여 작성한 실행 파일에서 다국어를 지원하는 방법에 대해 알아보았습니다. cx_Freeze를 활용하여 다국어 지원 기능을 추가하면 사용자들에게 더욱 편리한 프로그램을 제공할 수 있습니다.

더 자세한 내용은 cx_Freeze 문서를 참고하시기 바랍니다.