天道酬勤,学无止境

.NET Chinese CultureInfo "zh" 不存在?(.NET Chinese CultureInfo "zh" does not exist?)

问题

我正在使用 .NET 3.5 并运行以下代码:

var culture = new CultureInfo("zh"); // Throws ArgumentException

我从 xml:lang 属性中得到字符串“zh”。 我不明白为什么会抛出异常,因为例如“de”(这是“de-DE”的父级)工作正常。 文化“zh-CN”确实有效,但这不是我可以使用的。

编辑:它适用于 .NET 4.5.1(感谢 xanatos) - 所以即使 MSDN 页面解释说中文是一个例外,在较新的 .NET 版本中行为也有所不同。

回答1

CultureInfo 页面上有一个小注释:

有两个文化名称与此规则相矛盾。 文化中文(简体),命名为 zh-Hans,中文(繁体),命名为 zh-Hant,是中性文化。 区域性名称代表当前标准,除非您有理由使用旧名称 zh-CHS 和 zh-CHT,否则应使用该名称。

所以你可以试试zh-Hanszh-Hant

和/或您可以看到 .NET 3.5 中的 CultureInfo 类支持哪些文化?

接受的答案说:

不幸的是,它依赖于操作系统。 在此处查看每个操作系统的默认语言支持。

回答2

