Tag: 本地化

ASP.NET MVC,本地化路由和用户的默认语言

我正在使用ASP.NET MVC本地化路由。 因此,当用户访问英文站点时,它是example.com/en/Controller/Action ,瑞典站点是example.com/sv/Controller/Action 。 如何确保当用户进入网站时他/她直接使用正确的语言? 我知道如何获得我想要的语言,这不是问题。 我过去经常做的是将文化放入RegisterRoutes方法中。 但由于我的页面处于集成模式,因此无法从Application_Start获取请求。 那么我应该如何从一开始就确保路线正确?

使用ResourceManager

我正在尝试在C#类中使用ResourceManager,但在创建ResourceManager类的新实例时不知道替换basename的内容。 我有一个单独的项目,其中包含上面我的项目引用的资源文件,命名如下: Resources.resx Resources.es-ES.resx 如果我有如下代码片段,当我想使用英语或西class牙语版本的资源时,我应该用什么替代基本名称? ResourceManager RM = new ResourceManager(basename,Assembly.GetExecutingAssembly()); 我尝试了汤姆建议的方法,但我得到了臭名昭着的错误 找不到适合指定文化或中性文化的资源。 我的解决方案有两个项目,项目YeagerTech是一个Web应用程序,项目YeagerTechResources包含所有资源。 Project YeagerTech参考了YeagerTechResources。 创建资源管理器时,我有以下语法: ResourceManager RM = new ResourceManager(“YeagerTechResources.Resources”, Assembly.GetExecutingAssembly()); 显然,这是不正确的。 YeagerTechResources项目中的资源文件将其BuildAction设置为Embedded Resource。 我的资源文件的名称是:Resources.resx和Resources.es-ES.resx。 如果有人可以在实例化资源管理器时根据我的项目和资源文件名告诉我确切的语法,我将非常感激… 我做了我能想到的一切来解决这个问题而且不能…… 这是我在这里解决它的最后一次尝试…… ResourceManager RM = new ResourceManager(“YeagerTechResources.Resources”, Assembly.GetExecutingAssembly()); sb.Append(RM.GetString(“RegisterThanks”)); 执行上面的代码后,我收到以下错误: 找不到适合指定文化或中性文化的资源。 确保“YeagerTechResources.Resources.resources”在编译时正确嵌入或链接到程序集“YeagerTech”,或者所有所需的附属程序集都是可加载和完全签名的。 我能够完全没有问题地使用HTML标记中的资源,但是当转到Controller中的C#代码时,我继续得到上述错误。 根据我的项目所需的确切语法的任何帮助将不胜感激。

如何为枚举提供用户友好的名称?

我有一个类似的枚举 Enum Complexity { NotSoComplex, LittleComplex, Complex, VeryComplex } 我想在下拉列表中使用它,但不希望在列表中看到这样的Camel名称(对用户来说看起来很奇怪)。 相反,我希望有正常的措辞,如不那么复杂的小复杂(等) 此外,我的应用程序是多语言,我希望能够显示这些字符串本地化,我使用帮助器,TranslationHelper(字符串strID),它给我一个字符串ID的本地化版本。 我有一个工作的解决方案,但不是很优雅:我为枚举创建一个帮助类,其中一个成员Complexity和ToString()被覆盖,如下所示(代码简化) public class ComplexityHelper { public ComplexityHelper(Complexity c, string desc) { m_complex = c; m_desc=desc; } public Complexity Complexity { get { … } set {…} } public override ToString() { return m_desc; } //Then a static field like this private static List […]

访问本地化资源字符串而不创建“ResourceManager”实例?

我创建了一些资源文件来保存字符串。 我通过直接将它指向名为TestLocalResource的资源文件和名为ThisIsMyTest的资源字符串TestLocalResource显示MessageBox ,只需引用资源字符串,如下所示: TestLocalResource.ThisIsMyTest 现在这确实有效。 但这让我想知道通过这种方式引用资源字符串,我是否总是访问默认资源文件(例如, TestLocalResource.resx )而不是其德语版本(例如, TestLocalResource.de-DE.resx )? 所以相反,我必须使用ResourceManager吗? 如果是这样, ResourceManager如何知道当前的语言( 文化 )? 我需要明确设置它吗? 这就是我认为我需要使用ResourceManager : ResourceManager resmgr = new ResourceManager(“MyApplication.MyResource”, Assembly.GetExecutingAssembly()); 但我希望有一种方法可以更方便地访问本地化资源字符串。

以编程方式更改“区域和语言”操作系统设置

我希望能够从C#程序更改操作系统(Windows 7)的区域和语言设置。 我并不反对执行命令行命令,但我只是发现如何启动区域和语言对话框: control /name Microsoft.RegionAndLanguage 这是一个语言本地化问题,其中Control像DateTimePicker只能使用Windows 区域和语言设置(详见此处); 但是,更新操作系统以符合应用程序的语言设置不仅限于此,而且最终是期望的目标。 建议和/或解决方法将不胜感激。

控制LTR和RTL语言之间的对齐切换

虽然这个问题足以适用于网络,但我特别感兴趣的是WinForms。 应用程序UI在LTR和RTL语言之间切换而不会发生意外。 唯一的障碍是放置与输入控件(如文本框)相关联的标签。 左到右: 右到左: RTL图像上的标签位置也应相应更改。 是否有一种通用的,程序化的方法来实现这一目标?

如何在设计时从资源文件中将文本设置为控件?

我想知道是否存在在设计时从资源文件设置控件的Text属性的方法: 或者这个过程只能以编程方式执行?

MessageBox按钮 – 设置语言?

当您使用MessageBox.Show()时,您可以选择MessageBoxButtons进行选择。 可用的按钮是枚举,并为您提供“是否”,“确定取消”等选项。 例如,当我使用Norwegian messagetext时,用户仍然会获得英语“Yes No”。 有没有办法更改按钮的文本(在C#中),以便语言正确? 我可以覆盖文本,或以某种方式设置当前区域设置,以便我可以使用“Ja Nei”而不是“是否”吗? 我不想依赖在我的客户端安装.NET语言包。

如何从资源中获取字符串以在xaml中的WPF资源部分中进行分配

我有一个带有以下用户控件的XBAP应用程序: … 现在我想从一个resx文件中获取字符串“xxUser”,该文件作为资源嵌入到应用程序中我该如何实现?

.NET(3.5)使用点而不是冒号来格式化时间作为它的IT文化的TimeSeparator?

根据维基百科 (并在Dario Solera的回答中证实),在意大利,他们使用冒号格式化时间: 24小时表示法以书写forms使用冒号作为分隔符。 示例:14:05。 会议记录以两位数字写成; 小时数可以带或不带前导零写入。 但是,运行以下代码似乎输出点: using System.Globalization; Thread.CurrentThread.CurrentCulture = new CultureInfo(“it-IT”); Thread.CurrentThread.CurrentUICulture = new CultureInfo(“it-IT”); // Outputs “11.08” Console.WriteLine(DateTime.Now.ToShortTimeString()); // Outputs “.” Console.WriteLine(new CultureInfo(“it-IT”).DateTimeFormat.TimeSeparator); 这是一个框架错误吗? 什么是“修复”它的最佳方法? TimeSeparator是可设置的 – 我们应该在分配给Thread.CurrentThread.CurrentCulture等之前覆盖它吗?