【问题标题】:How to change the environment settings based on region如何根据地区更改环境设置
【发布时间】:2014-10-11 08:55:00
【问题描述】:

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

  1. 现在我想为英国客户使用相同的应用程序,但这里的问题是我们的日期格式将是 MM/dd/yyyy 格式,而在英国它将是 dd/MM/yyyy
  2. 同样,标签会因国家/地区而异,例如在我们客户将称为“支票”,但在英国将是“支票”

我该如何克服这些兼容性问题。

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

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

请任何人都可以建议我这样做的方法..

【问题讨论】:

  • 是的,您可以使用资源文件,但您应该对代码进行一些更改。这不会是一个很大的部分。只是条件检查,并为资源文件中的控件提供适当的值。

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


【解决方案1】:
  1. 对于不同的日期格式,您可以使用 .NET 中的 CultureInfo 类

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

应该很简单

  1. 按钮上的不同文本 - 我认为您将需要翻译资源之类的东西,即使语言(我们和英语)几乎相同。

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

【讨论】:

  • :如果客户端从我们和英国浏览相同的应用程序,这将如何执行..?
  • 第一个由windows语言和区域设置解析,第二个由应用程序设置解析,如Web应用程序顶部的语言选择器。
  • :我尝试了这些方法,但无法从数据库的值更新资源文件。
  • 那么“不更改任何代码”是什么意思?
  • '不更改任何代码'的意思是,我不想用对应的值替换静态字符串文本
【解决方案2】:
  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 并且没有像上面那样可以将“check”更改为“cheque”的配置。

    如果当前文本存储在数据库中,请考虑添加一个文化列,并为两种文化提供一个版本,或者将所有 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

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    相关资源
    最近更新 更多