gettext Translator – .po ファイルの翻訳をサポートするソフト

Python の gettext モジュールで扱う .po ファイルの翻訳をサポートします。gettext は、Python アプリケーションの国際化 (翻訳) を行うためのものです。

当ソフトの特徴として、翻訳内容を JSON 形式でエクスポートしたりインポートしたりすることができます。テンプレートである .pot ファイルの作成機能や、バイナリ形式となる .mo ファイルへの変換機能もあります。


1. 最新版ダウンロード (uploader.jp)

※必須環境: Python 3.9 以上 3.11 以下

  • MD5: 7d71e67b9b6ebe8e5e8e45bb9dfd27e5
  • SHA256: 34bfa5f07576ce5a945b12f7d3e13fa246c014acd5f4428fa3f3a62edacede5c

2. 使い方

2-1. インストール・アンインストール

ダウンロードした zip ファイルを任意の場所に解凍し、”gettextTranslator.pyw” を実行してください。Python 3.9 以上 3.11 以下が導入されている環境で動作します。Windows10にて動作確認しています。

アンインストールの際は、フォルダごと削除してください。


※2023/11/19 注記 ; Python 3.12 もインストールされている環境において、pygettext.py が同梱されていないことにより、一部の機能が正常に動作しないことを確認しております。お使いの Python のバージョンに合わせて、gettextTranslator.pyw の1行目を以下のように書き換えてご利用ください。(例は 3.11 の場合)

#! /usr/bin/python3.11 -I -S -OO

コマンドプロンプト、もしくはショートカットから起動する場合には、以下のようにバージョンを指定することでも解決できます。

pyw -3.11 gettextTranslator.pyw

2-2. 翻訳の準備

翻訳を行うためには、コードに含まれる対象文字列を _(‘Hello’) のようにアンダーバーと括弧で囲んでおきます。そして、アプリケーションを実行して最初に呼び出される関数 (通常は main 関数) に、以下のような記述を組み入れます。

from gettext import translation, install
from pathlib import Path

def main():
    _translation = translation(
        'messages',                                            # .mo ファイル名
        localedir = Path(__file__).parent.joinpath('locale'),  # 翻訳ファイルを入れるディレクトリ
        languages = ['ja-JP'],                                 # 日本語の指定
        fallback = True,                                       # 翻訳データがないときに原文を表示する設定
    )

    _translation.install()

if __name__ == '__main__':
    main()

コードは1例です。詳しくは gettext — 多言語対応に関する国際化サービス をご覧ください。

2-3. テンプレートファイル (.pot) の作成

.pot は、翻訳対象の文字列がリストアップされたファイルです。これを基にして各言語への翻訳を行います。

当ソフトを起動して「新規 .pot」を押すと、作成ダイアログが開きます。

起動画面
.pot 作成ダイアログ

ダイアログ右上の「ファイル…」ボタンから翻訳したい .py ファイルを選択します。「フォルダ…」で指定フォルダ内の .py ファイルを一括して取得することもできます。

ヘッダー情報にアプリケーションのタイトルや著作権等を入力します。「値を保存」にチェックを入れておくと、入力情報を次回の作成時にも反映させます。

「保存」ボタンを押すと、作成する .pot ファイルの保存先を指定するダイアログが開きます。このテンプレートファイルはどこに保存しても構いません。アプリケーションの動作には影響しませんので、配布するかどうかも任意です。

2-4. 翻訳ファイル (.po) の作成

.po は翻訳後の文字列を保存するファイルで、各言語ごとに作成します。

.pot の作成が終わると翻訳対象がリストアップされているはずですので、翻訳したい項目をダブルクリックするか、右クリックメニューの「編集」を選択して翻訳を行います。

編集ダイアログ

下部の「保存」ボタンを押すと、まず .po の翻訳者を入力するダイアログが出ます。

続けて保存場所の指定ダイアログが出ます。日本語への翻訳であれば、メインとして実行される .py ファイルの場所を基準に、以下のようなディレクトリ構造で配置してください。

./locale/ja-JP/LC_MESSAGES/messages.po

ディレクトリ名の「locale」と、ファイル名の「messages」は自由に付けられますが、上述のコードと合わせる必要があります。

「ja-JP」は言語と地域を表す文字列です。他の言語にも対応する場合は Windows で利用可能な言語パック を参考にしてください。

2-5. バイナリ形式 (.mo) の作成

.mo は、.po をプログラムが扱える形式に変換したファイルです。.po は人が編集するためのファイルで、.mo はプログラムが使用するためのファイルになります。

下部の「.mo 変換」ボタンを押すと、.po ファイルと同じディレクトリ内に .mo ファイルを作成します。もし .po に保存されていない翻訳項目がある場合は、自動的に .po 保存ダイアログが出たあとに .mo へ変換されます。

.mo ファイルさえあればアプリケーションは問題なく翻訳されます。.po ファイルはアプリケーションの動作には影響しませんので、.pot と同じく配布は任意です。

2-6. JSON ファイルの利用

上部メニューから、翻訳内容を JSON ファイルとしてエクスポートしたり、インポートしたりすることができます。

また、当ソフトはすべての翻訳内容を独自に保存しています。.po の保存を行わなくても、編集ダイアログで翻訳したものはオートセーブされています。.pot を作成した時や .po を読み込んだ時に、未翻訳の項目をオートセーブデータを使って自動で翻訳します。このデータは “./Data/AutoSavedTranslation.json” にあります。

オートセーブを無効化したいときには、設定ファイル “./Data/config.ini” の下記項目を0に書き換えてください。

[Json]
AutoSave = 1

3. 更新履歴

  • 2023/05.21 (version 0.40) ;
    • Windows の Python 3.11 導入環境において、py.exe の仕様により新規 .pot ファイルを作成できない問題を修正。
    • Windows の Python 3.11 導入環境において、py.exe の仕様により旧バージョンの .pyw を直接実行できなくなったため、シェバン行を次の通りに変更。
      旧:#! /usr/bin/env python3
      新:#! /usr/bin/python
  • 2022/05/21 (version 0.30) ;
    • 異なる .po を読み込んだ際、直前に開いていた .po のデータが画面上に残ったままになる問題を修正。
    • 編集ダイアログにおいて、改行コードを \n ではなく改行して表示するように変更。
    • 編集ダイアログに原文コピーボタンを新設。
    • 編集ダイアログを Enter で確定できるように変更。
  • 2022/05/13 (version 0.20) ;
    • ユーザーインターフェースを全体的に変更。
    • .pot 作成時、指定フォルダ内の .py ファイルを一括して取得できるように変更。
    • .pot のヘッダー情報を入力できるように変更。
    • .po のタイムスタンプを更新するように変更。
    • .po の最終翻訳者を入力できるように変更。
    • 翻訳内容のオートセーブ機能を実装。
  • 2020/11/24 (version 0.10) ; 公開。

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

eighteen − eight =