Silverlight应用程序中的文化

时间:2011-11-19 12:16:03

标签: silverlight override cultureinfo

我正在开发一个转换为多种语言的Silverlight应用程序。它是一个商业应用程序,来自许多不同国家的人们使用它。

应用程序用户界面中的字符串将取决于正在使用的UICulture,这取决于Web浏览器配置使用的语言。如果用户浏览器配置为使用我们尚未翻译的语言,我们只需覆盖UICulture即可显示en-US翻译。例如,如果用户使用的是en-GB语言,我们会选择显示en-US翻译。

现在我试图了解应用文化是否需要类似的东西(注意:不是UICulture)。例如,如果英国用户使用我的Silverlight应用程序,他希望他的日期以DD / MM / YYYY格式显示。但是如果美国用户使用它,他希望根据MM / DD / YYYY进行格式化。如果一个瑞典人出现,他想要YYYY-MM-DD。据我所知,所有这些都是自动处理的(根据网络浏览器中选择的语言而有所不同)。并且只要我使用适当的数据类型来表示值(DateTime来表示例如日期)并且不假设愚蠢的事情(例如假设DateTime.Now.ToString()将始终以YYYY格式返回日期 - MM-DD无论用户文化如何,我相信我不需要在文化方面做一些特别的事情。

我意识到应用程序调用的Web服务必须将DateTime作为参数,或者,如果Web服务始终假定字符串格式为YYYYMMDD的日期,则客户端代码必须在调用Web服务之前正确格式化日期。

我的问题:

在某些情况下是否需要覆盖Silverlight应用程序的默认Culture以防止内容破坏?

我也意识到有些用户可能更喜欢选择自己的文化,而不是依赖于网络浏览器设置的应用,但这还不是必需的。我更倾向于理解,如果不是压倒文化,在某些情况下可以破坏事物。

1 个答案:

答案 0 :(得分:0)

您可以使用:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-GB");
ci.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
ci.DateTimeFormat.ShortTimePattern = "HH:mm:ss tt";

并假设您的日期位于DATE var。

然后将其用作

var date= System.DateTime.Parse(VitalinfoArray[2].Trim(),ci);

它会根据浏览器的文化给出日期。