python GTK3プログラムを作成しています。翻訳サポートを追加したいと思います。 .potおよび.poファイルを作成する方法を知っています。ただし、アプリケーションを複数の言語で使用できるようにするには、.moファイルを生成する必要があります。 here と読みます。moファイルを生成する方法はmsgfmt.makeコマンドを使用していることです。
私の質問は、私(開発者)がコンピューターで.moファイルを手動で生成し、インストール中に.debインストーラーにファイルをusr/share/locale/en_GB /フォルダーに移動するよう指示する必要があるかどうかです。または、ユーザーがシステムにプログラムをインストールしているときに、.debインストーラーがこれらの.moファイルを生成する必要がありますか?
「。moファイルはマシンに依存していますか?」と要約できます。
私のフォルダ構造は次のとおりです
nstrain-0.1
/debian
/data
/help
/nstrain_lib
nstrain.desktop
nstrain.py
nstrain.pyは、ユーザーがプログラムをクリックしたときに.desktopファイルが実行されるメインの実行可能ファイルです。
バイナリ MOファイル ビルド時に生成する必要があります。つまり、ビルドシステムには、ソースとして使用されるテキスト POファイル を読み取り、それらをユーザーのシステムにインストールされるバイナリMOファイルに変換するビルドターゲットが必要です。正しく指摘すると、 msgfmt
コマンド( gettext tools の一部)が最終的にそれらを作成します。
したがって、質問の最後の部分に答えるために、はい、MOファイルはマシンに依存しています。
次に、それらを作成する方法について説明します。標準のgettextレイアウトでは、通常、すべてのPOファイルが同じディレクトリにあり、言語ごとに1つあり、各言語のISO-639 2文字または3文字コードにちなんで名前が付けられます。
po/
po/ca.po
po/de.po
...
それらを手動でビルドする場合は、そのディレクトリ内の各ファイルを調べて、手動でmsgfmt
を呼び出す必要があります。
$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo
しかし、すでに確立された方法があり、特にMOファイルの構築操作用に作成された自動化ツールがある場合は、これを実行したくないでしょう。
さらに、これらのツールは、コードから翻訳を抽出し、POTファイルにまとめて翻訳者が作業を行えるようにするなど、他の関連タスクを処理します。
Pythonを使用している場合は、 python-distutils-extra パッケージ(pdeのインストール)を使用することをお勧めします。これは、setup.py
アプリのビルド、インストール、配布に使用するファイル。 @dobeyと同じ例がすでに彼の答えを指摘していた:
DistUtilsExtra.auto.setup(
name='myapp',
version='0.1',
#license='GPL-3',
#author='Your Name',
#author_email='[email protected]',
#description='UI for managing …',
#long_description='Here a longer description',
#url='https://launchpad.net/myapp'
)
それはあなたのためにすべての世話をします。
翻訳を出荷する前にテストする場合は、python-distutils-extraの便利なbuild_i18n
コマンドを使用できます。
$ python setup.py build_i18n
これにより、/po
フォルダー内のすべてのPOファイルがビルドされ、システムにインストールされたときにgettextが期待するレイアウトと同じレイアウトでbuild
の下に配置されます(存在しない場合は作成されます)。
その後、次のいずれかの方法でアプリケーションを翻訳してテストできます。* /build
の内容を/usr/share/locale
にコピーするか、* gettext.bindtextdomain()
関数を使用してアプリをビルドディレクトリにポイントする:
gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')
巨人の肩の上に立ってください。 Quickly を使用してテストアプリケーションを作成し、setup.py
での翻訳のセットアップ方法をコピーします。基本的には、上記で説明したDistutilsExtra
モードでauto
モジュールを使用することになります。
テストアプリを使用して、翻訳の生成も試して、生成の仕組みを学ぶことができます。
リリースの一部としてまとめたtarballには、.moファイルを含めないでください。つまり、手動でビルドする必要はありません。誰かが手動でインストールするためにtarballの内容をビルドしたとき、またはDebianバイナリパッケージが作成されています。
ソースツリーを見て、再度python-distutils-extraなどのビルドシステムを使用することをお勧めします。これはパッケージ化にも役立ちます。大体、次のことが必要です。
setup.py
ファイルを作成しますdebian/rules
ファイルは非常にシンプルになり、数行で構成されます。実際、Quicklyを使用して、アプリのビルドおよびパッケージングシステムのハーネスを作成し、テストアプリケーション用にQuicklyで生成されたソースコードをアプリケーションのコードに置き換えるだけです。
Pythonを使用している場合、setuptools/distribute/distutilsをビルドシステムとして使用していると仮定します。そのような場合、代わりにDistUtilsExtra.autoを使用できます。
from DistUtilsExtra.auto import setup
setup(
name="Your Project",
version="0.1",
...
)
パッケージに対して通常行うのと同じ引数をsetup()に渡すことができます。 DistUtilsExtra.autoは、.desktopファイルなどの静的テキストファイルの翻訳を含む、翻訳などの多くのシステム統合部分を自動的に処理できます。