0

アラビア語に移行したい大規模なアプリケーションがあります。resourcestring キーワードでユーザーに表示する文字列を定義しました。

Delphi 6 で提供されている外部翻訳マネージャを使用していますが、このツールの使用にはあまり慣れていません。Delphi ETM のようにすべての翻訳された文字列を含むリソースのみの dll を作成し、ボタンをクリックするだけで実行時に言語を切り替えたいと考えています。

リソース文字列を Dll にリンクすることはできましたが、フォームのキャプションとヒント、およびコンポーネントのプロパティはどうでしょうか。言語によっては実行時に Dll を読み込んでいますが、Dll で使用できなかったため、フォームのプロパティが反映されていません。

正しい方向へのポインタ???

ありがとうラフルW

4

1 に答える 1

1

Delphi ローカリゼーション ツールとランタイム サポートが行うことは、リソースの読み込み(フォームを含む)を実行可能ファイルから DLL にリダイレクトすることです。フォーム、そのコンポーネント、およびコントロール (非デフォルト プロパティ) は、リソースとして実行可能ファイルに格納されます (ただし、実行時に完全に作成しない限り - ただし、それらのプロパティを 1 つずつ設定する必要があります)。

したがって、標準の翻訳ツールと同じように作業したい場合は、同じように作業する必要があります。DLL リソース ウィザードが行うことは、すべてのプロジェクト .dfm (および手動で追加したもの) とリソース文字列をローカライズ可能なコピーに抽出することです。アプリが開始されると、フォーム読み込みコードが .dfm を読み込む場所をチェックします。リソースをロードするには、このコードをオーバーライドする必要があります。

リソースからフォーム全体をロードするとフォームが作成状態に「リセット」される可能性があるため、実行時に言語を変更するには別のアプローチが必要になる場合があることに注意してください。一方、gettext のようなアプローチと比較すると、画像や色など、フォームのテキストよりもはるかに多くの部分をローカライズし、コントロール サイズを新しい文字列に簡単に適合させることができます。IMHO gettext は単純なニーズには適していますが、ローカライズが複雑なタスクになり、非常に異なる「文化」に合わせてローカライズする必要がある場合は、より強力なツールが必要になります。

于 2012-01-05T19:44:06.037 に答える