6

在美国,您使用“。” 作为分隔符,但在德国您使用“,”。我正在尝试测试我的逻辑是否足够聪明,可以处理其中任何一个,但我似乎无法将我的 Windows 2000 机器置于德语模式。

我去了控制面板,区域选项,并将“您的语言环境”更改为“德国”。然后我重新启动了 IIS 和 SQL Server。但是我的更改似乎没有生效。

这些行仍然显示“。” 成为分隔符。

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name);

Response.Write(ci.NumberFormat.NumberDecimalSeparator);

我究竟做错了什么?

4

9 回答 9

6

最好的测试方法是在 web.config 中添加一个全球化元素,例如:

<system.web>
   <globalization culture="de-DE" uiCulture="en-US" />
</system.web>

将文化更改为 de-DE 将影响日期和数字格式:您也可以根据需要更改 uiCulture,将 uiCulture 保留为 en-US 意味着您将收到美国英语的异常消息。

于 2009-04-04T17:46:23.950 回答
3

当您设置区域设置时,您是否确保“将所有设置应用于当前用户帐户和默认用户配置文件”(高级选项卡)?

在大多数情况下应该这样做。我还假设您的文化未globalizationWeb.config.

您似乎不想通过在代码中手动设置文化设置来做到这一点,而是希望它们由系统设置继承。IMO 是一种很好的检查方式,因为您的更改也应该传播到 SQL 服务器。

于 2009-04-04T17:31:08.513 回答
1

让网站处理格式问题(如小数分隔符)依赖于 Web 服务器的语言环境通常是错误的。这增加了一个服务器配置问题,这可能使您的应用程序更难部署,而实际上并不一定要为最终用户提供他们想要的东西。例如,您可能希望将同一应用程序的法语和英语部署安装到单个(加拿大!)服务器。

由于遗留问题(例如,仅在日语中运行的应用程序,或在世界各地运行 en-US 作为“Windows 的规范版本”的生产服务器),将系统区域设置设置为不合适的内容也很常见。

通常最好在应用程序层处理这个问题,每个站点代码部署一个区域设置选项,或者(如果需要)站点的每个用户一个区域设置选项。然后任何人都可以登录到应用程序并获得适当的数字格式。

最后,如果您的应用程序界面完全是英文,那么坚持使用英文数字格式可能更合适。德国人会习惯这一点的;将英语和德语 UI 约定混合在一起实际上可能会更令人困惑。IMO:彻底本地化,或者根本不本地化。

于 2009-04-04T17:47:15.463 回答
0

我认为您所追求的是“格式”选项卡(那里的第一个)。

于 2009-04-04T17:29:25.100 回答
0

您可以将当前的文化设置为德语。

我认为这比切换区域设置更容易

于 2009-04-04T17:30:37.280 回答
0

如果你真的想打这个......虚拟机是你的朋友。但是您确实需要订阅 msdn 才能获得德语版的操作系统。

将操作系统(WinXP 或 Vista)加载到虚拟机中,然后浏览到网站。

于 2009-04-04T17:33:32.517 回答
0

我不认为 IIS 使用区域设置。您需要在代码中明确设置 CultureInfo。

于 2009-04-04T17:34:09.050 回答
0

如果您只是测试一次,则可以将行更改为:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE");

然后再改回来。如果你想做一堆单元测试,你可以使用这样的字符串。

于 2009-04-04T17:41:27.223 回答
0

我可以澄清一下吗,您想让您的机器进入德语模式以测试您的 Web 应用程序,而该应用程序恰好与浏览器在同一台机器上运行?

当它真正运行时,我们可以假设服务器可以托管在德国以外的地方(或者可能在德国,但在设置为美国语言环境的机器上 - 这种情况经常发生)。如果是这样,在服务器上设置文化并不是您真正想要的,而且您在部署时可能无法做到这一点。

您还有另一个问题,没有万无一失的方法可以检测您的用户想要使用哪种文化。您可以从 HTTP 标头中检测各种信息,对 IP 地址进行域查找,但是如果说德语的人想从美国使用您的网站,或者美国人在德国并且想查看“.”,该怎么办?而不是“,”作为小数分隔符?

换句话说,我的意思是你的客户的电脑使用什么文化并不重要——这无关紧要,因为一旦你浏览了网络,所有的赌注都没有了——即使你的应用程序确实正确地检测到了你的文化,它也可能不会成为您的用户想要的!

因此,我这样做的方式是询问用户他们想要什么语言,然后在运行时在应用程序中明确设置语言环境。这确实意味着要求用户选择一种语言,但这是确保为用户使用正确语言环境的唯一方法。如果您的所有用户都是德国人,那么您不必问,您只需硬编码即可。如果他的方法听起来可行,那么这里有一些很好的示例代码:http: //msdn.microsoft.com/en-us/library/bz9tc508.aspx

祝你好运,或者更确切地说是 Viel Glück!

于 2009-04-04T17:58:56.387 回答