Tag: 全球化

在C#中获取具有2位数年份的特定文化日期

我正在使用“MM / dd / yy”更新一些将日期格式化为字符串的代码。 我需要它是文化意识,但希望保持两位数的年份,以保持日期短。 以下是我提出的建议,但有更好的方法吗? string dateFormat = culture_Info.DateTimeFormat.ShortDatePattern.Replace(“yyyy”, “yy”);

为什么我的CurrentCulture en-GB和我的CurrentUICulture en-US

我有一个C#应用程序,它必须在具有不同文化设置的机器上运行。 没问题,我想,它只会查找启动当前文化在机器上的内容,并为我做一切。 嗯,不,它会让事情变得不对劲。 我有一台Windows XP机器,区域和语言选项设置为英语美国,但当我的应用程序启动时,它报告我的CurrentCulture是en-GB而我的CurrentUICulture是en-US 。 如何让我的程序只使用PC设置的任何内容? 如果它有任何区别,这是一个Windows服务应用程序。 谢谢

有没有办法避免使用Windows商店应用程序ResourceLoader使用硬编码的resw键?

有没有办法避免在Windows商店应用程序中使用resw文件中包含的全球化字符串使用硬编码键? 即 // I have to use a hard-coded string key, which may violate the // DRY principle to gain access to the translation from C#: var translation = Windows.ApplicationModel.Resources.ResourceLoader.GetString(“MyStringKey/Text”)

MVC3全球化问题

我正在开发一个带有下一个文化设置的MVC3应用程序: 首先,当我传递一个整数时,我将视图中的值传递给控制器​​,但是当我传递一个double(3.2)时,控制器中的值返回0,如本问题所述 。 好的模型粘合剂添加: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder()); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } public class DoubleModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { ValueProviderResult valueResult = bindingContext.ValueProvider .GetValue(bindingContext.ModelName); ModelState modelState = new ModelState { Value = valueResult }; object actualValue = null; try { actualValue = Convert.ToDouble(valueResult.AttemptedValue, CultureInfo.InvariantCulture); } catch […]

VkKeyScan返回相同的代码,没有用于重音和非重音字母的修饰符

背景: 我正在使用非托管函数SendInput( https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310 ( v= vs.85).aspx)模拟击键。 调用此函数有3种方法: 指定键盘扫描码 指定字符unicode 指定虚拟密钥代码 所有工作,但能够模拟CTRL + PI等快捷方式想要使用虚拟键码。 我目前手动将字符映射到虚拟键码,但这不是一个好方法,因为它对用户的OS键盘布局不敏感。 例如,在英语(英国)键盘上的“。” 字符可以映射到VirtualKeyCode.OEM_PERIOD,但如果操作系统键盘布局是法语,那么“。” 是VirtualKeyCode.OEM_PERIOD + SHIFT。 为了使我的代码更健壮,我想调用方法VkKeyScan( https://msdn.microsoft.com/en-us/library/windows/desktop/ms646329 ( v= vs.85).aspx)传入一个字符到获取虚拟键码(加上shift / ctrl / alt)。 从理论上讲,这种方法可以解决所有问题。 问题: 宣言: [DllImport(“user32.dll”, CharSet = CharSet.Unicode)] static extern short VkKeyScan(char ch); 用法: var vkKeyScanResult = PInvoke.VkKeyScan(character); var vk = vkKeyScanResult & 0xff; var shift = (vkKeyScanResult […]

如何在asp.net中创建多语言网站

我正在用多种语言在asp.net中开发一个站点,但我不明白如何做到这一点,因为我们可以通过使用资源文件来管理多语言语言。 我们这样做了,但我的主要问题是我们如何在特定用户的运行时改变全球化。 如果用户选择英语,则他/她可以查看此英语,如果B用户选择西class牙语,则他/她可以用西class牙语查看此站点。 我们怎么做到这一点? 或者我们如何选择特定的语言资源文件???

为MVC生成Resx文件

我们使用resx文件进行全球化,以及我们的CS工作人员可以配置的事物的数据库查找(例如选项卡名称,可能因产品而异),因此在设计时不知道。 我创建了一个自定义工具,它读取resx文件并智能地将键/值对转储到关系数据库中(匹配值,因此我们没有重复项)。 这对我们的业务有很大帮助 – 我们不必发送每个resx进行翻译(并支付共享单词的重复翻译),我们的所有翻译都有一个’黄金标准’(在数据库中)。 我创建的工具还读取数据库,获取键/值对和每个值的翻译,并为每个resx文件(以及每种语言的文本文件的翻译)创建文本文件并自动运行resgen.exe,一个命令Visual Studio附带的-line工具,用于从生成的文本文件中编译resx文件。 我没有任何源代码控制集成,因此我们必须手动签出resx文件并在使用该工具时手动签入生成的文件,但这不是一个大问题。 我的问题是这个方法对我们的新MVC项目失败了:MVC项目要求resx文件是嵌入式资源,其访问修饰符为“public”。 因此,我们一直在手工解决这个问题,这引入了人为错误的可能性并增加了一些非常重要的工作量。 有没有办法让resgen.exe创建嵌入和公共的资源文件? 如果没有,是否有另一种方法可以创建resx文件? 更新,附加问题:我们使用此方法生成的resx文件也会发出警告: A custom tool ‘PublicResXFileCodeGenerator’ is associated with file ‘(resxname)’, but the output of the custom tool was not found in the project. You may try re-running the custom tool by right-clicking on the file in the Solution Explorer and choosing Run Custom […]

如何在Asp.Net Core中设置日期绑定的文化?

我有一个带MVC的Asp.Net Core应用程序。 我正在提交表格上有日期的表格。 表格看起来(大致)像这样: @model EditCustomerViewModel 控制器动作是: [HttpPost] public async Task Edit(EditCustomerViewModel viewModel) { // do stuff return RedirectToAction(“Index”); } 查看模型是: public class EditCustomerViewModel { public Guid Id { get; set; } [DataType(DataType.Date)] public DateTime ServiceStartDate { get; set; } [DataType(DataType.Date)] public DateTime? ServiceEndDate { get; set; } // etc. } 我在英国,因此日期不是美国格式: dd/MM/YYYY 。 所以默认我提交6/22/2017 […]

在Windows Server 2012上安装更多文化

在Windows 8.1计算机上,我看到的文化比Windows Server 2012计算机上的文化要多得多:791对比378.举一个具体的例子,服务器机器缺少’en-HK’文化。 这是我用来枚举它们的测试代码: foreach (var ci in CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures).OrderBy(ci => ci.Name)) { Console.WriteLine(“{0} ({1})”, ci.Name, ci.EnglishName); } 问题:如何在Windows Server 2012上安装更完整的区域性列表,以使其与Windows 8.1上的可用文档列表相匹配?

本土化。 扩展ASP.NET Resx资源提供程序

对于我的网站,我有一个用于本地化的自定义资源提供程序(本地化字符串存储在数据库中)。 它工作正常,但我希望它与默认的Resx资源提供程序一起使用:在resx资源中查找本地化字符串,如果不存在则从数据库中提取它。 但看起来,只要我将IIS全球化设置更改为使用我自己的资源提供程序工厂,就会忽略默认的resx资源提供程序工厂。 我想解决方案是扩展我自己的资源提供程序,但我找不到如何从资源提供程序内部引用resx资源。 谢谢。