8

Delphi でアプリケーションを翻訳する必要があります。ロシア語のインターフェイスのすべての文字列。文字列定数のすべてのパスを解析して高速検索するためのツールは何ですか?

大規模なアプリケーションはどのように翻訳されるのでしょうか?

4

4 に答える 4

9

GetText で実行できるはずです。http://dxgettext.po.dk/documentation/how-to で「extract」を検索してください


ソース内のGUI とおそらくリソース文字列を翻訳するだけでよく、翻訳に Pascal ソース内のインライン文字列定数が必要ない場合は、Delphi 組み込みメソッドを試すことができます。ただし、フォーラムでは、ITE にはバグがあると書かれています。しかし、少なくともそれは Delphi の公式のやり方です。

http://www.gunsmoker.ru/2010/06/delphi-ite-integrated-translation.htmlのソース シートに示されているように、ソースを ITM マニュアルで翻訳するには、準備が必要です。


JediVCL チームのために Polaris のテキストを翻訳したことを覚えています。しかし、#127 を超えるすべての文字をテキスト ファイルに抽出しただけだと思います。構造はなく、定数とコメントがすべて一緒にありました。それでも、必要な方法で使用できるとは思えませんが、いくつかのコンポーネントがあります。http://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvTranslator


商用ツールもあります。しかし、それらの機能が最初の抽出および翻訳タスクに役立つかどうかはわかりません。多くの言語に翻訳された大規模なアプリケーションを維持する必要がある場合、これらはおそらく非常に役立ちますが、1 回限りの変換を行う必要がある場合はそうではありません。しかし、私が間違っているかもしれません。必要に応じて試用版を確認してください。レビューによると、これらのスイートは最高の商用スイートと見なされています。

于 2012-09-07T06:52:11.930 に答える
5

まず、ローカライズ可能なすべての文字列定数をユニット ファイル内のリソース文字列セクションに移動することをお勧めします。いえ

raise Exception.Create('Error: что-то пошло не так (in Russian language)');

に変換されます

resourcestring
  rsSomeErrorMessage = 'Error: что-то пошло не так (in Russian language)';
...
raise Exception.Create(rsSomeErrorMessage);

リソース文字列の詳細。

このプロセスは、対応するDelphi IDE リファクタリング コマンドを使用するか、 ModelMaker Toolsなどのサードパーティ ユーティリティを使用して加速できます。

次に、利用可能なローカライザーを使用して、プログラムを翻訳したり、国際化したりすることができます。無料のDelphi ローカライザをお勧めします。

于 2012-09-07T09:23:49.250 に答える
3

基本的に、あなたには2つの方法があります

  1. リソースベースのローカリゼーション ツール (Delphi ITE、Multilizer など)
  2. データベースベースのローカリゼーション ツール (GetText、TsiLang など)

前者は Windows リソース サポートを利用しており、アプリケーションの起動時にリソースの読み込みを DLL に格納された別のリソースにリダイレクトできます。利点は、文字列だけでなく、画像、色、コントロール サイズなどを含むフォーム全体をローカライズできることです。さらに、コードの変更は必要ありません。欠点は、エンド ユーザーによるローカリゼーションは通常不可能であり、アプリケーションを再起動せずに言語を変更するのは難しい場合があることです。Windows 自体を含む Microsoft アプリケーションは、この手法を使用します。文字列をリソースと dfms に適切に格納する Delphi ライブラリで動作します。

後者は文字列を外部の「データベース」に保存します(テキストファイルの場合もあります...)。利点は、通常、ユーザーが翻訳を追加/変更し、その場で簡単に言語を切り替えることができることです。欠点は、この手法はより煩わしく (文字列の読み込み/表示をフックする必要があります)、コードの変更が必要になる場合があることです。ツールは通常、文字列のローカリゼーションに限定されており、より幅広い制御 (画像、サイズなど) を提供しておらず、そうでない場合もあります。正しくフックできなかった未知のコントロール/ライブラリで動作します。Windows のようなリソース サポートはすべてのオペレーティング システムで利用できるわけではないため、通常、クロスプラットフォーム アプリケーションはこの手法を使用します。

自分と自分のアプリケーションに最適な手法を選択する必要があります。さらに、外部翻訳者との共同作業を容易にするツールもあれば、そうでないツールもあります。コードの変更を必要とせず、特定のライブラリに縛られないため、私はリソースベースのアプローチを好みます。

于 2012-09-07T07:17:02.090 に答える
1

dxgettext (Delphi および C++ Builder 用の GNUGettext) と Gorm (同じ作者による) を使用しています。ほとんどのツールでは、英語を第一言語として使用し、英語のみから翻訳する必要があります。dxgettext は他の言語を使用できますが、それには未知の問題があるはずです。大規模なアプリケーションの国際化は、現在考えているよりも手間がかかることを覚悟しておいてください。

于 2012-09-07T06:59:57.817 に答える