如何获取保存在手机或平板电脑(安卓和iOS设备)设备设置中的国家名称?使用cultureInfo可以做到这一点吗?
我想用一种以上的语言显示国家名称。我需要用英语、法语和德语显示国家名称。是否可以自动显示英语、法语和德语的国家名称的翻译版本,或者是否需要我自己翻译所有的国家名称?
例如,如果我有这个cultureInfo = "nl-BE“。
结果应该如下所示:
string English_name = "Belgium";
string French_name = "Belgique";
string German_name = "Belgien";我该怎么做呢?
发布于 2019-09-12 23:28:19
这并不完美。它以本地化版本的.NET框架的语言获取国家/地区的全名。只有当.NET框架的本地化版本对应于所需的语言时,它才能工作。
显然,.NET框架只存储一种语言的国家名称。
var culture = CultureInfo.CurrentUICulture; // Other get any desired culture info.
var regionInfo = new RegionInfo(culture.Name);
string countryName = regionInfo.DisplayName;您必须自己实现此翻译功能。您可以使用新的ValueTuple (从C# 7.0开始)创建由国家代码和语言代码组成的复合字典键。
public static readonly Dictionary<(string language, string country), string> _countryNames =
new Dictionary<(string language, string country), string> {
[("en","BE")] = "Belgium",
[("fr", "BE")] = "Belgique",
[("de", "BE")] = "Belgien",
[("en", "CH")] = "Switzerland",
[("fr", "CH")] = "Suisse",
[("de", "CH")] = "Schweiz",
// ...
};示例:获取比利时的英文名称。
string name = _countryNames[("en", "BE")];或者,当您不确定条目是否存在时:
if (_countryNames.TryGetValue(("en", "BE"), out string name)) {
//TODO: use name
}您可以使用以下命令获取当前的UI语言
string language = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;https://stackoverflow.com/questions/57909771
复制相似问题