tklibによる多国語対応
公開対象: 一般
概要
tklibで tkApplication を利用することにより、簡単に多国語対応アプリを作ることができます。
必要ファイル
tklib
多国語化の方針
言語コードの利用 言語をISO639 言語コード(参考: 言語コード一覧)で識別します。 例:日本語は
ja、英語はen。tkApplicationオブジェクトの作成
tkApplicationオブジェクト(例:app)を作成し、設定パラメータオブジェクト(tkParams型)app.configparamsを用意します。 言語情報をtkParams型変数に入れることで、設定ファイルへの保存・呼び出しが容易になります。言語の設定
app.configparams.langに言語コードを設定します。localeファイル(JSON形式)による管理 各国語の単語やメッセージは locale ファイルにJSON形式で保存します。 例えば日本語の情報を読み出す場合は
phrases_ja.jsonを読み込み、辞書型変数app.phrasesに保存します。app.phrases の構造例:
app.phrases = { 'help_fig_height': { 'ja': 'グラフウィンドウの高さ. 初期値: 8', 'en': 'Height of graph window. Default: 8' }, 'default': {'ja': '初期値'}, 'help': {'ja': 'ヘルプ'}, 'open': {'ja': 'ファイル選択'}, 'ed': {'ja': '編集'} }
翻訳メソッド app.p(str) の利用
app.p(str)により、文字列strを設定された言語に翻訳して返します。class tkApplication 内の実装イメージ: .. code-block:: python
- def p(self, str, defval=None, phrases=None):
- if phrases is None:
phrases = self.phrases
s = phrases.get(str, defval) if s is None:
return str
s = s.get(self.configparams.lang, defval) if s is None:
return str
return s
表示の多言語化
print()などのコンソール出力やGUIの表示ラベルなどを、必要に応じてapp.p(str)に通すことで多言語化を実現します。