ASP.NET 全球化显示的日期
-
08-07-2019 - |
题
早上好,
道歉的新手的问题。我才刚开始ASP.NET 国际化设置。
背景信息:
我有一个网站,其中显示一个 <table>
HTML对象。在那 <table>
HTML目的,我有一栏显示的日期。我的服务器是在美国,这些日期显示为 MM/DD/YYYY
.我的许多用户插入这个网页经过Excel、通过数据-->进口的外部数据-->的进口网查询的接口。我的用户,大部分是在美国,所以这些日期显示出是否正确,在他们的Excel的屏幕。
现在我需要使该网页的工作,为英国的用户。是的,他们正在下载日期为 MM/DD/YYYY
, ,这使得他们的电子表格无法使用,因为他们的区域设置是 DD/MM/YYYY
.
我的问题是:
我怎么做这样的网络服务器实现的进入请求有一个 en-GB
文化?我可以工程师我自己很少定制的解决方法,但我确信我不是第一个程序员碰到这一点。怎么亲的处理这事?我在寻找一个解决方案,将相对简单和快速投入,但我不想只是把一些蹩脚的马车我自己的逻辑,本,我会害怕6个月。
谢谢你提前, -艾伦。
解决方案
几点:
的 <globalization> 元素也需要属性的文化="自动"。该uiCulture属性会影响的语言,用于检索资源。文化属性会影响的文化,使用的格式化数字的一个日期。
正如在 这MSDN文章, 它不是一个好的实践做法完全依靠浏览器的设置,以确定UI文化的一页。用户经常使用浏览器,不设定自己的偏好(例如,在一个因特网咖啡厅).你应该提供一种方法,用于用户,以明确选择的语言或语言和文化的(默的名称)的一页。
其他提示
您可以让浏览器设置你的UI文化,如果自动希望,通过打开web.config中,像这样的:
<configuration>
<system.web>
<globalization uiCulture="auto" />
...
然后通过浏览器设置的文化会自动在你的应用程序设置。这意味着,当你的框架显示日期/时间值,他们会根据当前线程的UI文化格式化。
这也将有助于如果您使用的货币和/或本地化的文本(但是你必须为你支持每个文化提供本地化的资源)。
您也可以接受查询字符串参数重写区域性设置。
文化初始化应该在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 ( );
}