Tag: 本地化

如何将资源字符串组合用于validation属性错误消息?

如果我在validation属性上有错误消息,例如: 名字是必需的 姓氏是必需的 然后像这样的validation属性: [Required(ErrorMessageResourceName = “Error_FirstNameRequired”, ErrorMessageResourceType = typeof(Strings)] public string FirstName {get;set;} 我不想为每个实例做一个翻译。 有没有办法在格式化程序中组合资源字符串,例如: [Required(ErrorMessage = string.Format(“{0} {1}”, Strings.Label_FirstName, Strings.Error_IsRequired))] public string FirstName {get;set;} 当然这不起作用,因为它需要是一个编译时常量。 但是有没有实现这一点,以便我可以构建本地化的字符串并重用已经存在的字符串? 我想过只创建自定义属性,允许设置额外的属性并覆盖默认的输出消息,但这将是太多的重构和kludgy imo。 有任何想法吗?

将两个ascii字符转换为它们的“对应”一个字符扩展ascii表示

问题:我有两个来自外部系统的固定宽度字符串。 第一个包含基本字符(如az),第二个(MAY)包含要附加到第一个字符串以创建实际字符的变音符号。 string asciibase = “Dutch has funny chars: a,e,u”; string diacrits = ” ‘ \” \””; //no clue what to do string result = “Dutch has funny chars: á,ë,ü”; 我可以写一个大规模的搜索并替换所有字符+不同的变音符号,但希望有更优雅的东西。 有人知道如何解决这个问题? 尝试计算小数值,使用string.Normalize(c#),但没有结果。 谷歌也没有真正想出办法。

在C#中循环使用不同语言/文化的嵌入式资源

从这个问题的一个层面来看,存储所有(并循环)可用资源和相关文化的方式是什么,以允许用户选择特定文化? 进一步说明: 假设有三个资源文件: GUILanguage.resx GUILanguage.fr.resx GUILanguage.it.resx 我可以在每个名为LanguageName的字符串中有一个字符串。 我如何能够以编程方式循环遍历不同的LanguageName值以列出它们(例如列表框)? 编辑:WinForms项目,嵌入式资源。

如何最好地将整个应用程序本地化为多种不同的语言?

我正在使用Visual Studio(2005及以上版本)。 我正在尝试制作一个应用程序,用户可以在其中更改所有菜单,输入格式等语言。 我将如何继续这样做,因为我认为.Net中有一些完整的function可以帮助我解决这个问题? 我需要考虑以下因素(如果我错过了一些明显的东西,请填写我) 字符串(菜单,文本) 输入数据(解析浮点数,日期等) 应该很容易添加对另一种语言的支持

如何在运行时更改语言而不会出现布局问题

我有一个winforms应用程序,用户必须能够在运行时更改语言。 为了概括开关并避免硬编码控制名称,我尝试了以下扩展: internal static void SetLanguage(this Form form, CultureInfo lang) { ComponentResourceManager resources = new ComponentResourceManager(form.GetType()); ApplyResourceToControl(resources, form, lang); resources.ApplyResources(form, “$this”, lang); } private static void ApplyResourceToControl(ComponentResourceManager resources, Control control, CultureInfo lang) { foreach (Control c in control.Controls) { ApplyResourceToControl(resources, c, lang); resources.ApplyResources(c, c.Name, lang); } } 这确实改变了所有字符串。 然而,这样做的副作用是,无论当前大小是多少,窗口的整个内容都会调整为该窗口的原始启动大小。 如何防止布局更改或启动新的布局计算?

将带有占位符(`{0}`)的字符串添加到资源中是一个好主意吗?

我在资源文件中添加了一个字符串。 我的应用程序将被本地化。 但是,将占位符( {0} )添加到资源中的字符串是一个好主意吗? 如果一些非技术人员进行本地化怎么办? 有没有办法让他在不知不觉中搞砸了? 如果这不是一个好主意,我该怎么办? 这是一个简单的例子。 我将使用WPF资源字典。 例: // Resource1.resx // Name | Value //————————————————————— // RELATIONSHIP_STATUS_MSG | {0} is in relationship with {1}. // class Program { static void Main(string[] args) { string msg = string.Format(Resource1.RELATIONSHIP_STATUS_MSG, “Romeo”, “Juliot”); Console.WriteLine(msg); } }

C#:如何从某种文化中获取资源字符串

我有一个资源程序集,其中包含各种语言的翻译文本。 项目类似于: FooBar.resx FooBar.nb-NO.resx FooBar.sv-SE.resx … 我可以使用这样的静态属性来获取文本: var value = FooBar.Hello; 或者通过使用这样的reflection: var value = resourceAssembly .GetType(“Namespace.FooBar”) .GetProperty(“Hello”) .GetValue(null, null) as string; 两种方式都将获得属于当前线程的当前UI文化的值。 这很好,完全是我通常喜欢的。 但是,如果我明确地想要瑞典的价值,而不必改变UI文化,我能做些什么吗?

.NET:考虑夏令时

我有一个方法,使用其地理位置的GMT偏移量从用户输入创建UTC DateTime : public static DateTime LocalToUtc (int year, int month, int day, int hour, decimal gmtOffset) { // argument validation here var dateTime = new DateTime(year, month, day).AddHours(hour); var dateTimeOffset = new DateTimeOffset(dateTime, TimeSpan.FromHours(gmtOffset)); return dateTimeOffset.UtcDateTime; } 问题是,如果用户的时区节省了夏令时,此function将关闭一小时。 因此,虽然我的个人GMT偏移为-8,但由于夏令时,当前时区偏移为-7。 如何更改上述function以解决夏令时问题? 我不知道需要从GMT偏移量创建一些时区对象并获得其时区偏移量吗?

Xamarin.iOS的本地化

我想弄清楚Xamarin.iOS上的本地化。 我不熟悉本地化,但我们想做的第一语言是冰岛语。 如果您查看iOS设备本身的设置,则不支持Icelandic。 所以这是一个两部分的问题。 如何在我的应用程序中设置本地化? 我是否只是以与其他.net应用程序相同的方式进行本地化。或者我需要做一些特定于iOS / Xamarin的内容。 一旦我实现了这个,我如何选择Icelandic作为语言,因为iOS没有它作为可用的语言? 关于这个主题的文档似乎很少。

平假名到汉字转换器

你知道C#中有一个图书馆还是一本字典可以帮我把平假名翻译成汉字吗? 我知道有Windows的IME,但我想完全定制给定平假名的汉字候选列表的设计,这是不可能用这个IME。 例子:用户写“toru”,首先在平假名中翻译:“とる”我想有这个选择列表: 撮る取る盗る 谢谢!