【问题标题】:Given Country - How to get every Displayname from CultureInfo programmatically?给定国家 - 如何以编程方式从 CultureInfo 获取每个显示名称?
【发布时间】:2018-07-06 14:29:57
【问题描述】:

我需要找到一种解决方案来获得每种文化中国家名称的本地拼写。

例如:

Germany, ISOCODE: DE

在德语 Windows 系统上有以下信息:

  • 英文名称:Germany
  • 原名:德国
  • 显示名称:德国

现在我需要知道例如“Germany”(英文名)或“Deutschland”(显示名/本地名)在荷兰是如何写的。

输出必须是

"Duitsland"

在法国时,输出必须是

"Allemagne"
  • 每个“输出”都必须以编程方式完成。

是否可以从给定的单个国家/地区获取每个国家/地区的不同显示名称?

任何帮助将不胜感激。

编辑: 我尝试更改当前线程的 CultureInfo 以模仿我不在德国而是在法国。但这并不像方面那样起作用。 这是我使用的代码:

            try
            {
                CultureInfo originalThreadCultureInfo = Thread.CurrentThread.CurrentUICulture;
                foreach (CultureInfo CI in CultureInfo.GetCultures(CultureTypes.AllCultures))
                {
                    try
                    {
                        if (CI.IsNeutralCulture || !string.IsNullOrEmpty(CI.Parent.Name))
                        {
                            Thread.CurrentThread.CurrentUICulture = CI;
                            Thread.CurrentThread.CurrentCulture = CI;
                            RegionInfo R = new RegionInfo(this.CultureID);
                            string EnglishName = R.EnglishName;
                            string NativeName = R.NativeName;
                            string DisplayName = R.DisplayName;
                        }
                    }
                    catch (Exception ex) { }

                }
                Thread.CurrentThread.CurrentCulture = originalThreadCultureInfo;
                Thread.CurrentThread.CurrentUICulture = originalThreadCultureInfo;
            }
            catch (Exception ex) { }

【问题讨论】:

  • 那么...您尝试了什么?你看过CultureInfo class的属性了吗?
  • 我尝试将 CurrentThread 文化更改为“模仿”我不在德国而是在法国,然后尝试从“DE”获取 RegionInfo,但这不起作用
  • 尝试参加 GeographicRegion 课程,它可能对你有用:docs.microsoft.com/en-us/uwp/api/…
  • 谢谢,有没有“非 UWP”类?

标签: c# culture


【解决方案1】:

这还不是 .NET Framework 中的内置功能。您可以使用语言翻译 A​​PI。

【讨论】:

  • 经过深思熟虑,我同意了。 “法国人民如何称呼这个被称为荷兰的国家?”不在框架内。如果只有 EnglishName 不可用,问题就不会出现:P
  • 所以“还”意味着我可能会来,但只会是 UWP/.NET Core。在我知道一个国家的“ISOCode”以获取翻译和替代拼写之后,我将使用“restcountries.eu”做一个“肮脏的解决方法”,将它们保存到数据库中,如果我没有通过 ISOCode 进行查找给定拼写。
【解决方案2】:

您可以使用 NuGet 包 - TheMulti0.EasyTranslate

 ITranslator translator = new GoogleTranslateClassicTranslator();     
 TranslateWord result = translator.Translate(new TranslateWord("Germany"), TranslateLanguages.Dutch);
 Console.WriteLine(result.Word);

输出

Duitsland

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多