C# 如果.NET支持的iso代码不足以发现语言/地区,该怎么办

C# 如果.NET支持的iso代码不足以发现语言/地区,该怎么办,c#,.net,localization,C#,.net,Localization,我正在开发一个翻译应用程序 应用程序应考虑俄罗斯等大国的不同地区。 因此,使用iso639是不够的,因此我将另外使用iso3166将它们结合在一起 是:ISO639-ISO3166=>“it CH” 本地名应该是“意大利语”,我必须向翻译人员展示 .NET framework为我提供了210种语言,考虑到使用此代码的地区: List<string> list = new List<string>(); CultureInfo[] cultures = CultureInf

我正在开发一个翻译应用程序

应用程序应考虑俄罗斯等大国的不同地区。 因此,使用iso639是不够的,因此我将另外使用iso3166将它们结合在一起

是:ISO639-ISO3166=>“it CH”

本地名应该是“意大利语”,我必须向翻译人员展示

.NET framework为我提供了210种语言,考虑到使用此代码的地区:

List<string> list = new List<string>();
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
foreach (CultureInfo culture in cultures)
{
    RegionInfo region = new RegionInfo(culture.LCID);
    var text = string.Format("\"{0} - {1}\",    \"{2}-{3}\"",
        region.EnglishName, culture.Parent.NativeName,
        culture.Parent.TwoLetterISOLanguageName,
           region.TwoLetterISORegionName);
    list.Add(text);
}
我掌握了正确的语言

但是,如果我传递了一个.NET framework不支持的等位码组合,该怎么办?那么我就不能为翻译人员显示语言了


你会怎么做?或者你认为我不应该计划那么远吗?

不幸的是,事情并没有那么简单:你的代码没有列出.Net framework支持的所有区域性,因为支持的区域性取决于你的操作系统

文件指出:

Windows版本或service Pack可以更改可用的区域性

我想,回答你的问题,你会怎么做?还是你认为我不应该计划那么远

如果您需要使用操作系统当前不支持的语言,您必须安装一个支持该语言的service pack,决定利用它来创建一种全新的文化氛围,并安装在需要它的计算机上


底线是,对于这两种情况:您现在不需要提前计划太多,因为如果您创建自己的区域性,它将被视为与安装了它的计算机上的任何其他官方区域性一样。

您有这样的等位代码的示例吗?有没有.NET不支持的等位代码的示例?不因为我对所有不受.NET支持的国家了解不够,但我想世界上有210多个地区。这不是当前的问题。我正处于规划/概念阶段!我认为区域性列表是枚举:.InstalledWin32Cultures,而不是SpecificCultures。请你换一句话解释一下“因为如果你创建了自己的文化,它将被视为与安装了它的计算机上的任何其他官方文化一样。”是的,对不起,也许我不够清楚。如果使用CultureAndRegionInfoBuilder(),则CultureAndRegionInfoBuilder类可用于创建全新的自定义区域性或覆盖预定义区域性的自定义区域性。然后,您可以创建一个尚未列出的区域性,并使用它与您的翻译人员协作。好的,管理员可以通过在UI中输入iso639-iso3166代码来创建此新区域性。CultureInfo.GetCultures()方法是否尊重新创建的区域性?是的,管理员可以注册新的不受支持的区域性(您需要管理员权限)。事实上,您甚至可以创建全新的异国情调地区,而这些地区在iso639-iso3166格式中并不存在。一旦注册,这些培养基就可以用于任何其他培养基。调用CultureInfo.GetCultures(CultureTypes.AllCultures)时,它们还应该出现在返回的数组中。有关详细信息和示例,请参见
var info = new CultureInfo("tt-RU");
string nativeName = info.Parent.NativeName;