私は、オペレーティング システムから独立した多言語機能を提供したいと考えている約 300 のアプリケーションを開発しました。ジャストインタイム トランスレータを作成しましたが、多くのコンポーネントを含むアプリケーションでは遅すぎます。私に何を提案しますか?
7 に答える
私たちはTsiLangを使用しており、とても満足しています。
最良のポイントの 1 つは、プロジェクトを辞書 (既存の翻訳から入力したもの) で事前翻訳できることです。
TsiLang コンポーネントが優れていると聞きましたが、インプレースソリューションを検討しています...
私はGNU gettext for Delphiを使用しました。これはまさにあなたが望むことを行い、テキストファイルから翻訳をロードし、コンポーネント内のテキストを置き換えます。英語の翻訳ファイルを自動的に生成する pas/dfm スキャナーもあります。
また、Pascal ソース コードを自動的に変更して、静的文字列の代わりに gettext プロシージャを挿入することもできます。私が間違っていなければ、以下のようにアンダースコアを関数として追加するだけです。
ShowMessage('Hello'); // before
ShowMessage(_('Hello')); // after
この方法を最後に使用してから 2 年が経ちました。
問題が 1 つあります。Delphi コンポーネントは Unicode に対応していないため (D2009 ではこれが修正されています)、コンポーネントを変更しない場合でも、他の言語のサポートは制限されます。
良い無料のソリューションは、GNU gettext for Delphiです。TsiLang にはないいくつかの機能があります。このことを知るために各プログラムを教える必要はありません。
Delphi 部分のライセンスは非常に寛容ですが、含まれている GNU がアプリケーションにどの程度影響するかはわかりません。
Delphi 用の GNU gettextとTMS Unicode コンポーネント パック(以前はTntWareで無料) を組み合わせて、コンポーネントで Unicode サポートを取得すると思います。
gettext ファイルを使用する、または翻訳者に作業させるには、.po ファイルを編集できる無料のクロスプラットフォームPoeditを参照することをお勧めします。
マルチライザーを取得します。Delphi で作成されており、VCL の特別なサポートにより、他に類を見ない Delphi プログラムを処理できます。すべての言語で簡単に画面をやり直すこともできます。Multilizer を使用すると、さまざまな手法を使用してプログラムを変換および実行できます。
DexExpress コンポーネントを所有している場合は、 cxLocalizerに言及してください。
Delphi 2009 では、統合翻訳環境/外部翻訳マネージャ ITE が追加され、Delphi と C++Builder の両方で ETM が利用できるようになりました。
Codegear の記事: What's New in Delphi and C++Builder 2009では、次のように述べています。
統合翻訳環境 (ITE) は、プロジェクトのローカライズを簡素化する IDE の一部です。ITE は、既存のプロジェクトから新しいローカライズされたプロジェクトを作成できます。ITE はテキストを自動的に翻訳しませんが、ローカライズが必要なすべてのテキストをリストするダイアログと、対応する翻訳済みテキストを入力するフィールドを提供します。翻訳されたテキストを入力し、ローカライズされたプロジェクトを構築したら、別の言語をアクティブに設定して、ローカライズされたテキストでフォームを表示できます。ロケールを切り替えてシステムを再起動する必要はありません。これにより、ローカライズされたシステムを必要とせずにローカライズを実行できます。
External Translation Manager (ETM) は、ソース コード内の DFM ファイルとテキスト文字列を操作するスタンドアロン アプリケーションです。ETM では新しいローカライズされたプロジェクトを作成することはできませんが、ITE と同様に、ローカライズされたテキストと翻訳されたテキストを一覧表示するダイアログが表示されます。
これは、自分の製品を国際化したいと思った時点で、最初に試す予定です。
しかし、私にとって簡単な部分は、プログラムを翻訳することです。難しいのは、ヘルプ ファイルの翻訳です。