2

ユーザーがドロップダウン リストから国を選択する Web ベースのアプリケーションのシナリオがあります。国を選択すると、国リストボックスの下にあるローカライズされたフィールドが、その国に対応して表示されます。ここでは、その国を事前に選択し、その国のロケールに基づいてドロップダウンを事前設定する必要もあります。

これを例で説明しましょう。

:

Country: United States

Corresponding Fields:
State:
Zip Code:
Time: 
Currency:
Date:



Country: United Kingdom  

Corresponding Fields:
County:
Postal Code:
Time: 
Currency:
Date:



Country: India

Corresponding Fields:
Province:
District:
PO Box: 
Currency:
Date:
Time:

ASP.Net (3.5 または 4.0) でこれを動的に達成するにはどうすればよいですか?

この要件に Google Web サービス API を使用できるのではないでしょうか? 実績のある経験に基づいた回答をお待ちしております。ありがとう

4

3 に答える 3

1

これはローカリゼーションではなく、市場固有の標準に関するものです。具体的には、国際住所形式です。私はこれに対する既成の解決策を知りませんが、これらの形式を定義する既存のリソースを見つけることができます(たとえば、MSDNのここ: http: //msdn.microsoft.com/en-us/library/cc195167。 aspx)。

各市場で好みのアプローチ(おそらくXML、おそらくハードコードされたデータ定義)を使用してフォーマットを定義し、適切な「構造」(構造とはどのフィールドと順序を意味するか)を定義し、標準のローカリゼーションを使用してそれぞれを変換できると思います。対応するラベル。

編集:

日付、時刻、および通貨に関しては、CultureInfoのDateTimeFormatおよびNumberFormatプロパティ( MSDNリンク)からアクセスできる.NETFrameworkのカルチャ定義を利用できます。例(今日の日付や現在の時刻など)で日付、時刻、通貨を表示するのか、形式自体(mm / dd / yyやhh:mm:ssなど)で表示するのかわかりません。前者の場合、CultureInfoをインスタンス化し、IFormatProviderを受け取るToStringオーバーライドに渡します。日付と時刻の良い例は、このMSDNページに示されています。同じことが通貨のフォーマットにも当てはまります(MSDNリンク)。それはこのように動作します:

CultureInfo cultureInfo = new CultureInfo("en-GB"); // Change en-GB to the desired culture name
DateTime now = DateTime.Now;
string sampleTime = now.ToString("T", cultureInfo); // Result: 5:04:32 PM
string sampleDate = now.ToString("d", cultureInfo); // Result: 13/3/2012
double value = 16325.62901; 
string sampleCurrency = value.ToString("C", cultureInfo); // Result: £16,325.63

一方、フォーマットを表示したい場合は、DateTimeFormatInfoとNumberFormatInfoの関連するプロパティを取得することでこのデータを取得できます。例えば:

CultureInfo cultureInfo = new CultureInfo("en-GB");
string shortDatePattern = cultureInfo.DateTimeFormat.ShortDatePattern; // Result: d/M/yyyy 
string shortTimePattern = cultureInfo.DateTimeFormat.ShortTimePattern; // Result: h:mm tt 
string currencySymbol = cultureInfo.NumberFormat.CurrencySymbol; // Result: £
于 2012-04-13T16:35:13.677 に答える
1

国「インド」のフィールド数が他よりも 1 多いことがわかります。これは意図されていますか?はいの場合、データベース内の国に関連するフィールドを設定し、ローカライズされたテキストを他の「リンクされた」テーブルに保存できます。フィールドの数は国ごとに異なる場合があります。

フィールドが同じになる場合は、ロケール固有のリソース ファイルを作成し、それに別のテキストを追加できます。ドロップダウンでの選択を変更するときは、System.Threading.Thread.CurrentThread.CurrentUICulture関連するロケール コードに設定するだけです。

于 2012-04-09T12:41:34.443 に答える
1

リソース ファイルを使用して翻訳されたテキストを保存すると、長期的には柔軟性が向上します。

リソース ファイルの使用方法については、次のリンクを参照してください。

http://www.codeproject.com/Articles/334820/Using-Globalization-and-Localization-in-ASP-NET

http://www.codeproject.com/Articles/14818/ASP-NET-2-0-Globalization-Localization-solution

于 2012-04-11T14:38:49.283 に答える