早上好,

道歉的新手的问题。我才刚开始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 ( );
}

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top