标签: globalization

CurrentCulture在ASP.net中错误地默认为en-US

我刚刚从Windows Sever 2003上的IIS 6迁移了大约100个ASP.net站点到Windows 2008上的IIS 7.我刚刚注意到使用DateTime.Parse之类的各种代码片段已经开始引发错误"字符串不是被认为是有效的DateTime".我已经跟踪了这一事实,即网站的CurrentCulture默认为"en-US",因此我的英国用户以意想不到的格式输入日期.

问题是,他们从哪里来到美国?从顶部开始,如果我查看"控制面板>区域和语言",一切都将设置为英语(英国).的网站的web.configs没有任一<全球化>部分或有它设置为<全球化文化="自动"的UICulture ="自动" />.在'IIS7 - .Net全球化'中,所有网站都将其文化设置为"不变语言(Invariant Country)".

我无法找到将文化设置为"en-US"的任何地方......但有些东西是.

Thread.CurrentThread.CurrentCulture.Name is outputting 'en-US'
Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol is outputting '$'
Run Code Online (Sandbox Code Playgroud)

我可以通过在每个web.config中添加<globalization culture ="en-GB"uiCulture ="en-GB"/>来解决这个问题但是我真的不想手动编辑大约100个web.configs!我不想从服务器操作系统设置继承文化,这些设置设置为en-GB.

我错过了什么吗?

asp.net globalization culture uiculture

26
推荐指数
2
解决办法
4万
查看次数

如何在ASP.NET全球化中配置不变文化?

我需要将CurrentCulture修复为ASP.NET应用程序中的不变文化.我怎样才能做到这一点?

<configuration>
   <system.web>
      <globalization culture="???" />
   ...
Run Code Online (Sandbox Code Playgroud)

asp.net globalization web-config

25
推荐指数
2
解决办法
7万
查看次数


.NET:InvariantCulture和en-US之间有什么区别吗?

鉴于以下两种文化:

CultureInfo c1 = InvariantCulture;
CultureInfo c2 = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)

我要检查两种文化特有的每一条信息,例如:

c1.DateTimeInfo.ShortDatePattern;
c2.DateTimeInfo.ShortDatePattern;

c1.DateTimeInfo.LongDatePattern;
c2.DateTimeInfo.LongDatePattern;

c1.NumberFormat.CurrencyDecimalDigits;
c2.NumberFormat.CurrencyDecimalDigits;

c1.TextInfo.IsRightToLeft;
c2.TextInfo.IsRightToLeft;
Run Code Online (Sandbox Code Playgroud)

我会发现有什么不同吗?

换句话说,InvariantCulture,出于各种目的,是否与"en-US"文化相同?

.net globalization culture internationalization

25
推荐指数
2
解决办法
6962
查看次数

Android上的单元测试期间的区域设置

我有一些我想测试的代码.我想检查String是否由我在资源中的各种字符串正确组成.这里的挑战是处理我的资源中的多个翻译.我知道在测试桌面应用程序时,语言环境可能是一个问题,并且建议您创建与语言环境无关的测试.

我发现您可以以编程方式设置区域设置,但不建议这样做(请参阅Android中以编程方式更改语言).虽然这个问题的目的是在正常运行应用程序时在运行时更改语言环境,但我想知道是否有更好的解决方案来解决我的问题.

globalization android unit-testing

25
推荐指数
1
解决办法
8427
查看次数

WPF中的多语言

你能推荐一种为WPF应用程序实现多语言系统的好方法吗?我现在使用的方法涉及XML,类和xaml扩展.它在大多数情况下工作正常,但是当我不得不处理动态标签或动态文本时,它需要一些额外的努力.我想让程序员只在主要问题上工作并忘记lang问题.

globalization wpf multilingual xaml

22
推荐指数
2
解决办法
3万
查看次数

在运行时更改语言的正确方法

在运行时更改Form语言的正确方法是什么?

  1. 设置使用递归喜欢手动控制所有
  2. 将语言选择保存到文件>重新启动应用程序>加载语言选择之前 InitializeComponent();
  3. 使用Form构造函数替换active的实例(如果这是可能的话)
  4. 还有别的

关于这一点有很多一半的书面线程,但没有一个提供真正的答案,正确的方法是什么?

更新:
澄清我的问题:

做这样的事情:

public Form1()
{
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
    this.InitializeComponent();
}
Run Code Online (Sandbox Code Playgroud)

工作正常,我的所有控件和资源中的其他所有内容都可以正确翻译.做一些像:

private void button1_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
}
Run Code Online (Sandbox Code Playgroud)

什么都不做,表格保持我以前设置的语言 InitializeComponent();

c# globalization localization winforms

22
推荐指数
2
解决办法
4万
查看次数

CultureInfo名称的常量

C#system/globalization命名空间中是否有一组包含有效文化名称的常量或枚举?

我正在寻找一些东西,所以我不必输入"en-GB"等.

.net c# globalization

22
推荐指数
2
解决办法
1万
查看次数

如何从CultureInfo获取国家/地区代码?

我有以下内容:

System.Globalization.CultureInfo c = new System.Globalization.CultureInfo("en-GB");

var a = c.DisplayName;
var b = c.EnglishName;
var d = c.LCID;
var e = c.Name;
var f = c.NativeName;
var g = c.TextInfo;
var h = c.ThreeLetterISOLanguageName;
var i = c.ThreeLetterWindowsLanguageName;
var j = c.TwoLetterISOLanguageName;
Run Code Online (Sandbox Code Playgroud)

这些都没有给我国家代码,例如GB.

有没有办法在没有字符串拆分的情况下获得它?

c# globalization

21
推荐指数
4
解决办法
3万
查看次数

处理不同文化验证的最佳方法是什么?

我正在尝试构建一个多语言MVC应用程序.我的应用程序中有一个表单,我有字段输入成本.我能够使用西班牙文化创建一个记录.

但是在尝试更新记录时,我得到了jquery验证错误.我收到一条默认错误消息:

该字段必须为数字.

在我的视图模型中,我设置了以下属性.

[LocalizedDisplayName("Label_Cost")]
[RegularExpression("^[^<>,<|>]+$", ErrorMessage = null, ErrorMessageResourceName = "Error_Message_Html_Tags_Prevented", ErrorMessageResourceType = typeof(Resources))]
[Range(0, 9999.99, ErrorMessage = null, ErrorMessageResourceName = "Error_Message_Cost_Not_Valid", ErrorMessageResourceType = typeof(Resources))]
public decimal? Cost { get; set; }
Run Code Online (Sandbox Code Playgroud)

我已经在我的Gobal.asax文件中设置了以下内容

protected void Application_AcquireRequestState(object sender, EventArgs e)
{
    try
    {
        HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("CurrentCulture");
        string culutureCode = cookie != null && !string.IsNullOrEmpty(cookie.Value) ? cookie.Value : "en";
        CultureInfo ci = new CultureInfo(culutureCode);
        System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
        System.Threading.Thread.CurrentThread.CurrentCulture =
        CultureInfo.CreateSpecificCulture(ci.Name);
    }
    catch(Exception ex)
    {
        // Code
    }
}
Run Code Online (Sandbox Code Playgroud)

并且上述方法在服务器端按预期工作以改变文化.但是客户端验证打破了非英语文化,因为javascript只识别十进制文字.我想知道使用特定于文化的验证来扩展mvc客户端验证的最佳方法.

编辑 …

c# globalization validation asp.net-mvc asp.net-mvc-4

21
推荐指数
1
解决办法
7211
查看次数