如何根据区域更改环境设置

时间:2014-10-11 08:55:01

标签: asp.net c#-4.0 translation culture

我在asp.net中有一个巨大的Web应用程序,它是为美国客户开发的。

  1. 现在我想为英国客户使用相同的应用程序,但问题是我们的日期格式为MM/dd/yyyy格式,而在英国,它将是dd/MM/yyyy
  2. 同样,标签因国家/地区而异,例如在美国,客户将参考" Check"但是英国的情况将是"检查"
  3. 我如何克服这些兼容性问题。

    这些标签的内联值需要在不改变任何代码的情况下进行更改。

    我看到有关资源文件的事情,但是我不知道如何为不同的地区日期,货币格式实现这个。或者如何使用这些资源进行日期转换......?或者我们有其他任何格式做这些..?

    请有人建议我这样做的方法..

2 个答案:

答案 0 :(得分:1)

  1. 对于不同的日期格式,您可以在.NET中使用CultureInfo类
  2. http://msdn.microsoft.com/en-us/library/5hh873ya%28v=vs.90%29.aspx

    应该很容易

    1. 按钮上的不同文本 - 我认为你需要翻译资源,即使语言(我们和en)几乎相同。
    2. http://msdn.microsoft.com/en-us/library/vstudio/ms247246%28v=vs.100%29.aspx

答案 1 :(得分:1)

  1. 在大多数情况下,使用web.config可以在没有任何代码的情况下格式化日期和数值。

    如果您只需要设置一个(默认)文化(en-US或en-GB),请使用

    <globalization culture="en-GB" />
    

    如果您拥有同一网站上的所有用户,并且应根据用户设置(浏览器客户端语言read more here)进行更改,那么您可以尝试

    <globalization culture="auto:en-US" />
    

    如果要通过代码更改文化,请使用

    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");  
    
  2. 标签的翻译无法自动完成。存在许多差异,see some of them here并且没有像上面那样的配置可以改变&#34;检查&#34;到&#34;检查&#34;。

    如果当前文本存储在数据库中,请考虑添加一个文化列,并且要么具有两种文化的版本,要么将所有en-US和例外存储在en-GB中(因此,如果未找到例外,请使用en-US默认情况下)

    current account    en-US
    cheque account     en-GB
    

    这意味着需要更改所有sql查询以根据当前文化选择文本。

    如果在aspx中硬编码文本,请考虑使用资源文件。请参阅localization in asp.net web forms with one global resource