2012-04-04 56 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 2012-04-10 21:19:02

回答

1

我可以看到,國家「印度」的字段數量比其他字段多1個。這是打算?如果是,您可以在數據庫中設置與國家相關的字段,並將其本地化文本存儲在其他「鏈接」表格中。每個國家的字段數量可能不同。

如果字段要相同,您可以創建特定於語言環境的資源文件並向其中添加不同的文本。當您在下拉菜單中更改選擇時,只需將System.Threading.Thread.CurrentThread.CurrentUICulture設置爲相關區域設置代碼即可。

1

這是不是這麼多的本地化而是市場的具體標準。特別是國際地址格式。我並不知道現成的解決方案,但您可以找到定義這些格式的現有資源(例如,在MSDN上:http://msdn.microsoft.com/en-us/library/cc195167.aspx)。

我想你可以使用你喜歡的方法(可能是XML,也許硬編碼的數據定義)爲每個市場定義它的適當的「結構」(結構我指的是哪些字段和順序)並使用標準本地化翻譯每個相應的標籤。

編輯:

關於日期,時間和貨幣,你可以使用.NET框架的文化定義,它可以通過的CultureInfo的DateTimeFormat和NumberFormat的性質(MSDN link)進行訪問的。我不確定是否要通過示例(如今天的日期或當前時間)或格式本身(如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的相關性得到這個數據。例如:

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: £ 
+0

日期,時間和貨幣如何? – 2012-04-13 20:15:58

+1

請參閱我的編輯。 – Clafou 2012-04-13 22:08:35

+0

這確實是一個有價值的信息。也可以請您討論郵政編碼/郵政編碼/郵政信箱的情況。例如,對於加拿大我們有一個單獨的規則(FYI:http://en.wikipedia.org/wiki/Postal_codes_in_Canada),對於英國(http://en.wikipedia.org/wiki/UK_postal_code)我們有一個單獨的規則。謝謝 – 2012-05-09 11:45:18

相關問題