3

この質問は、ベストプラクティスに関するものです。私は現在、Qtの国際化システムに頭を悩ませています。

Qtアプリケーションのソーステキストとして何を使用しますか?

  1. アプリケーションコードに英語のテキストを記述し、それを最終言語として使用しますか?
  2. または、英語のテキストを作成しますが、コード内のテキストが顧客に表示されないように、英語バージョン専用の翻訳ファイルを設定しますか?
  3. または、コードでID( "ID_ABOUT_US"など)を使用して、英語のテキストを変更するときに言語ファイルが翻訳を「失う」ことがないようにしますか?

背景:ソース言語として英語を使用していて、アプリケーション用にさらに5つの翻訳ファイルがあるとします。今、英語のテキストはうまく定式化されておらず、変更する必要があることがわかりました。lupdateが使用するヒューリスティックなアプローチのために、他の5つの翻訳が変更後にこの翻訳を「失う」という問題に遭遇しますか?それとも、翻訳もレビューする必要があるので、通常、これはメリットだと思いますか?

あなたの経験にとても興味があります!

こんにちは、

ファビアン

4

2 に答える 2

4
  1. はい、あなたのネイティブでなくても英語です。これは、7ビットASCIIのみで完全に表現できる世界で唯一の言語であるため、ソースコードのエンコードを調整する必要はありません。また、人間の翻訳者にとって普遍的に理解されている言語でもあります。ただし、ソースコードでの「書き込み」とは、すべてをtr( "")で囲むことを意味するため、将来の翻訳が可能になります。翻訳がない(installTranslator()呼び出しがない)場合tr()は、操作がないため、テキストが表示されます。インストールされているトランスレータの欠落している翻訳にも同じことが当てはまります。したがって、翻訳を終了する必要はありません。翻訳されていないテキストは、「ソースコード」英語で表示されます。

  2. 「英語の翻訳」は、1つの少し使用された機能に適しています。愚かな「1つのメッセージを受信」の代わりに、複数形の正しいテキストを使用でき、Qtはコーディングなしでそれを行います。最後の数値パラメーターを使用してtr()オーバーロードを使用し、パラメーターごとに、TSファイル内のすべての複数形のバリアントを提供するだけnです。無限のif-elseスパゲッティと三項演算子はもうありません。

    複数の言語(つまり、英語などだけでなく)を目指す場合は、「英語の翻訳」を設定することもコードの一貫性に役立ちます。英語は別の言語と同じように扱われ、他の言語と同じように切り替えることができます。英語の翻訳がない場合は、翻訳者をアンインストールしてフォールバックしてから、他の言語用に再度インストールする必要があります。Qtにとって大きな問題ではなく、コードの一貫性だけが問題です。[言語、翻訳者]の地図を作成でき、英語を特別に扱う必要はありません。

  3. IDはありません。コードのさまざまな部分からの独自の翻訳と重複しないように、命名規則を開発していることに気付くでしょう。とにかく、人間の翻訳者に読み取り可能な文字列へのIDのマッピングを提供する必要があります。「翻訳を失う」ことへの恐れについて。元のテキストが大幅に変更された場合は、再翻訳を強制することをお勧めします。それがそれほど変わらない場合、TSファイルはソースファイルの行も保持するため、Linguistはおそらくそれを保持します。

疑問がある場合は、Qtの国際化ガイドをお読みください

于 2012-10-03T21:17:58.380 に答える
0

Qtのアプローチは、個別の文字列テーブルではなく、tr( "")フラグでラップされたコードに母国語のメッセージを含めることです。

これらすべてを抽出し、(人間の)翻訳者用のファイルを作成し、アプリコードの文字列を置き換えるツールがあります。http://qt-project.org/doc/qt-4.8/linguist-manual.htmlを参照してください

また、位置に依存するフラグを使用したprintf()タイプのフォーマットがあるため、さまざまな言語でtr( "%1は%2の前にあります")およびtr( "zer%2 ist bevor%1")を使用できます。

于 2012-10-03T18:11:11.853 に答える