[파이썬] `PyQt`의 국제화 및 다국어 지원

다국어 지원은 다양한 언어로 작성된 사용자 인터페이스(UI)를 제공하는 애플리케이션에는 필수적인 기능입니다. PyQt는 Qt 프레임워크를 사용하여 개발된 Python 바인딩 라이브러리로, 풍부한 다국어 지원 기능을 제공합니다. PyQt를 사용하면 언어별로 번역된 텍스트, 지역화된 숫자, 시간 및 날짜 형식, 로캘 지원 등 다국어 지원을 쉽게 구현할 수 있습니다.

언어별 번역된 텍스트

PyQt에서 텍스트 번역은 Qt의 번역 시스템을 기반으로 동작합니다. 번역 가능한 문자열은 tr() 메서드로 묶어 표시하고, 이를 번역 파일에 등록합니다. 번역 파일은 .ts 확장자를 가지며, Qt Linguist 도구를 사용하여 생성할 수 있습니다. 번역 파일은 각 언어별로 독립적으로 생성되며, 이후 .qm 바이너리 파일로 컴파일됩니다. PyQt는 번역 파일을 읽어와 해당 언어로 텍스트를 자동으로 번역합니다.

from PyQt5.QtCore import QTranslator, QLocale, QLibraryInfo

translator = QTranslator()
locale = QLocale.system().name()  # 현재 시스템의 로케일 언어

# 번역 파일 로드
translator.load('app_' + locale, QLibraryInfo.location(QLibraryInfo.TranslationsPath))

# 애플리케이션에 번역기 적용
app.installTranslator(translator)

# 번역 가능한 문자열 사용
label.setText(tr("Hello World!"))

지역화된 숫자, 시간 및 날짜 형식

PyQt는 QLocale 클래스를 통해 숫자 및 날짜 시간 형식을 지역화할 수 있는 기능을 제공합니다. QLocale 객체를 생성하고 원하는 언어 및 국가 설정을 지정한 다음, 해당 객체를 사용하여 텍스트를 형식화합니다.

from PyQt5.QtCore import QLocale

locale = QLocale(QLocale.Korean, QLocale.Korea)

# 숫자 형식 설정
print(locale.toString(1234.56, 'f'))  # 1,234.56

# 날짜 및 시간 형식 설정
print(locale.toString(QDateTime.currentDateTime(), 'yyyy-MM-dd'))  # 2021-10-31
print(locale.toString(QDateTime.currentDateTime(), 'hh:mm:ss'))  # 12:34:56

로캘 지원

로캘(Locale)은 지역 문화와 관련된 정보를 제공하는 객체입니다. PyQt에서는 QLocale을 통해 로캘 정보를 가져올 수 있습니다. 로캘을 사용하면 언어, 국가, 통화 등의 정보를 애플리케이션에서 활용할 수 있습니다.

from PyQt5.QtCore import QLocale

locale = QLocale.system()

print(locale.language())  # 현재 로캘의 언어 코드 반환
print(locale.country())  # 현재 로캘의 국가 코드 반환
print(locale.currencySymbol())  # 현재 로캘의 통화 기호 반환
print(locale.nativeLanguageName())  # 현재 로캘의 언어 이름 반환

결론

PyQt를 사용하면 국제화와 다국어 지원을 쉽게 구현할 수 있습니다. 다양한 언어로 제작된 애플리케이션을 개발하고, 번역된 텍스트, 지역화된 숫자, 시간 및 날짜 형식, 로캘 정보 등을 적용하여 사용자들에게 편리한 경험을 제공할 수 있습니다. PyQt의 다국어 지원 기능을 잘 활용하여 세계 각국의 사용자들에게 인터페이스를 제공해보세요!