【问题标题】:How To get Language by Country in c#如何在 C# 中按国家/地区获取语言
【发布时间】:2020-06-11 20:01:57
【问题描述】:

最好的解决方法是什么?

我试过了:

using System;
using System.Globalization;
using System.Linq;
using System.Collections.Generic;

class HelloWorld {
    static void Main() {
        List<CultureInfo> CultureInfos = CultureInfo
                            .GetCultures(CultureTypes.SpecificCultures)
                            .ToList();

        var a = CultureInfos.Where(x => x.DisplayName.Contains("Israel"))
                            .FirstOrDefault();

        Console.WriteLine(a?.DisplayName.Split(' ')[0]);
    }
}

有趣的是,它适用于 onlinegdb.com,但不适用于我的本地机器 .Net core 3.1。它在“a”中返回 Null 试图找到他们的 .Net 版本的任何线索 - 没有成功

你知道为什么吗? / 我做错了什么?

谢谢

【问题讨论】:

  • 请改用ThreeLetterISONameTwoLetterISOName。任何其他名称选择都会比DisplayName 更好。
  • 我没有这个国家的名字……它只是为了举例。我只从 API 获得国家名称,需要填写我自己的语言@RobertHarvey
  • DisplayName 本身已本地化,具体取决于环境。所以在它上面做一个Contains 可能是问题的一部分。

标签: c# .net-core globalization


【解决方案1】:

好吧,RegionInfo 似乎包含简单的国家名称。 使用EnglishNameso 你有一个基线。如果您使用DisplayName,则取决于您的代码是否有效。

例如在德国系统上“Austria”是行不通的,但是“Österreich”

var cultureInfo = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
                             .FirstOrDefault(c => new RegionInfo(c.Name).EnglishName == "Israel"));

查看工作示例here

【讨论】:

  • @LeonNicetomeetya 你确定使用EnglishName 吗?
猜你喜欢
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2020-01-11
  • 1970-01-01
  • 2011-12-20
相关资源
最近更新 更多