8

GUI の国際化とローカライズに標準の Python gettext ライブラリを使用した PyQt4 で記述されたアプリケーションがいくつかあります。それは私にとってはうまくいきます。しかし、gettext の使用に関する知識と経験があり、Qt4 の tr() アプローチの経験がないという理由だけで、gettext を選択しました。

QObject.tr の代わりに gettext を使用することで、両方のアプローチをよりよく比較し、不足しているものを理解したいと思います。また、Qt4/PyQt4 アプリケーションに gettext を使用しない重大な理由はありますか?

私の理解では、gettext を使用する利点は次のとおりです。

  • GNU gettext は成熟しており、GNU/Linux の世界では事実上の標準になっているようです。
  • PO ファイルには、翻訳者の作業を簡素化するのに十分な数の特別なエディターがありますが、PO テンプレートのテキストの性質上、必ずしも必要ではありません。
  • 共同翻訳に使用できる Web サービスもあります。
  • gettext は Python の標準ライブラリなので、実行時に使用するために特別なものをインストールする必要はありません。
  • ngettext() による単数形/複数形の選択が非常にうまくサポートされています。

QObject.tr() の利点として私が見ているもの:

  • これは Qt4/PyQt4 のネイティブ テクノロジであるため、より適切に/より高速に動作する可能性があります (ただし、証明するデータはありません)。
  • 翻訳するメッセージには、翻訳者が同音異義語の最適なバリエーションを選択するのに役立つ追加のコンテキスト情報が含まれている場合があります。実際のコンテキスト。

QObject.tr() と gettext の欠点として私が見ているもの:

  • Qtのドキュメントでは、単数/複数の選択がどのようにサポートされているかわかりませんでした。
  • Qt4 TS 翻訳テンプレートは XML 形式であるため、特別なエディター (QT Linguist) なしで編集するのはより複雑であり、他のサードパーティ ソリューションや Web サービスはないようです。そのため、翻訳者は新しいツールを習得する必要があります (PO ツールに慣れている場合)。

ただし、上記のすべての項目は、ツールが他のツールよりも優れていると明確に言うほど重要ではありません. そして、それは非常に主観的なものなので、何が優れているかについて炎上戦争を始めたくありません. QObject.tr() と gettext の長所と短所として欠けているものを知りたいだけです。

4

4 に答える 4

2

使用する単純な理由の 1 つQObject.tr()は次のとおりです。

これにより、Windows に gettext をインストールする必要がなくなり、クロスプラットフォームでの作業が少し簡単になります。Windows では、バイナリの依存関係をできるだけ少なくするようにしています。

于 2012-12-15T03:45:19.487 に答える
-1

argsが別の方法で管理されることを追加できます...

Gettextを使用すると、次のことができます

_("Hello %(name)s from %(city)s") % {person.__dict__}

一方、PyQtでは

self.tr("Hello %1 from %2").arg(person.name).arg(person.city)

于 2010-03-22T15:45:51.620 に答える