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) に通すことで多言語化を実現します。