- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 .NET 3.5 框架的基于 WinForms 的应用程序。该应用程序具有某些资源的本地化版本。
当我在运行 Windows XP 副本的机器上运行该应用程序时,该副本最初安装时使用 en-US 作为默认区域性,但随后将默认区域性设置为 en-CA,CurrentCulture 和 CurrentUICulture 均默认为 en-US .
为什么会发生这种情况?我需要更改什么才能使应用程序开始使用当前的操作系统文化作为其默认设置?
最佳答案
用户从未在 Windows 设置中提及她最喜欢的语言本身:她在控制面板中设置她的文化,例如英语(加拿大)又名 en-CA。这个选择体现在 Thread.Culture属性(property)。 Windows 使用它来确定如何显示和格式化诸如日期(包括日期和月份的格式和名称)、货币、...
另一个设置是安装 Windows (GUI) 的语言(在您的情况下很可能是英语(美国))。这反射(reflect)在 Thread.CurrentUICulture .当然,这个选项的可用选择较少,因为它反射(reflect)了 GUI 的语言(菜单、按钮、帮助……)。例如没有 en-CA CurrentUICulture 这样的东西。
注意:在 Vista+ 和 XP-MUI 中,您可以随后安装其他 GUI 语言并设置每个用户帐户使用的语言。这反射(reflect)在 CurrentUICulture 中。
一个常见的误解是认为应该使用文化来确定用户最喜欢的语言。最好依靠 CurrentUICulture。就我而言,Windows 是英文的,我的用户偏好(文化)是 fr-BE(法语 - 比利时)。永远不要想用法语显示您的用户界面:我安装了英语的 Windows 是为了一个目的:我宁愿拥有英语的本地用户界面,而不是法语翻译的用户界面。我的选择背后的原因是有争议的,但这无关紧要。只有我的决定是相关的。
也就是说,我将 5/2/2012 读为 2012 年 2 月 5 日而不是 5 月 2 日。这就是为什么 fr-BE 是我的语言环境/文化。
FWIW,非 Unicode 程序语言说明非 Unicode 程序应使用哪个默认代码页(Win32 NLS 中的 CP_ACP)。这不会影响您的应用程序,因为 .NET 应用程序是 Unicode。
默认输入语言确定默认键盘布局。这也不是文化设置。
影响 Culture 属性的设置如下:
关于.net - 什么可能导致 CurrentCulture 和 CurrentUICulture 默认为明显的系统文化以外的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9229500/
我有一个使用任务的应用程序。我们还修改了 cultureInfo(我们使用 EN-US 语言,但保留日期/数字格式),我们使用 .Net 4.0。 应用程序有很多线程和任务,我们有一个用于创建任务/线
谁能告诉我 Application.CurrentCulture 和 Thread.CurrentCulture 之间的区别。 线程有CurrentCulture 和CurrentUICulture。
我需要根据每种文化的资源文件在运行时更改文化。 我需要根据两种文化更改表单中控件的属性其中有指定的.resx文件 resorces1.aspx.resx // default resorces1.as
在 .net 2 winforms 应用程序中,为整个应用程序设置文化的好方法是什么? 为每个新线程设置 CurrentThread.CurrentCulture 是重复且容易出错的。 理想情况下,我
CultureInfo.CurrentCulture 可以为空吗? 空值会使我的程序崩溃,这是我不想要的。所以我问,为了安全起见,我需要做什么吗? var culture = CultureInfo.
我有一个具有以下命名空间的窗口 xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib" 包含一个文本框 根据 Gusd
正如您所看到的,我尝试将线程的 CurrentCulture 捕获到实例变量中,以便我可以在整个类中重用它,但它并没有持久存在。在上面的照片中,我显示即使在分配它之后,值仍然不同。这是为什么? 最佳答
我们的应用程序允许用户更改他们运行它的文化,并且该文化可以与底层操作系统文化不同。我发现这样做的唯一方法是为每个线程设置 Thread.CurrentThread.CurrentCulture 和 T
Thread.CurrentCulture 从哪里获取数据?客户端(浏览器)或服务器。 另一个问题,这是找出用户文化的正确方法吗? 谢谢 最佳答案 Thread.CurrentCulture 获取正在
我用一个按钮创建了一个简单的窗口应用程序 public partial class Form1 : Form { public Form1() { Initialize
我有一个错误报告,其中 double.Parse(input) 在输入 "0.69803923368454" 时抛出以下异常: FormatException: Unknown char: . Sys
我的解决方案中有多个项目:我有一个名为“Api”的 WebApi 项目,它引用了一个名为“Models”的类库。我在我的网络配置中设置全局化信息是这样的: 我的“模型”项目中有一些资源 (.resx
在 iPhone 上,用户可以选择他的显示语言和用于格式化的区域。 显示语言相当于.NET的Thread.CurrentUICulture,即UI的语言。 格式化区域等同于 .NET 的 Thread
尽管我本地化了当前文化,但以下代码返回英文名称。 List languageList = new List(); CultureInfo[] cultureList = CultureInfo.Get
在较旧的 asp.net 项目中,我们通常在 Application_BeginRequest - 处理程序 (Global.asax) 中设置语言,如下所示: System.Threading.Th
使用: Console.WriteLine(System.Globalization.CultureInfo.CurrentCulture.ToString()); 我得到 “en-US”。 我应该在
我将 Global.asax 设置为: protected void Application_BeginRequest(object sender, EventArgs e) {
根据我的研究,不可能更改线程的时区。所以我的问题是为什么你不能? 我原以为将您的应用程序的文化切换到特定国家/地区也会改变这种情况,这似乎是 IMO 的预期行为。 编辑 修改后我明白了为什么默认情况下
我试图获取客户的国家/地区,因此我使用 CultureInfo.CurrentCulture。问题是,当我的加拿大客户使用我的网站时,他们显示为美国人。 看起来 CultureInfo.Current
使用完整的 .NET 框架,您可以使用以下方法获取/设置当前线程的文化和 UI 文化: Thread.CurrentThread.CurrentCulture = culture; Thread.Cu
我是一名优秀的程序员,十分优秀!