获取特定语言的国家/地区名称,而不是系统选择的语言

时间:2016-10-03 13:44:32

标签: c# windows-runtime uwp

我需要解决以下问题。看起来很简单,但我被卡住了。

我正在编写一个转换器,它将一个国家/地区的地理区域代码作为输入,并应以该应用程序的显示语言返回该国家/地区的名称。

示例(目标功能)

申请语言:“FR”

输入:“US”

输出:“ÉtatsUnis”

为此,我使用以下代码。

  public object Convert(object value, Type targetType, object parameter, string language)
    {
        string countryCode = (string)value;                       
        var country = new Windows.Globalization.GeographicRegion(countryCode);
        return country.DisplayName;

    }

问题在于它以系统选择语言返回国家/地区。例如。

示例2

系统语言:“en-US”

应用程序语言(通过PrimaryLanguageOverride设置):“FR”

输入:“US”

输出:美国

我怀疑发生的情况是Windows.Globalization.GeographicRegion类从系统范围设置而不是应用程序文化设置中获取其文化数据。

有人知道解决方法吗?

有没有办法为转换器运行的线程设置不同的文化?

1 个答案:

答案 0 :(得分:1)

GeographicRegion.DisplayName可以获得一个适合显示给用户以识别该区域的本地化字符串。但是,此功能需要安装相应的语言包。

例如,要以法语显示区域,我们需要通过打开设置→时间和安排来安装Français语言包。语言→地区&语言→添加语言
enter image description here

请注意,我们不需要将French设置为默认语言,因此系统语言仍然是英语。

安装法语语言包后,您的代码应该能够以法语返回本地化的区域名称。例如,当您输入“US”时,输出应为“États-Unis”。