【问题标题】:ASP.NET Globalization -- Displaying datesASP.NET 全球化——显示日期
【发布时间】:2008-11-19 15:07:02
【问题描述】:

早上好,

为新手问题道歉。我刚开始使用ASP.NET国际化设置。 P>

背景信息:

我有一个网站,其显示<table> HTML对象。在<table> HTML对象,我有显示日期的列。我的服务器在美国是,这些日期显示为MM/DD/YYYY。我的许多用户插入此网页通过Excel中,通过数据 - >导入外部数据 - >导入Web查询界面。我的用户,大部分都在美国,因此这些日期在他们的Excel屏幕正确显示。 P>

现在我需要做的英国用户网页的工作。如,它们被下载的日期作为MM/DD/YYYY,这使得他们的电子表格无法使用,因为它们的区域设置被设置为DD/MM/YYYY P>

我的问题是:

我如何使它所以Web服务器意识到传入的请求具有en-GB文化背景?我可以工程师我自己的小的定制解决办法,但我敢肯定,我不是第一个程序员遇到这一点。如何亲的处理呢?我在寻找,这将是相对简单和快速的把一个解决方案,但我不想只是把一些蹩脚的马车一块我自己的逻辑的togethe的,我要去从现在畏惧6个月。

非常感谢预先 -Alan。 P>

【问题讨论】:

  • 它的I18N不i13n。有人可以改变这个标签? SPAN>

标签: c# asp.net internationalization globalization


【解决方案1】:

几点:

  • 元素也需要属性culture="auto"。 uiCulture 属性影响用于检索资源的语言。文化属性影响用于格式化数字和日期的文化。

  • this MSDN article 中所述,仅依靠浏览器设置来确定页面的 UI 文化并不是最佳实践。用户经常使用未设置为其偏好的浏览器(例如,在网吧中)。您应该为用户提供一种方法来明确选择页面的语言或语言和文化(CultureInfo 名称)。

【讨论】:

  • 就是这样!谢谢。我无法让 web.config 正常工作,但是您的第一条评论一切正常。这样我就不用写任何代码了。非常非常感谢。
【解决方案2】:

如果您愿意,您可以允许浏览器自动设置您的 UI 文化,方法是打开 web.config,如下所示:

<configuration>
   <system.web>    
       <globalization uiCulture="auto" />
       ...

然后浏览器设置的文化会自动在你的应用中设置。这意味着当您让框架显示日期/时间值时,它们将根据当前线程的 UI 文化进行格式化。

如果您使用货币和/或本地化文本,这也会有所帮助(但是您必须为您支持的每种文化提供本地化资源)。

【讨论】:

    【解决方案3】:

    您还可以接受查询字符串参数来覆盖文化设置。

    文化初始化应该在 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

    【讨论】:

    • 实际上,这个网页是从 Excel 加载项调用的。我不想过多地从 VBA 中检测机器的区域设置 :)。
    • 不过,我应该在哪里初始化文化非常好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    相关资源
    最近更新 更多