この記事では、PythonでGUIアプリケーションを作成する際によく用いられるライブラリであるPyQtにおける国際化(I18N)と翻訳(L10N)の具体的な実装方法について解説します。コードの詳細な解説、応用例を2つ以上、そして国際化と翻訳における補足事項を交えながら説明します。
はじめに
国際化(I18N)とは、ソフトウェアが多言語に対応できるように設計・実装するプロセスのことです。翻訳(L10N)は、具体的な言語と地域に合わせてアプリケーションをローカライズする作業です。PyQtでアプリケーションを開発する際、国際化と翻訳を行うことで、世界中のユーザーにとって使いやすいアプリケーションを作ることができます。
基本的な国際化の設定
まずは基本的な国際化の設定から始めます。
PyQtの言語リソースファイルの作成
Qt Linguistというツールを使用して、.tsという拡張子を持つ言語リソースファイルを作成します。このファイルには翻訳されるべき文字列とその翻訳が含まれます。
# linguist.py
from PyQt5.QtCore import QCoreApplication
_translate = QCoreApplication.translate
def hello_world():
print(_translate("main", "Hello, World!"))
Qt Linguistでのリソースファイル作成手順
1. Qt Linguistを起動する
2. 新しいプロジェクトを作成し、.tsファイルを生成する
3. 対象のPythonファイル(linguist.pyなど)を読み込む
4. 翻訳したい文字列を指定し、その翻訳を入力する
5. .tsファイルを保存する
リソースファイルをコンパイル
作成した.tsファイルを.qmファイルにコンパイルします。これには`pylupdate`と`lrelease`というコマンドラインツールを使用します。
# コマンドラインで実行
pylupdate5 linguist.pro
lrelease linguist.pro
応用例
以下では、PyQtで国際化を応用した2つの具体例について説明します。
動的な言語切り替え
この例では、アプリケーション実行中に言語を切り替える方法を示します。
# dynamic_language_switch.py
from PyQt5.QtCore import QTranslator, QLocale
def switch_language(app, locale):
translator = QTranslator()
translator.load(f"linguist_{locale}.qm")
app.installTranslator(translator)
プラットフォームごとの翻訳
各プラットフォーム(Windows, macOS, Linux)に合わせて翻訳を行う例です。
# platform_specific_translation.py
import sys
from PyQt5.QtCore import QTranslator
def platform_translation(app):
if sys.platform == 'win32':
locale = 'en_US'
elif sys.platform == 'darwin':
locale = 'ja_JP'
else:
locale = 'zh_CN'
translator = QTranslator()
translator.load(f"linguist_{locale}.qm")
app.installTranslator(translator)
まとめ
PyQtを用いてアプリケーションの国際化と翻訳を行う際の基本的な手法と応用例について説明しました。これらの方法を用いることで、多言語に対応した使いやすいアプリケーションを作成することができます。
コメント