我在Windows 8 Metro應用程序(XAML & C#)中遇到了有關用戶區域設置的問題。看來,應用程序將不會尊重用戶的區域設置,所以即使你的Windows 8被設置爲顯示日期和時間格式芬蘭的應用仍然會使用美國格式顯示。但是,這是一個很大的問題,我一定有一些東西丟失了?WinRT應用程序和區域設置。根據用戶的區域設置格式化日期和數字的正確方法是什麼?
爲了驗證這一點,我開始通過創建一個WPF應用程序。該應用程序會打印出的CurrentCulture和格式化DateTime.Now:
private void Culture_Loaded_1(object sender, RoutedEventArgs e)
{
this.Culture.Text = System.Globalization.CultureInfo.CurrentCulture.DisplayName;
}
private void Date_Loaded_1(object sender, RoutedEventArgs e)
{
this.Date.Text = DateTime.Now.ToString();
}
這裏是我的默認區域設置:
運行時,應用程序顯示在芬蘭格式的日期:
然後我將區域設置更改爲美國:
而當應用程序被再次運行,文化和格式更改:
這是如我所料一切工作,這也是我沒有料到的WinRT應用工作。
因此,下一步,我創建了一個具有相同代碼的WinRT(XAML & C#)應用程序,並將區域設置恢復爲芬蘭語。問題:
即使我已經通過區域設置該格式應該是「芬蘭」定義的,WinRT的應用程序將顯示美國格式化的日期時間。然後我修改了應用程序的項目文件並提出FI-FI的默認語言:
這一變化也修改了應用程序的文化:
奇怪。我將默認語言更改回默認值,並將格式恢復爲美國。然後,我在項目內創建了文件夾「Strings-fi-FI」,並在項目中添加了一個空的「Resources.resw」。這個空文件似乎是不夠的,因爲我現在越來越芬蘭格式:當我刪除空資源文件
,將打印格式返回到美國:
很奇怪。
這導致了幾個問題,但我認爲的主要問題是:WinRT應用程序是否不像WPF應用程序那樣遵循用戶的區域設置?
所以,實際上可以如何獲取/尊重用戶分區格式設置? 我開始使用以下配置的windows phone 8.1仿真器進行測試: UI語言:德語,地區:美國,格式設置:愛爾蘭語 我找不到信息,用戶已將其格式設置愛爾蘭人。我唯一的願望是像用戶想要看到的那樣格式化日期時間。和區域格式不會自動意味着它的區域我將設備設置爲或我選擇的用戶界面語言。在我的設備上,我將用戶界面設置爲英文,但希望以德文格式查看所有時間戳記和日期... – Kornelis
謝謝,以下內容非常棒,因爲我需要ISO 3166-1 alpha2 https://en.wikipedia.org/ wiki/ISO_3166-1_alpha-2 GeographicRegion userRegion = new GeographicRegion(); string regionCode = userRegion.CodeTwoLetter; – Quincy
這對我有效,但現在我需要大數字和'CurrencyFormatter'不支持小數,所以我需要一個解決方法... –