2014-10-11 78 views
1

我在asp.net中有一个巨大的web应用程序,它是为美国客户开发的。如何更改基于区域的环境设置

  1. 现在我想用英国客户相同的应用程序,但这里的问题是日期格式对于我们将是MM/dd/yyyy格式,其中在英国,它会dd/MM/yyyy
  2. 同样的标签将从国家不同而不同,例如在我们的客户会参考如“检查”,但在英国,同样会“检查”

我怎样才能从这些兼容性问题解决。

而这些标签具有需要更改而不更改任何代码的内联值。

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

请任何人都建议我做这件事的方式..

+0

是的,您可以使用资源文件,但您应该对代码进行一些更改。这不会是很大的一部分。只需进行有条件的检查,并为Resource文件中的控件提供适当的值。 – 2014-10-13 10:34:09

回答

1
  1. 对于不同的日期格式,可以使用CultureInfo类在.NET

http://msdn.microsoft.com/en-us/library/5hh873ya%28v=vs.90%29.aspx

它应该很容易

  1. 按钮上的不同文字 - 我想你会需要一些东西e翻译资源,即使语言(我们和en)几乎相同。

http://msdn.microsoft.com/en-us/library/vstudio/ms247246%28v=vs.100%29.aspx

+0

:如果客户端浏览我们的相同应用程序,以及英国将如何执行..? – ShaQue 2014-10-13 12:08:25

+0

第一个由Windows语言和区域设置解决,第二个由应用程序设置解决,如Web应用程序顶部的语言选择器。 – WholeLifeLearner 2014-10-14 09:05:40

+0

:我试过这些方法,但iam无法从数据库的值更新资源文件。 – ShaQue 2014-10-14 09:37:16

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,没有像上面那样的配置可以将“检查”更改为“检查”。

    如果当前文本存储在数据库中,请考虑添加文化列,并为两种文化都设置一个版本,或者在en-GB中存储所有en-US和异常(如果未找到异常,请使用en-美国作为默认)

    current account en-US 
    cheque account  en-GB 
    

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

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