6

Visual Studio (2005 以降) を使用しています。ユーザーがすべてのメニュー、入力形式などの言語を変更できるアプリケーションの作成を試みています。これを行うのに役立つ完全な機能が.Net内にあると思うので、どうすればこれを行うことができますか?

次の点を考慮する必要があります (明らかな点が欠けている場合は記入してください)。

  • 文字列 (メニュー、テキスト)
  • 入力データ (フロート、日付などの解析)
  • 別の言語のサポートを簡単に追加できるはずです
4

5 に答える 5

3

私は決して .NET の専門家ではありませんが、ローカリゼーションは「文字列値を交換する」または「日付形式を変更する」ほど単純ではありません。レイアウト、適切なテキストの配置など、考慮すべきことは他にもたくさんあります。

中国語を例にとってみましょう。読み方は左から右ではなく、上から下です。適切にローカライズされている場合、アプリはそれを考慮に入れる必要があります。

ただし、Windows フォームを扱っている場合は、http://msdn.microsoft.com/en-us/library/y99d1cd3 (VS.80).aspx が良いスタートのようです。

于 2008-09-15T19:44:20.777 に答える
3

古典的なレシピは、ネイティブ言語ではなくローカリゼーション機能を使用してアプリを設計し、初期化を 1 つの言語 (英語など) に開発することです。そのため、アプリを作成し、毎晩英語にローカライズします。ローカリゼーションのステップがなければ、使用できません。これをうまく行えば、最初のサンプル ローカリゼーションのリソースを他の言語のリソースに置き換えることができます。最初からローマ字以外を考慮してください。母国語を差し引いて代替を追加する必要がある言語固有のアプリよりも、常にローカライズを必要とする非言語アプリを使用する方がはるかにクリーンです。

于 2008-09-15T19:44:33.363 に答える
1

.NET ResourceManagerとresxファイルのxml形式を使用する必要がありますが、これを使用するにはいくつかの方法があります

それは本当にあなたが達成したいことに依存します。私にとっては、誰でも変更できる単一のxmlリソースファイル(サポートされている言語ごと)が必要でした。グローバルリソースファイルをResourceManagerにロードするヘルパークラスを作成し(1回のみ)、指定された名前に必要なリソースを提供するヘルパー関数がありました。このアプローチの唯一の欠点は、リソースのプロパティへの動的バインディングを活用できないことでした。

これは、すべてのフォームの複数のリソースファイルや埋め込みリソースファイルよりも管理が簡単であることがわかりました。さらに、ASP.NETアプリケーションでもまったく同じアプローチを使用できます。また、このアプローチは、リソースの翻訳をアウトソーシングし、言語パックを顧客に出荷する方がはるかに管理しやすいことを意味します。

于 2008-09-15T20:02:37.410 に答える
1

Microsoftが推奨するアプローチは、「リソースのパッケージ化と展開」で説明されているように、サテライトアセンブリを使用することです。ResourceManagerを使用してリソースをロードしている場合、.NETはCurrentUICultureの正しいリソースをロードします。これは、デフォルトでWindowsのユーザーの現在のUI言語設定になります。

VisualStudioまたは外部ツールWinRes.exeを使用してWindowsフォームをローカライズすることができます。この記事では、WinResと、VisualStudioを使用してフォームをローカライズする方法について説明します。

于 2008-09-15T22:24:26.477 に答える
1

文字列の場合は、コードから文字列を分離する必要があります (文字列 ID を実際の文字列に変換する XML/DLL を用意するのも 1 つの方法です)。ただし、一部の言語では 2 バイト文字をサポートしていることを確認する必要があります (これは、C/C++ を使用する場合に関係します)。

入力データの場合、必要なのは異なるロケールを持つことです。Java ではこれは比較的簡単で、C# を使用する場合もおそらく非常に簡単です。C/C++ ではよくわかりません。基本的な考え方は、入力パーサーはその時点で選択されているロケールに基づいて異なる必要があるということです。したがって、各フィールド (テキストフィールド、テキストボックスなど) には、ロケール (右から左、2 バイトなど) に応じて異なるクラスによって実装される抽象パーサーが必要です。

彼らがどのようにそれを行ったかの詳細については、Java 実装を確認してください。それはかなり機能的です。

于 2008-09-15T19:40:54.277 に答える