2012-04-04 13 views
2

私は、ユーザーがドロップダウンリストから国を選択するWebベースのアプリケーションでシナリオを持っています。国を選択すると、国リストボックスの下にあるローカライズされたフィールドも、その国に対応して表示されます。ここでは、その国をあらかじめ選択しておき、その国のロケールに基づいて事前設定済みのドロップダウンを設定する必要があります。ASP.Netのローカリゼーションオブジェクトに基づいてUIを作成する方法

私は例を挙げてこれを説明してみましょう:

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)でこのdinamicallyを達成することができますか?

Google WebサービスAPIをこの要件に使用できるかどうかわかりませんか? 実証済みの経験を持つ回答を探しています。ありがとう

+1

こんにちは、「信頼できる、公式な情報源からの回答を探しています」と言ってどういう意味ですか? 私は公式でも信頼できるものでもないので、私はあなたの質問に対する答えを書くべきではないかと疑う。 – Dima

答えて

1

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

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

1

これはローカライズに関するものの、市場固有の基準についてはあまりありません。具体的には、国際的な住所形式。私はこのための既製のソリューションを認識していませんが、これらの形式を定義する既存のリソースを見つけることができます(たとえばMSDNの場合はhttp://msdn.microsoft.com/en-us/library/cc195167.aspx)。

市場ごとに適切な「構造」(構造によって、どのフィールドと順序で構成されているか)を定義し、標準的なローカリゼーションを使用して、好みのアプローチ(たぶんXML、おそらくはハードコードされたデータ定義)対応するラベルのそれぞれを翻訳する。

編集:日付、時刻および通貨について

は、あなたがたCultureInfoのDateTimeFormatとのNumberFormatプロパティ(MSDN link)を介してアクセスすることができ、.NET Frameworkの文化の定義、利用することができます。今日の日付や現在の時刻などの例やmm/dd/yyやhh:mm:ssなどの形式自体で日付、時刻、通貨を表示するかどうかはわかりません。前者の場合、CultureInfoをインスタンス化し、それをIFormatProviderを取るToStringオーバーライドに渡します。日付と時刻の良い例はthis MSDN pageです。通貨書式設定(MSDN link)についても同様です。あなたはフォーマットを表示する一方場合

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の関連する特性を取ることによって、このデータを取得することができます:それはこのように動作します。例:

+0

日付、時刻、通貨はどうですか? –

+1

私の編集をご覧ください。 – Clafou

+0

それは確かに貴重な情報です。また、Zip Code/Postal Code/PO Boxのシナリオについてもお聞かせください。たとえば、カナダでは別のルール(FYI:http://en.wikipedia.org/wiki/Postal_codes_in_Canada)と英国(http://en.wikipedia.org/wiki/UK_postal_code)では別のルールがあります。ありがとう –

関連する問題