[python] PyQt에서의 언어 번역 기능 구현

PyQt는 Python으로 작성된 GUI 프레임워크로, 다양한 기능을 제공합니다. 이 중에서도 언어 번역 기능을 구현할 수 있는 방법에 대해 알아보겠습니다.

QTranslator 클래스 사용하기

PyQt에서 언어 번역을 위해서는 QTranslator 클래스를 사용해야 합니다. 이 클래스는 .ts 파일로부터 번역 데이터를 읽어올 수 있으며, 번역된 텍스트를 얻을 수 있는 기능을 제공합니다.

from PyQt5.QtCore import QTranslator, QLocale

# 언어 설정
locale = QLocale.system()

# 번역 파일 로드
translator = QTranslator()
translator.load("translations/example_{0}.qm".format(locale.name()))

# 언어 번역 적용
app.installTranslator(translator)

위의 코드는 시스템의 언어 설정(QLocale.system())을 가져와 해당 언어의 번역 파일을 로드하는 방법을 보여줍니다. 이를 통해 언어 설정에 따라 앱의 텍스트가 자동으로 번역됩니다.

번역 파일 작성하기

PyQt의 언어 번역 파일은 .ts 형식으로 작성됩니다. lupdate 툴을 사용하여 소스 코드에서 번역이 필요한 문자열을 추출하고, 추출된 문자열을 번역하여 .ts 파일을 생성할 수 있습니다.

아래는 번역 파일 작성 예시입니다.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ko_KR">
<context>
    <name>MainWindow</name>
    <message>
        <location filename="mainwindow.ui" line="14"/>
        <source>My App</source>
        <translation>내 앱</translation>
    </message>
</context>
</TS>

위의 예시에서는 MainWindow이라는 이름의 컨텍스트에서 번역이 필요한 문자열을 정의하고 있습니다. <source> 태그는 원본 텍스트이고, <translation> 태그는 해당 언어로 번역된 텍스트를 나타냅니다.

번역된 텍스트 사용하기

PyQt에서 번역된 텍스트를 사용하기 위해서는 tr() 함수를 사용해야 합니다. 이 함수는 현재 언어에 따라 번역된 텍스트를 반환합니다.

from PyQt5.QtCore import QCoreApplication

# 번역된 텍스트 사용
text = QCoreApplication.translate("MainWindow", "My App")

위의 코드에서는 QCoreApplication.translate() 함수를 사용하여 MainWindow 컨텍스트에 있는 “My App” 문자열을 현재 언어로 번역된 텍스트로 반환하고 있습니다.

결론

PyQt에서 언어 번역 기능을 구현하기 위해서는 QTranslator 클래스를 사용하여 번역 파일을 로드하고, tr() 함수를 사용하여 번역된 텍스트를 얻어와야 합니다. 이를 통해 다국어 지원이 가능한 앱을 개발할 수 있습니다.