1

私は1つのウィンドウベースのアプリケーションを開発しています。これはウィンドウベースのデスクトップアプリケーションであるため、中国語からフランス語、ヒンディー語(インド)からポルトガル語(ブラジル)までの複数の言語をサポートする必要がありますが、同じサイズのテキストが表示されてもうまくいくと思います.しかし次の例では、

私の1つの静的コントロールに次のテキストが含まれている場合

出力範囲を選択 | _テキスト ボックス_ |

私は英語で開発しているので、静的なサイズは英語のテキストサイズに応じて考慮されます。素晴らしいと思います。

上記の静的コントロールの中国語ビューに変換した同じテキストは、次のようになります。

選択输出范围 | _テキスト ボックス_ |

中国語のサイズが英語のサイズよりも小さいので満足していますが、同じテキストを英語からフランス語に変換すると、静的コントロールのサイズが次のようになります。

セレクションネス Plage de sortie |_テキスト ボックス_ |

小さいサイズのテキストに大きなテキストがあるため、私の悪いサイズのテキストはいくつかの世界で増加します.テキストのビューは次のように切り取られます.

出力範囲を選択 | _テキスト ボックス_ |

セレクションネス プラージュ| _テキスト ボックス_ |

フランス語ではテキストのサイズが大きくなりますが、プログラムでテキスト サイズの不一致を処理するにはどうすればよいですか?

4

1 に答える 1

1

この問題を処理するには、さまざまな方法があります。答えは、コードでローカライズを処理する方法によって異なります。

一部のローカルでは、表示を左から右へ -> 右から左 (アラビア語...) に反転する必要があることに注意してください。この場合、次のようなケースを処理する必要があります。

 Select Output Range |_Text Box__|

なる必要があります:

 |_Text Box__| <translated text into arabic or hebrew>

したがって、ダイアログボックスの翻訳は単にラベルを翻訳するだけではないことに注意する必要があります。ラベルの長さが同じではないことに気付き始めました。

言語ごとにテキスト ファイル (すべてのラベルのリストを含む) を用意するなど、非常に単純なローカリゼーション メカニズムを使用することを選択した場合、ラベルのサイズを 1 つのサイズですべてに適合するように設定する以外にできることはありません。言語。一部の言語では、ダイアログ ボックスが見栄えがよくありません。また、右から左へ記述する言語は使用できません。これは手っ取り早く汚い方法です。

さらに詳しく知りたい場合、最も一般的な方法は、言語ごとにリソース ファイルを用意することです。プログラムがほぼ完成したら、リソース ファイルを複製する必要があります。各言語のコピーがあります。ダイアログボックスやメニューなど全体をローカライズします。ダイアログボックスをフランス語にローカライズすると、ラベル フィールドを大きくすることができます。中国語の場合は小さくなります。必要に応じて、アラビア語のダイアログ ボックスのレイアウトを変更することもできます。もちろん、言語ごとにソフトウェアのバージョンを作成する必要があります。

あなたの投稿には MFC タグが付いているので、MFC 拡張 DLL に興味があるかもしれません。これは、MFC アプリがローカリゼーションを処理する標準的な方法です。リソース ファイルのみを含む DLL を作成します。10 言語をサポートする場合、10 個のリソース ファイルを複製して翻訳し、10 個の拡張 DLL を作成します。MFC は、現在の Windows ロケールに応じて適切な DLL を自動的に読み込みます。たとえば、 CodeProjectのサンプルを参照してください。

ダイアログ ボックスの作成時にコントロールを自動的に移動およびサイズ変更するコードを作成することはお勧めしません。これは思ったほど簡単ではないからです。アプリが非常に単純でない限り。

于 2013-10-22T22:30:51.737 に答える