You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#/.NET 6如何根据语言名称和国家名称获取ISO 639-2三字母代码?

从语言名称+国家名称获取ISO 639-2三字母代码(.NET 6/C#10)

因为你没有language-country格式的文化代码,只能通过遍历系统所有可用文化项,匹配语言名称和国家名称来找到对应的ISO 639-2代码。下面是具体实现方案:

核心实现代码

using System.Globalization;

public static string GetIso6392Code(string languageName, string countryName)
{
    // 遍历所有可用文化(包括特定区域文化和中性文化)
    foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
    {
        // 拆分文化的英文名称,分离语言和国家(格式如 "English (United States)")
        var nameParts = culture.EnglishName.Split(new[] { " (" }, StringSplitOptions.RemoveEmptyEntries);
        if (nameParts.Length != 2)
            continue;
            
        var cultureLangName = nameParts[0].Trim();
        var cultureCountryName = nameParts[1].TrimEnd(')').Trim();
        
        // 匹配输入的语言名称和国家名称
        if (string.Equals(cultureLangName, languageName, StringComparison.OrdinalIgnoreCase) &&
            string.Equals(cultureCountryName, countryName, StringComparison.OrdinalIgnoreCase))
        {
            // 返回ISO 639-2三字母代码
            return culture.ThreeLetterISOLanguageName;
        }
    }
    
    // 如果没有匹配项,返回null或抛出异常,根据你的需求调整
    return null;
}

使用示例

// 调用方法,传入语言名称和国家名称
var isoCode = GetIso6392Code("English", "United States");
Console.WriteLine(isoCode); // 输出: eng

注意事项

  • 输入的语言名称、国家名称需要和CultureInfo.EnglishName中的对应部分一致(区分大小写的问题已通过OrdinalIgnoreCase处理,但名称拼写要准确)
  • 如果同一语言对应多个国家,该方法会返回第一个匹配到的文化项的代码;如果需要更精确的匹配,可以添加额外筛选逻辑
  • 对于极少数未被.NET文化库覆盖的小众语言/国家组合,可能无法找到对应代码,此时需要手动维护映射表补充

内容的提问来源于stack exchange,提问作者ShadowDragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:45:24