我正在研究跨所有语言(共4个)应具有相同NumberFormat和DateTimeFormat的多语言应用程序。 我觉得最好的方法是只设置一次这些格式,而不是每次将值转换为字符串,因为这可能会遗忘某些值并导致错误。用于多语言UWP应用程序的自定义NumberFormat
在Silverlight应用程序,这是可以实现的方式如下:
var cultureInfo = new CultureInfo(languageCode);
cultureInfo.NumberFormat.NumberGroupSeparator = " ";
cultureInfo.NumberFormat.NumberDecimalDigits = 2;
cultureInfo.NumberFormat.NumberDecimalSeparator = ",";
cultureInfo.DateTimeFormat.ShortDatePattern = "dd'/'MM'/'yyyy";
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
由于Thread.CurrentThread.CurrentCulture
不再可用,我使用CultureInfo.CurrentCulture
代替。 不幸的是,通过使用此方法,customInfo似乎并未在整个应用程序中设置。我在OnLaunched
方法中设置了文化,所以我认为它设置在正确的线程上。
我知道,自WinRT以来,应用程序只能运行在应用程序有资源的文化之一,但这是否意味着我们不能再覆盖NumberFormat?或者有更好的方法来达到我想要的结果吗?
这是你的答案,这是从Github描述复制粘贴的另一个。 – Ian
使用源代码进行更新 –