既存のDelphiアプリケーションを(少なくとも多言語で)国際化するのに最も手間がかからないテクニックは何でしょうか?
-
04-07-2019 - |
質問
オペレーティングシステムに依存しない多言語機能を提供したい約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 に言及するだけです。