1

早上好,

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

背景资料:

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

现在我需要让网页为英国用户工作。照原样,他们将日期下载为MM/DD/YYYY,这使得他们的电子表格无法使用,因为他们的区域设置设置为DD/MM/YYYY

我的问题是:

如何使 Web 服务器意识到传入的请求具有en-GB文化设置?我可以设计自己的小自定义解决方法,但我敢肯定我不是第一个遇到这种情况的程序员。专业人士如何处理?我正在寻找一个相对简单且快速安装的解决方案,但我不想只是将我自己的逻辑中的一些糟糕的错误部分放在一起,我会在 6 个月后害怕。

提前非常感谢,-艾伦。

4

3 回答 3

2

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

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

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

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

于 2008-11-19T15:11:34.210 回答
2

几点:

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

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

于 2008-11-19T16:38:37.153 回答
1

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

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

于 2008-11-19T16:54:12.583 回答