我刚刚从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.
我错过了什么吗?
我需要将CurrentCulture修复为ASP.NET应用程序中的不变文化.我怎样才能做到这一点?
<configuration>
<system.web>
<globalization culture="???" />
...
Run Code Online (Sandbox Code Playgroud) 全球化和本地化有什么区别?
鉴于以下两种文化:
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"文化相同?
我有一些我想测试的代码.我想检查String是否由我在资源中的各种字符串正确组成.这里的挑战是处理我的资源中的多个翻译.我知道在测试桌面应用程序时,语言环境可能是一个问题,并且建议您创建与语言环境无关的测试.
我发现您可以以编程方式设置区域设置,但不建议这样做(请参阅Android中以编程方式更改语言).虽然这个问题的目的是在正常运行应用程序时在运行时更改语言环境,但我想知道是否有更好的解决方案来解决我的问题.
你能推荐一种为WPF应用程序实现多语言系统的好方法吗?我现在使用的方法涉及XML,类和xaml扩展.它在大多数情况下工作正常,但是当我不得不处理动态标签或动态文本时,它需要一些额外的努力.我想让程序员只在主要问题上工作并忘记lang问题.
在运行时更改Form语言的正确方法是什么?
InitializeComponent();关于这一点有很多一半的书面线程,但没有一个提供真正的答案,正确的方法是什么?
更新:
澄清我的问题:
做这样的事情:
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#system/globalization命名空间中是否有一组包含有效文化名称的常量或枚举?
我正在寻找一些东西,所以我不必输入"en-GB"等.
我有以下内容:
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.
有没有办法在没有字符串拆分的情况下获得它?
我正在尝试构建一个多语言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客户端验证的最佳方法.
编辑 …
globalization ×10
c# ×4
.net ×2
asp.net ×2
culture ×2
localization ×2
android ×1
asp.net-mvc ×1
multilingual ×1
uiculture ×1
unit-testing ×1
validation ×1
web-config ×1
winforms ×1
wpf ×1
xaml ×1