简体   繁体   English

CultureInfo转换(C#)

[英]CultureInfo conversions (C#)

Is it possible to get a specific CultureInfo by the TwoLetterISOLanguageName? 是否可以通过TwoLetterISOLanguageName获取特定的CultureInfo? There is only a getter, not a setter... How would you do this. 只有一个吸气剂,而不是一个二传手......你会怎么做到这一点。 If possible without going through all cultures... 如果可能,不要经历所有文化...

So not with: 所以不是:

// Get all available cultures on the current system.
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (var culture in cultures) {
   // Exclude custom cultures. 
   if ((culture.CultureTypes & CultureTypes.UserCustomCulture) == CultureTypes.UserCustomCulture) 
        continue;

   if (culture.TwoLetterISOLanguageName == "<Whatever>"){
        //Do some stuff
        break;
   }
}   

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.twoletterisolanguagename.aspx http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.twoletterisolanguagename.aspx

SECOND: 第二:

Is it possible to show the language as spoken in that language? 是否可以显示该语言的语言?
Like 喜欢
* Dutch -> Nederlands *荷兰语 - >荷兰语
* German -> Deutsch *德语 - > Deutsch
* Spanish -> Español *西班牙语 - >西班牙语

You can use constructor , eg 你可以使用构造函数 ,例如

  CultureInfo germanCulture = new CultureInfo("DE");
  CultureInfo russianCulture = new CultureInfo("RU");


  String germanNativeLanguage = germanCulture.NativeName; // <- Deutsch
  String russianNativeLanguage = russianCulture.NativeName; // <- русский


  String germanLanguage = germanCulture.EnglishName; // <- German
  String russianLanguage = russianCulture.EnglishName; // <- Russian

Use CultureInfo(string) constructor: 使用CultureInfo(string)构造函数:

var culture = new CultureInfo("<Whatever>");

It also works for cultures, that don't have two letter culture name 它也适用于没有两个字母文化名称的文化

If ISO 639-1 does not define a two-letter language code for a particular culture, the TwoLetterISOLanguageName property returns a string that consists of three or more letters. 如果ISO 639-1没有为特定区域性定义两个字母的语言代码,则TwoLetterISOLanguageName属性将返回一个包含三个或更多字母的字符串。

eg for Lower Sorbian (Germany) : 例如,对于下索布语(德国)

var culture = new CultureInfo("dsb");

您可以使用构造函数,但我更喜欢使用静态方法GetCultureInfo因为文档明确表示它返回一个缓存的实例:

var ci = CultureInfo.GetCultureInfo("<TwoLetterISOLanguageName>");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM