【问题标题】:how to change default culture settings in a .net web application?如何更改 .net Web 应用程序中的默认文化设置?
【发布时间】:2009-07-22 18:44:25
【问题描述】:

我们的网络应用程序 (.net/C#) 使用 amount.ToString("c") 格式化货币金额,显示为几个不同区域的本地化。

我们的法语 Candian 用户更喜欢所有金额都是美国格式(123,456.99 与 fr-CA 的默认 windows 方式 123 456,99)。

最好的处理方法是什么?我可以简单地在 windows 中为 fr-ca 修改每个网络服务器上的区域设置吗?还是我需要创建一种自定义文化?

【问题讨论】:

    标签: c# windows internationalization


    【解决方案1】:

    您可能希望研究创建自定义文化,提供您需要的格式规则组合。 There is an article at MSDN describing how to do it.

    简而言之,您创建一个CultureAndRegionInfoBuilder 对象、定义名称、设置属性并注册它。详情请查看文章。

    【讨论】:

    • 这比我想象的要容易得多——您可以加载现有的文化,修改一个值,并将其保存为新的文化。完美。
    【解决方案2】:

    您可以像这样修改当前文化:

    Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA")
    

    当然,您可以从 web.config 中提取值。

    编辑:

    好的,对不起,我误会了。

    这可能有效:

      decimal d = 1232343456.99M;
      CultureInfo USFormat = new CultureInfo("en-US");      
      Console.Out.WriteLine(d.ToString(USFormat));
    

    这应该允许您在输出数字值时只使用 USFormat。

    【讨论】:

    • 是的,我们目前正在这样做,但我们的 fr-CA 用户不想要那种文化的标准格式,他们只想要美元金额的美国格式。所以,它就像一种混合文化。
    • 如果当前的文化是 fr-CA,我宁愿不必破解代码以仅显示美元金额的美国格式。
    • @pinkmuppet:您可以将“fr-CA”分配给 CurrentUICulture,将“en-US”分配给 CurrentCulture;这将使应用程序在使用 en-US 格式化数字和日期时加载 fr-CA 资源(字符串资源等)。
    • @fredrik:是的,但不幸的是,这也会改变日期格式。他们希望更改货币金额。 :-)
    【解决方案3】:

    我将为应用程序创建一个用户设置,它将保存每个用户的 CultureInfo,并创建一个表单以允许每个用户编辑属性 ....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-05
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 2015-12-07
      相关资源
      最近更新 更多