在 .NET 3.5 中“zh”不起作用,请改用“zh-Hans”或“zh-Hant”。 没有找到更好的解决方案。 或者切换到 .NET 4.5。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • .NET Chinese CultureInfo "zh" does not exist?
    I'm using .NET 3.5 and running the following code: var culture = new CultureInfo("zh"); // Throws ArgumentException I got the string "zh" from an xml:lang attribute. I don't understand why an exception is thrown, because for instance "de" (wich is parent for "de-DE") is working fine. The culture "zh-CN" does work, but thats nothing that I can use. Edit: It works on .NET 4.5.1 (thanks to xanatos) - so even if the MSDN page explains that Chinese is an exception, the behaviour is different in newer .NET versions.
  • 支持繁体中文和简体中文(Supporting Chinese traditional and Chinese simplified)
    问题 作为我们产品本地化的一部分,我们需要同时支持繁体中文和简体中文,但我看到这些zh-CN 、 zh-TW 、 zh-hans 、 zh-hant多种文化。 我不想在每个文件夹中创建 4 个包含资源文件的文件夹。 我希望zh-CN , zh-hans相同, zh-TW , zh-hant相同。 我用zh-hans和zh-hant创建了 2 个文件夹, ResourceManager会自动将zh-CN解析为zh-hans ,将zh-TW解析为zh-hans 。 是否有关于ResourceManager总是执行此映射的文档,我找不到任何文档。 回答1 我在 MSDN 上发现了各种“注释”: 文化信息类 中性区域性仅由两个字母的小写语言代码指定。 例如,“fr”为法语指定中性文化,“de”为德语指定中性文化。 有两个文化名称与此规则相矛盾。 名为 zh-Hans 的中文(简体)和名为 zh-Hant 的中文(繁体)是中性文化。 文化名称代表当前标准,除非您有理由使用旧名称“zh-CHS”和“zh-CHT”,否则应使用该名称。 CultureInfo.CreateSpecificCulture 该示例使用 zh-CHS 和 zh-CHT 区域性名称。 但是,针对 Windows Vista 和更高版本的应用程序应该使用 zh-Hans 而不是 zh-CHS 和 zh-Hant 而不是
  • DateTime 支持的格式化语言?(DateTime supported language for formatting?)
    问题 DateTime 允许您根据当前文化进行格式化。 默认支持哪些文化? 我想到的场景使用this.Date.Value.ToString("MMMM")如果文化设置为 english-us,它将打印“January”,但如果文化是 french-ca,它将打印“Janvier”。 可以在 MSDN 网站上找到此格式化文档,但并未给出该文档可以翻译的文化范围。 我想知道支持哪些语言,如果不支持某种语言,我有哪些选择? 回答1 您可以使用 CultureInfo.GetCultures 获取所有支持的文化。 CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures); string allTranslatedJanuaries = string.Join(Environment.NewLine, cultures.Select(c => String.Format("{0}: {1}", c.EnglishName, c.DateTimeFormat.GetMonthName(1)))); 这是一个演示:http://ideone.com/9CUjK 在我的服务器上安装了 352 个文化,而在 ideone 上只有 112 个。
  • TTS for Chinese is throwing SAPI ERROR E_FAIL
    This is my code for Chinese TTS which is failing in the speak function although Chinese TTS engine is installed successfully using Microsoft.Speech.Synthesis; using System.Globalization; namespace TTS3 { class Program { static void Main(string[] args) { //CultureInfo=new CultureInfo("zh-CN"); SpeechSynthesizer synth = new SpeechSynthesizer(); // Output information about all of the installed voices. foreach (InstalledVoice voice in synth.GetInstalledVoices(new CultureInfo("zh-CN"))) { synth.SelectVoice(voice.VoiceInfo.Name); //Console.WriteLine(synth.Voice.Description); synth
  • 中国的TTS抛出SAPI错误E_FAIL(TTS for Chinese is throwing SAPI ERROR E_FAIL)
    问题 这是我的中文TTS代码,尽管成功安装了中文TTS引擎,但语音功能失败 using Microsoft.Speech.Synthesis; using System.Globalization; namespace TTS3 { class Program { static void Main(string[] args) { //CultureInfo=new CultureInfo("zh-CN"); SpeechSynthesizer synth = new SpeechSynthesizer(); // Output information about all of the installed voices. foreach (InstalledVoice voice in synth.GetInstalledVoices(new CultureInfo("zh-CN"))) { synth.SelectVoice(voice.VoiceInfo.Name); //Console.WriteLine(synth.Voice.Description); synth.SetOutputToWaveFile("C:\\Users\\surabhi\\Desktop\\yes.wav"); synth.Speak("你好世界"); break; } Console
  • CultureInfo for Japanese language not setting up DateTimeFormat.AbbreviatedMonthNames property correctly
    I wanted to show the date in dd-MMM-yyyy format for Japanese culture in a web application. Hence I wrote below simple code. CultureInfo cu = new CultureInfo("ja-JP"); System.Threading.Thread.CurrentThread.CurrentCulture = cu; System.Threading.Thread.CurrentThread.CurrentUICulture = cu; lbl1.Text = DateTime.Now.ToString("dd-MMM-yyyy"); But found that the label prints the month number instead of the month name. i.e. it shows 30-10-2014 instead of something 3 letter month name in japanese. After debugging I came to know that the below property has month names in number instead of 3 letter month
  • 日语的 CultureInfo 未正确设置 DateTimeFormat.AbbreviatedMonthNames 属性(CultureInfo for Japanese language not setting up DateTimeFormat.AbbreviatedMonthNames property correctly)
    问题 我想在 Web 应用程序中以 dd-MMM-yyyy 格式显示日本文化的日期。 因此我写了下面的简单代码。 CultureInfo cu = new CultureInfo("ja-JP"); System.Threading.Thread.CurrentThread.CurrentCulture = cu; System.Threading.Thread.CurrentThread.CurrentUICulture = cu; lbl1.Text = DateTime.Now.ToString("dd-MMM-yyyy"); 但是发现标签打印的是月号而不是月名。 即它显示 30-10-2014 而不是日语中的 3 个字母的月份名称。 调试后我开始知道下面的属性有月份名称而不是 3 个字母的月份名称。 > cu.DateTimeFormat.AbbreviatedMonthNames {string[13]} > [0]: "1" > [1]: "2" > [2]: "3" > [3]: "4" > [4]: "5" > [5]: "6" > [6]: "7" > [7]: "8" > [8]: "9" > [9]: "10" > [10]: "11" > [11]: "12" > [12]: "" 那么日本文化是特例还是我试图实现的目标是不可能的。 请注意
  • 如何用中文转换数据格式 (下午/上午) In T-SQL Script with C# (基于 SQL Server 中文版)(How To Convert Data Format with Chinese words (下午/上午) In T-SQL Script with C# (based on SQL Server with Chinese Version))
    问题 我在 C# 中使用SqlCommand有问题,我需要将DateTime格式插入 SQL Server,如下面的代码 例如 using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=B2CCompareData;Persist Security Info=True;User ID=sa;Password=1111;MultipleActiveResultSets=True;Connection Timeout=600; Application Name=EntityFramework")) { conn.Open(); SqlCommand cmd = conn.CreateCommand(); try { cmd.CommandText = "Insert into table1(indexid,createTime) values(1,Convert(datetime, '2016/1/20 下午 04:21:07', 121))"; cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.ExecuteNonQuery(); } catch { throw; } } 2016/1/20 *
  • Get-Date强制转换为字符串vs ToString()(Get-Date cast to string vs ToString())
    问题 我对PowerShell的字符串嵌入语法"$($object)"理解一直是$object被强制转换为[System.String] ,后者调用$object.ToString() 。 但是,我已经注意到在Windows 8.1上使用PowerShell 4.0的[DateTime]类的这种奇怪行为。 PS> $x = Get-Date PS> $x.GetType() | select -ExpandProperty Name DateTime PS> $x.ToString() 2015-05-29 13:36:06 PS> [String]$x 05/29/2015 13:36:06 PS> "$($x)" 05/29/2015 13:36:06 似乎"$($object)"具有与强制转换为字符串相同的行为,但显然会产生与$object.ToString()不同的结果。 $x.ToString()与intl.cpl(yyyy-MM-dd)中设置的短日期格式一致。 [String]$x似乎使用美国默认值。 这很可能只是DateTime类中的一个错误,但是令我惊讶的是,将对象转换为字符串的不同方法会产生不同的结果。 如果不调用ToString() ,将对象转换为字符串的规则是什么? 由于DateTime类重载了ToString(String
  • C#/.Net Core/WPF框架初建(国际化、主题色)
    C#/.Net Core/WPF框架初建(国际化、主题色) English | 简体中文 作为 TerminalMACS 的一个子进程模块 - WPF管理端,目前搭建框架部分功能:本地化、国际化、主题色修改等。 导航目录 框架已添加功能说明 1.1. 国际化、本地化1.2. Metro风格主窗体1.3. 动态更换主题色 关于TerminalMACS及本WPF管理端 关于项目开源 参考资料 1. 框架已添加功能说明 1.1. 国际化、本地化 源码放在Github上,希望分享给更多人,所以添加了国际化功能,默认支持中、英、日三国语言,按照已有套路扩展其他语言也方便,看下面的效果: 本项目(TerminalMACS的WPF管理端)使用的资源字典存储翻译文件,其他方式还有资源文件、微软官方的国际化方案(未研究)等。下面是翻译文件截图: 三个资源文件使用需要注意: 选择一个默认文件(比如en.xaml,英文)作为默认语言文件,需要将生成操作属性设置为 “页”, 设置截图如下: 其他语言文件设置生成操作属性为内容,设置截图如下: 需要将默认语言资源文件添加到App.xaml中,其他语言不用: <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries>
  • ASP .NET Core 1.0 RTM 本地化不起作用(ASP .NET Core 1.0 RTM Localization not working)
    问题 我一直在尝试按照 microsofts 文档为我的 asp .NET Core 1.0 RTM Web 应用程序实现本地化,但我无法让它工作。 我遇到的问题是,无论我如何尝试设置文化,它总是显示来自英语资源文件的字符串。 如果有人有 5 分钟的时间,我将非常感谢您的投入。 这是我关于本地化的 Startup.cs 内容: public void ConfigureServices(IServiceCollection services) { ... services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder) .AddDataAnnotationsLocalization(); services.AddScoped<LocalizationFilter>(); services.AddLocalization(options => options.ResourcesPath = "Resources"); var supportedCultures = new List<CultureInfo>{ new CultureInfo("en-US"), new CultureInfo("sl-SI"), new CultureInfo("de-DE"), new
  • Oracle健康检查脚本
    小麦苗健康检查脚本说明第一章 小麦苗健康检查脚本特点小麦苗健康检查脚本有如下的特点:1、 绿色版、免安装、纯SQL文本2、 跨平台,只要有SQL*Plus环境即可运行3、 兼容Oracle 10g、11g及12c版本4、 一次购买,终身免费升级5、 检查内容非常全面6、 脚本可视化,可以看到脚本内容,因此可供学习使用7、 只有1个SQL脚本,不存在嵌套调用等其它问题8、 生成html文件的健康检查结果9、 对结果进行过滤,列出了数据库有问题的内容 第二章 小麦苗健康检查部分结果展现列出部分结果,其它的内容可以参考:http://blog.itpub.net/26736162/viewspace-2129512/ 2.1 健康检查头部 2.2 对指标有相应的解释鼠标经过时有相应的解释,如下图所示: 2.3 健康检查结果该脚本检查的内容较多,所以我对结果进行了过滤,如下: 点击链接即可查看结果: 2.4 数据库基本信息数据库基本信息一目了然: 第三章 乱码问题3.1 执行脚本的输出屏幕有乱码3.1.1 AIX 系统① 首先查看系统是否支持中文环境,执行locale -a | grep zh_CN,若有zh_CN则支持中文,如果不支持则需要系统安装中文语言包,这个最好找系统管理员,如果是客户的环境,一般不让随意安装软件的,那我们就只好采用windows客户端来执行健康检查了,效果是一样的
  • 为什么会出现“不支持文化”的提示,如果有的话我该怎么办?(Why do I get, “Culture is not supported” and What, if Anything, Should I Do about it?)
    问题 我在“返回”行上有一个断点: [HttpGet] [Route("api/Test/{id1}/{id2}")] public NRBQEntity GetTestMessage(String id1, String id2) { return NRBQClient.GetTestMessage(id1, id2); } 尽管它不会使应用程序崩溃,但是当我达到这一点时,我得到了, “异常:抛出:”不支持文化。“(System.Globalization.CultureNotFoundException)抛出了System.Globalization.CultureNotFoundException:”不支持文化。 “ 尝试支持哪种文化,为什么不支持这种文化,我应该怎么做才能支持这种文化? 更新 回答斯潘利: 除了代表“ BarbeQue的新骑手”之外,它还是一个“骨架”(现在)实体,看起来像这样: public class NRBQEntity { public NRBQEntity() { } public String Value { get; set; } } 更新2 回答AnotherUser: 这不是我的代码,所以我只是在尝试将其代码化。 它提供了一个起点,让我可以复制/重构现有的独立项目,并将其合并到“ the”解决方案中。 话虽如此,回答您的问题
  • 简体和繁体中文 vs 区域(Simplified and Traditional Chinese vs Regions)
    问题 在我的 Android 应用程序中实现繁体和简体中文支持的过程中,我对这应该如何工作感到困惑。 所以通过阅读文档以及一些像这样和这样的讨论,我已经把简体中文变成了 值-zh values-zh-rCN values-zh-rSG 和繁体中文 values-zh-rTW values-zh-rHK 一切正常,但不知何故对我来说没有意义(对不起,如果我对简体中文和繁体中文的用法不够了解)。 根据我通过检查模拟器中的语言环境设置对话框以及在有根电话上的理解,用户可以将语言环境更改为简体中文或繁体中文。 现在问题来了。 系统如何知道从哪里获取简体或繁体中文strings.xml。 是否有某种假设表明如果我应该显示简体中文,从 values-zh 获取它并从 values-zh-rTW 获取传统? 但是,如果用户位于香港并将其设备设置为显示简体中文呢? 或者,如果世界上其他地方的移民将他的设备设置为繁体中文,但他的地区是美国或加拿大,该怎么办? 我该怎么做才能让我的用户设置他们的语言环境并使我的应用程序以正确的语言环境显示? 更新: 通过进一步调查,我认为 Android 手机用户无法将国家与语言分开设置。 他们只能设置 UI 中所谓的语言环境。 它由语言和国家/地区组成,但列表有限,因此无法进行多种组合。 例如,居住在美国的中国人想要使用繁体中文,可以将语言设置为繁体中文(至少在有
  • 【加量不加价,提供只读脚本】小麦苗健康检查脚本说明(Oracle巡检脚本)
    小麦苗健康检查脚本说明第一章 小麦苗健康检查脚本特点小麦苗健康检查脚本 有如下的特点: 1、 绿色版、免安装、纯 SQL 文本2、 跨平台,只要有 SQL*Plus 环境即可运行3、 兼容 Oracle 10g 、 11g 及 12c 版本4、 对 Oracle 10g 、 11g 和 12c 版本分别提供了 只读版(只对数据库查询,不做 DDL 和 DML 操作)5、 增删监控项非常方便,只需要提供相关 SQL 即可6、 一次购买,终身免费升级7、 检查内容非常全面8、 脚本可视化,可以看到脚本内容,因此可供学习使用9、 只有 1 个 SQL 脚本 , 不存在嵌套调用 脚本 等其它问题10、 最终 生成 html 文件 格式 的健康检查结果11、 对结果进行过滤,列出了数据库有问题的内容 好消息: 购买 小麦苗健康检查脚本,赠送SQL监控脚本。 脚本说明:目前一共包含 5 个脚本,若脚本的扩展名为“ .sql ”则表示该脚本为 sql 脚本,若脚本的扩展名为“ .pl ”则表示该脚本为 perl 脚本。对于 SQL 脚本而言,其中 DB_healthcheck_lhr_v6.0.1_ALL_RW.sql 是 读写 版本,在脚本执行过程中会对数据库做 DDL (创建一些用到的临时表)和 DML 操作(对自己创建的临时表 DML 操作),但是,在脚本执行后会清理掉创建的临时表
  • ASP.NET 全球化:Culture="auto" 页面指令中性文化崩溃?(ASP.NET Globalization: Culture=“auto” page directive with neutral culture crash?)
    问题 我遇到了一个使用内置全球化工具的 ASP.NET 应用程序崩溃的情况。 在带有 Culture="auto" 指令的 ASP.NET 页面上,使用中性文化作为其浏览器语言(例如“zh-Hans”)的用户将产生以下异常: 文化 'zh-Hans' 是一种中立的文化。 它不能用于格式化和解析,因此不能设置为线程的当前区域性。 在 System.Globalization.CultureInfo.CheckNeutral(CultureInfoculture) 在 System.Threading.Thread.set_CurrentCulture(CultureInfo value) 在 System.Web.UI.Page.set_Culture(String value) 在 ASP.somePage_aspx.__BuildControlTree(somePage_aspx __ctrl) 在 ASP .somePage_aspx.FrameworkInitialize() 有任何想法吗? 送入 Culture/UICulture 参数的垃圾通常似乎被忽略,但这种情况会导致未处理的异常。 回答1 首先,您可以考虑在 <%@ Page %> 声明中设置 UICulture="auto" 和 Culture="auto"。 现在,我没有在我的 .NET 4.0(测试版
  • Kali Linux系统设置中文语言环境
    文章出自个人博客https://knightyun.github.io/2020/04/15/linux-chinese,转载请申明 主流 Linux 系统安装之后,默认使用的语言环境基本都是英语,所以不管时图形桌面的菜单标题,还是终端的一些输出提示,都是展示的英文,对于觉得阅读英语不太友好的同胞们,第一件事可能就是设置一个友好的汉化环境,下面以 Kali Linux 这个发行版的系统为例,介绍一些设置中文语言环境的方法; 图形界面 如果安装的系统有图形界面,那么操作就简单了;一般系统在安装时就会提供语言选项,不过安装好后也能进行修改,一般可以在系统设置的区域与语言模块中找到相关的设置,例如下图: 至于其他 Linux 系统,路径应该类似,或者可以在设置里面搜索一下;修改成功需要重新登录生效,这个修改是永久性的; 终端命令 没有图形界面或者在设置里面没有找到的情况下,可以尝试使用终端命令进行修改; 安装中文环境包 切换中文环境之前,需要安装中文语言环境包,直接运行以下命令: sudo dpkg-reconfigure locales # 上面的运行不成功可以尝试下面这条命令: sudo dpkg-reconfigure --force locales 如果提示类似 locales 未找到这样的信息,那么就先运行 apt install locales 执行安装,然后再运行上面的命令
  • Django: How to add Chinese support to the application
    I am trying to add a Chinese language to my application written in Django and I have a really hard time with that. I have spent half a day trying different approaches, no success. My application supports few languages, this is part of settings.py file: TIME_ZONE = 'Europe/Dublin' LANGUAGE_CODE = 'en' LOCALES = ( #English ('en', u'English'), #Norwegian ('no', u'Norsk'), #Finish ('fi', u'Suomi'), #Simplified Chinese ('zh-CN', u'简体中文'), #Traditional Chinese ('zh-TW', u'繁體中文'), #Japanese ('ja', u'日本語'), ) At the moment all (but Chinese) languages work perfectly. This is a content of locale
  • 各种开发测试相关免费学习书籍
    https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md 免费编程相关学习书籍 [ 您没有编辑权限 ] 摘要:各种开发测试相关免费学习书籍 语言无关 IDE [IntelliJ IDEA 简体中文专题教程](https://github.com/judasn/IntelliJ-IDEA-Tutorial) MySQL [21分钟MySQL入门教程](http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html) [MySQL索引背后的数据结构及算法原理](http://blog.codinglabs.org/articles/theory-of-mysql-index.html) NoSQL [Disque 使用教程](http://disquebook.com) [Neo4j .rb 中文資源](http://neo4j.tw) [Redis 命令参考](http://redisdoc.com) [Redis 设计与实现](http://redisbook.com) [The Little MongoDB Book](https://github.com/justinyhuang
  • 六祎-学习IT网站
    HTML5 Canvas编程:http://blog.csdn.net/column/details/canvas-programming.html GTK编程基础学习:http://blog.csdn.net/column/details/sjin-gtk.html Git学习系列:http://blog.csdn.net/column/details/git-lover.html git学习笔记:http://blog.csdn.net/column/details/gitnote.html Git深入体验:http://blog.csdn.net/column/details/gitexperience.html Git菜鸟变大神:http://blog.csdn.net/column/details/lilongsheng-git.html GitHub 漫游指南:http://github.phodal.com/ 全栈增长工程师指南:http://growth.phodal.com/ 全栈增长工程师实战:http://growth-in-action.phodal.com/ Phodal’s Idea实战指南:http://ideabook.phodal.com/ JavaScript 闯关记:https://github.com/stone0090/javascript