首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过cultureInfo获取国家名称并进行翻译?

如何通过cultureInfo获取国家名称并进行翻译?
EN

Stack Overflow用户
提问于 2019-09-12 23:13:26
回答 1查看 669关注 0票数 1

如何获取保存在手机或平板电脑(安卓和iOS设备)设备设置中的国家名称?使用cultureInfo可以做到这一点吗?

我想用一种以上的语言显示国家名称。我需要用英语、法语和德语显示国家名称。是否可以自动显示英语、法语和德语的国家名称的翻译版本,或者是否需要我自己翻译所有的国家名称?

例如,如果我有这个cultureInfo = "nl-BE“。

结果应该如下所示:

代码语言:javascript
运行
复制
string English_name = "Belgium";
string French_name = "Belgique";
string German_name = "Belgien";

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-12 23:28:19

这并不完美。它以本地化版本的.NET框架的语言获取国家/地区的全名。只有当.NET框架的本地化版本对应于所需的语言时,它才能工作。

显然,.NET框架只存储一种语言的国家名称。

代码语言:javascript
运行
复制
var culture = CultureInfo.CurrentUICulture; // Other get any desired culture info.
var regionInfo = new RegionInfo(culture.Name);
string countryName = regionInfo.DisplayName;

您必须自己实现此翻译功能。您可以使用新的ValueTuple (从C# 7.0开始)创建由国家代码和语言代码组成的复合字典键。

代码语言:javascript
运行
复制
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",
        // ...
    };

示例:获取比利时的英文名称。

代码语言:javascript
运行
复制
string name = _countryNames[("en", "BE")];

或者,当您不确定条目是否存在时:

代码语言:javascript
运行
复制
if (_countryNames.TryGetValue(("en", "BE"), out string name)) {
    //TODO: use name
}

您可以使用以下命令获取当前的UI语言

代码语言:javascript
运行
复制
string language = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57909771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档