天道酬勤,学无止境

.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.

评论

There is a small note on the CultureInfo page:

There are two culture names that contradict this rule. The cultures Chinese (Simplified), named zh-Hans, and Chinese (Traditional), named zh-Hant, are neutral cultures. The culture names represent the current standard and should be used unless you have a reason for using the older names zh-CHS and zh-CHT.

So you could try zh-Hans or zh-Hant

And/or you could see What cultures are supported by the CultureInfo class in .NET 3.5?

The accepted answer says:

Unfortunately, it is OS dependent. Check here for default language support per OS.

In .NET 3.5 "zh" does not work, use "zh-Hans" or "zh-Hant" instead. Didn't find a better solution. Or switch to .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>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 支持繁体中文和简体中文(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抛出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
  • 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
  • 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>
  • 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 *
  • 【加量不加价,提供只读脚本】小麦苗健康检查脚本说明(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 操作),但是,在脚本执行后会清理掉创建的临时表
  • 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
  • Godot基础教程01:安装与新建项目
    关于引擎的介绍就不再赘述了,网上有很多。 下面是官方网站: https://godotengine.org/ 以及中文官方文档: https://docs.godotengine.org/zh_CN/latest/ 下载与安装 在官方网站下载,方法如下图所示: 注意:如果你是32位的系统,就下32-BIT版本 下载完成后,直接解压,发现就只有1个文件: 这个就是引擎的执行文件,不需要安装! 是的,就这1个文件,并不是安装包,我第一次下载打开时,也惊呆了。 双击打开它。 首次打开时,会弹出一个提示框: 这里提示是否打开素材库,先不用管他,直接点击cancel取消即可。 点击右上角切换语言: 通常中文都会排到最后,滚动到最后: 选择Chinese(China)[zh_CN],即简体中文,选择后会弹出一个提示: 这是提示重启编辑器生效,是否重启,选择Restart Now,立即重启编辑器。 新建项目 在界面右侧点击新建项目: 说明: 项目名称:这个不用说了吧 项目路径:你这个项目存在哪个路径下,注意所选择的路径必须是空的,即文件夹下不能有任何文件和子文件夹 渲染器:这里其实界面上提示得很清楚了,3.0效果更好,2.0兼容性更好,根据你的项目来选 全部设置好后,点击创建并编辑 创建项目成功后,会打开项目编辑窗口: 来源:https://blog.csdn.net/shalyun
  • DEBIAN下中文显示
    DEBIAN下中文显示 一.首先检查LOCALE情况 说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在。 1.挂载ISO文件包,前8个ISO包就可以(这里不在讲述)。 2.启动终端 #apt-get install locales 3.重新配置LOCALE #dpkg-reconfigure locales 在所有的语言包选择en_US.ISO-8859-1和zh_CN.GBK。其他en_US和zh_CN打头的也选上。然后选择zh_CN.GBK为默认的LOCALE,则系统为中文界面(这里也可以选en_US.ISO,使系统为英文界面)。 3.运行LOCALE命令检查当前的LOCALE环境 #locale 正确配置下会显式 LANG =zh_CN.GBK ........................以下显示略过 ============================================================================ Debian 6解决中文乱码 解决办法:打开终端,切换至root帐号。     执行以下命令: apt-get install ttf-wqy-zenhei(安装字体)    apt-get install ibus ibus-gtk ibus-pinyin(安装输入法) ----
  • 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客户端来执行健康检查了,效果是一样的
  • 简体和繁体中文 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 中所谓的语言环境。 它由语言和国家/地区组成,但列表有限,因此无法进行多种组合。 例如,居住在美国的中国人想要使用繁体中文,可以将语言设置为繁体中文(至少在有
  • 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
  • Simplified and Traditional Chinese vs Regions
    In the process of implementing traditional and simplified chinese support in my Android application and I confused on how this is supposed to work. So from reading the documentation as well as some discussions like this and this I have put simplified chinese into values-zh values-zh-rCN values-zh-rSG and traditional chinese into values-zh-rTW values-zh-rHK That all works fine but somehow does not make sense to me (sorry if I dont understand enough about chinese simplified vs traditional usage). From what I understand from checking the locale setting dialog in the emulator as well as on a
  • Swing中未呈现Unicode字符,实际使用什么字体?(Unicode char not rendering in Swing, what font is used in real?)
    问题 我在swing应用程序中显示unicode字符时遇到问题。 在思想上,问题在于所使用的字体,该字体不包含适用于中文的字符。 (仅显示空框) 这是我的问题的更多信息(我做了一些调查): Linux(Kubuntu 14.04) : 当我使用JAVA 6启动程序时,不会显示中文字符(仅显示空框)。 (通过getFont()请求标签字体返回:DejaVu Sans) 当我使用JAVA 7启动程序时,中文字符会正确显示! (通过getFont()请求标签字体返回:DejaVu Sans) Windows(8.1) : 当我用JAVA 6启动程序时,中文字符会正确显示! (通过getFont()请求标签字体返回:SansSerif) 当我使用JAVA 7启动程序时,中文字符会正确显示! (通过getFont()请求标签字体返回:SansSerif) $ JAVA_HOME / lib / fonts(似乎用作后备字体)两个Java版本(6 + 7)都包含相同的字体。 (在两个系统上) 字体文件具有相同的大小(Java6 + Java7),并且fontconfig.properties.src也都相同。 当我直接问标签(通过getFont())时,它在Windows(8.1)上返回“ SansSerif”,在我的Kubuntu(14.04)上返回“ DejaVu Sans”。
  • 前端学习之HTML/语法(上)
    HTML文档的后缀一般都是.html,但是在以前,.htm后缀也是不少的,它们都代表html文档,实际上也没有本质的区别。htm是在win32时代,系统只能识别3位扩展名时使用的。现在一般都使用.html 概念   (Hyper Text Markup Language)超文本标记语言,是用来描述网页的一种语言   1. 超文本(Hyper Text):不只包括文本,也可以包括图片、链接、音乐、视频等非文本元素   2. 标记语言(Markup Language):标记语言是一套标记标签,HTML使用标记标签来描述网页 标签   由尖括号包围的关键词,比如 <html>   HTML 标签分为单标签和双标签   1. 双标签:HTML标签通常是成对出现的,比如 <b> 和 </b>。第一个标签是开始标签,第二个标签是结束标签;开始标签和结束标签也被称为开放标签和闭合标签   2. 常见的单标签有:<img><br><hr><input>   注意:HTML标签对大小写不敏感,但要全小写 属性   HTML标签可以拥有属性,属性提供了有关HTML元素的更多信息。   属性以名值对(名称/值)的形式出现,且总是在HTML元素的开始标签中规定。 【常见属性】 元素   从开始标签到结束标签的所有代码   HTML元素以开始标签起始,以结束标签终止,元素的内容是开始标签与结束标签之间的内容
  • HTML
    学习目标: HTML 学习内容: 1.HTML的学习 2.登录框的编写 学习时间: 2021年1月22日 学习产出: 1.HTML的学习 1.1 HTML语法规范 (1)HTML标签是由尖括号包围的关键词,例如<html (2)HTML标签通常是成对存在的,例如<html 和</html 我们称为双标签,标签对中的第一个标签是开始标签,第二个标签是结束标签。 (3)有些特殊的标签必须是单个标签(极少情况),例如<br / ,我们称为单标签。 1.2 双标签关系可以分为两类:包含关系和并列关系 HTML页面也称为HTML文档 1.3 是文档类型声明标签,作用就是告诉浏览器使用哪种HTML版本来显示网页。 这句代码的意思是:当前页面采取的是HTML5版本来显示网页。 1.4 lang语言种类 (1).en定义语言为英语 (2).zh-CN定义语言为中文 简单来说就是定义en就是英文网页,zh-CN就是中文网页 (不影响文档打开) 1.5 字符集 是多个字符的集合,以便计算机能够存储和识别各种文字。 在head标签里,可以通过meta标签的charset属性来规定HTML文档应该是用哪种字符编码 (没有这句话会出现乱码的情况) Charset常用的值有:GB2312.BIG5.GBK.UTF-8 其中UTF-8也被成为万国码,基本包含了全世界所有国家需要用到的字符 2.登录框的编写
  • 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