既存のDelphiアプリケーションを(少なくとも多言語で)国際化するのに最も手間がかからないテクニックは何でしょうか?

StackOverflow https://stackoverflow.com/questions/233560

質問

オペレーティングシステムに依存しない多言語機能を提供したい約300のアプリケーションを開発しました。ジャストインタイムのトランスレーターを作成しましたが、多くのコンポーネントを持つアプリケーションでは遅すぎます。どうすればいいですか?

役に立ちましたか?

解決

TsiLangコンポーネントは素晴らしいと聞きましたが、インプレースソリューション...

私は DelphiのGNU gettext を使用しました。テキストファイルから、コンポーネント内のテキストを置き換えます。英語の翻訳ファイルを自動的に生成するpas / dfmスキャナーも備えています。

また、静的文字列の代わりにgettextプロシージャを挿入するように、パスカルソースコードを自動的に変更することもできます。間違っていない場合は、次のように、アンダースコアを関数として追加するだけです。

ShowMessage('Hello'); // before
ShowMessage(_('Hello')); // after

この方法を最後に使用してから2年が経過していると言わざるを得ません。

1つ問題が残ります。DelphiコンポーネントはUnicodeに対応していないため(D2009で修正)、コンポーネントを変更しないと、他の言語のサポートが制限されます。

他のヒント

TsiLang を使用しており、非常に満足しています。

最高のポイントの1つは、プロジェクトを辞書で事前翻訳できることです(既存の翻訳から入力しました)。

優れた無料ソリューションは、 GNU Delphi for gettext です。 TsiLangにはない機能がいくつかあります-たとえば、物事を数える方法に関する知識(1、2、4、100、2、多く...の異なる終わり)を翻訳ファイルに入れて、このことを知るために各プログラムを教える必要はありません。

Delphi部分のライセンスは非常に寛容ですが、含まれているGNUの内容がアプリケーションにどの程度影響するかはわかりません。

マルチライザーを入手します。 Delphiで作成されており、VCLを特別にサポートすることで、Delphiプログラムを他に類を見ないほど処理できます。すべての言語で簡単に画面をやり直すこともできます。 Multilizerを使用すると、さまざまな手法を使用してプログラムを翻訳および実行できます。

Delphi 2009は、統合翻訳環境/外部翻訳マネージャーを追加しました ITEとETMは、DelphiとC ++ Builderの両方で使用できるようになりました。

Codegearの記事: Delphi 2009およびC ++ Builder 2009の新機能には、 :

  

統合翻訳環境   (ITE)はIDEの一部であり、   プロジェクトのローカライズを簡素化します。   ITEは新しいローカライズプロジェクトを作成できます   既存のプロジェクトから。 ITEは   テキストを自動的に翻訳しますが、   すべてのテキストをリストするダイアログを提供します   ローカライズする必要があるフィールド   対応するものを入力する場所   翻訳されたテキスト。入力したら   翻訳されたテキストと構築   ローカライズされたプロジェクト、別のものを設定できます   言語がアクティブで、フォームを表示する   ローカライズされたテキスト。する必要はありません   ロケールを切り替えてシステムを再起動します。   これにより、実行することができます   ローカライズを必要とせずに   ローカライズされたシステム。

     

外部翻訳マネージャー(ETM)   動作するスタンドアロンアプリケーションです   DFMファイルとテキスト文字列を   ソースコード。 ETMは   新しいローカライズを作成できます   プロジェクト、それはダイアログを提供します   ローカライズされたテキストと   ITEと同様に翻訳されたテキスト。

これは、製品を国際化したい時点で最初に試す予定です。

しかし、私にとって簡単なのはプログラムを翻訳することです。難しいのは、ヘルプファイルを翻訳することです。

GNU gettext for Delphi TMS Unicode Component Pack (以前はTntWareの下で無料)で、コンポーネントのUnicodeサポートを取得します。

無料のクロスプラットフォーム Poedit .poファイルを編集できます。

DexExpressコンポーネントを所有している場合は、 cxLocalizer に言及するだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top