有人能给我一些关于.NET框架之间Culture和UICulture内部区别的更多信息吗?他们做什么以及何时使用什么?
我刚刚从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.
我错过了什么吗?
是否有可能在WinRT中即时更改UI文化?我发现ApplicationLanguages.PrimaryLanguageOverride = "en";,但这仅在显示应用程序UI之前有效,而不是之后(例如我想通过设置更改UI语言).
TL;DR:是否可以使用 Visual Studio 2015 的 MSBuild使用直接方法在命令行上更改 MSBuild 的消息语言,而不是弄乱系统设置?如何?
\n\n我们有一个“很久以前”的问题,本质上是重复的,但恕我直言,答案表明这个问题需要改进。
\n\n我需要它在 VS2015 及更高版本上工作,所以我不太关心旧版本。
\n\n所以,这里有一些事实:
\n\nMSBuild.exe)在德语系统上输出英语消息!\n\ndevenv.exe能够驾驶MSBuild.exe使用不同的语言。以机智:
\n\nc:\\temp\\TestApp>msbuild TestApp.sln /t:rebuild /v:normal\n\nMicrosoft (R)-Buildmodul, Version 14.0.25420.1\nCopyright (C) Microsoft Corporation. Alle Rechte vorbehalten.\n\nDie Projekte in dieser Projektmappe werden nacheinander erstellt. Um eine parallele Erstellung zu erm\xc3\xb6glichen, m\xc3\xbcssen …Run Code Online (Sandbox Code Playgroud) 我的应用程序的每个用户都将选择他们的国家/地区,之后它将存储在cookie中并存储以供以后的请求使用.一切都运转正常,但我需要在会议开始时设置文化.我目前正在尝试将web.config中的文化设置为en-GB,然后使用Global.asax覆盖会话到en-US的文化.代码如下
protected void Session_Start(object sender, EventArgs e)
{
if (Globals.CountryID == 8)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
}
}
Run Code Online (Sandbox Code Playgroud)
countryID为8,文化在以下代码中设置为en-US.但是,当我导航到设置了ToString("C")的页面时,它仍然以GBP显示,文化仍然是en-GB.
有什么建议?
我需要创建数据库驱动的元关键字/描述。我会将这些记录存储在我认为是xml格式的数据库中;因为这是每个文化。
我将如何去做?
任何反馈,建议,帮助,我们将不胜感激。谢谢
在我在 Win 10 下修改 PS 5.1 期间,与问题的目标完全更改当前 PowerShell 会话的语言(包括文化)相关,\n我遇到了几个相关问题。
\n与 UICulture 关联的 Windows 设置在哪里?\n我没有找到“区域和语言”控制面板的“键盘和语言”选项卡,如此处所示。
\n这可以在 PS 中持续更改吗?\n到目前为止我发现的所有内容都只保留在会话中。
\n设置设置- >时间和语言->语言-> Windows 显示语言显示“Espa\xc3\xb1ol (Espa\xc3\xb1a)”,PS 给出
\n> Get-UICulture ; [System.Threading.Thread]::CurrentThread.CurrentUICulture ; [CultureInfo]::CurrentUICulture ;\nLCID Name DisplayName\n---- ---- -----------\n1033 en-US English (United States)\n1033 en-US English (United States)\n1033 en-US English (United States)\nRun Code Online (Sandbox Code Playgroud)\n没有任何干预更改并且在刚刚启动的会话中。
\n如何正确设置文化以使标签的内容为“seg”(巴西葡萄牙语的星期一)?
为 TextBlock 文本绑定设置 ConverterCulture 会将其更改为 pt-BR,但为标签的内容绑定设置 ConverterCulture 不会。下面的 XAML。
<Window x:Class="CurrentCulture.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.Resources>
<sys:DateTime x:Key="Td:Mon">2007-1-1</sys:DateTime>
</Grid.Resources>
<StackPanel>
<Label Content="{Binding Source={StaticResource Td:Mon}, ConverterCulture=pt-BR}" ContentStringFormat="{}{0:ddd}" />
<TextBlock Text="{Binding Source={StaticResource Td:Mon}, ConverterCulture=pt-BR,StringFormat={}{0:ddd}}" />
</StackPanel>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud) uiculture ×8
culture ×3
.net ×2
asp.net ×2
asp.net-mvc ×1
c# ×1
cultureinfo ×1
msbuild ×1
powershell ×1
windows-10 ×1
wpf ×1
xaml ×1