如果.net支持的iso代码不足以发现语言/地区怎么办?



我正在做一个翻译应用。

应用程序应该考虑像俄罗斯这样的大国的不同地区。

因此,使用iso639是不够的,因此我额外使用iso3166,它们一起

: ISO639-ISO3166 =>"it-CH"

本机名称将是"italiano",我必须显示给翻译人员。

。. NET框架为我提供了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框架不支持的特定地区的语言翻译文本该怎么办?

当我这样做的时候:

var info = new CultureInfo("tt-RU");
string nativeName = info.Parent.NativeName;

我得到正确的语言。

但是如果我传递一个。net框架不支持的等码组合呢?这样我就不能为翻译人员显示语言了。

你会怎么做?还是你觉得我不应该计划那么远?

不幸的是,事情并没有那么简单:你的代码没有列出。net框架支持的所有文化,因为支持的文化取决于你的操作系统。

下面的文档说明

Windows版本或服务包可以更改可用的区域性。

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

如果你需要使用当前操作系统不支持的语言,你必须安装一个支持它的服务包,决定利用CultureAndRegionInfoBuilder来创建一个全新的文化并安装在需要它的计算机上。

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

最新更新