2008-11-19 90 views
1

早上好,ASP.NET全球化 - 顯示日期

道歉爲新手問題。我剛剛開始使用ASP.NET國際化設置。

背景信息:

我有一個網站,該網站顯示<table> HTML對象。在那個HTML對象中,我有一個顯示日期的列。我的服務器在美國,這些日期顯示爲MM/DD/YYYY。我的許多用戶通過數據 - >導入外部數據 - >導入Web查詢界面,通過Excel插入此網頁。我的用戶大部分在美國,所以這些日期在他們的Excel屏幕中正確顯示。

現在我需要使網頁爲英國用戶工作。因爲他們正在下載日期MM/DD/YYYY,這使得他們的電子表格不可用,因爲他們的區域設置被設置爲DD/MM/YYYY

我的問題是:

我如何使它所以Web服務器意識到傳入的請求具有en-GB文化背景?我可以設計自己的小型自定義解決方案,但我確定我不是第一個遇到此問題的程序員。親們如何處理這件事?我正在尋找一種相對簡單和快速的解決方案,但我不想僅僅放入一些蹩腳的多功能自己的邏輯,以免我會在6個月後面對恐懼。

非常感謝, -Alan。

+0

這是國際化不是i13n。有人可以改變這個標籤嗎? – 2008-11-19 17:00:12

回答

2

幾個要點:

  • 的<全球化>元素也需要文化屬性= 「自動」。 uiCulture屬性影響用於檢索資源的語言。文化屬性影響用於格式化數字和日期的文化。

  • this MSDN article所述,僅依靠瀏覽器設置來確定頁面的UI文化不是最佳實踐。用戶經常使用未設置爲其偏好的瀏覽器(例如,在網吧中)。您應該爲用戶提供一種方法,以明確地爲頁面選擇語言或語言和文化(CultureInfo名稱)。

+0

就是這樣!謝謝。我無法讓web.config工作,但是您的第一條評論一切正常。這樣我就不必編寫任何代碼。非常感謝。 – AlanR 2008-11-19 16:57:42

2

可以讓瀏覽器設置你的UI文化,如果自動希望,通過打開web.config中,像這樣:

<configuration> 
    <system.web>  
     <globalization uiCulture="auto" /> 
     ... 

,然後通過瀏覽器設置的文化都被自動設置你的應用。這意味着當你有框架顯示日期/時間值時,它們將根據當前線程的UI Culture進行格式化。

如果您使用貨幣和/或本地化文本(但您必須提供您支持的每種文化的本地化資源),這也會有所幫助。

1

您也可以接受用於覆蓋文化設置的查詢字符串參數。

文化初始化應該放在Page.InitializeCulture方法中。

protected override void InitializeCulture () 
{ 
    Thread.CurrentThread.CurrentCulture 
    = Thread.CurrentThread.CurrentUICulture 
    = Request.QueryString [ "culture" ] != null ? new CultureInfo (Request.QueryString [ "culture" ]) : CultureInfo.InvariantCulture; 
    //base.InitializeCulture (); 
} 

用法:http://tempuri.org/page.aspx?culture=en-GB

+0

實際上,這個網頁是從一個Excel加載項調用的。我不想在VBA中檢測機器的區域設置:)。 – AlanR 2008-11-19 16:55:26