2将ISO国家代码写入CultureInfo

时间:2017-08-25 15:15:42

标签: c# xamarin iso

我有一个Xamarin.Forms应用程序,它正在为GeoLocation获取一个2个字母的ISO国家/地区代码。我需要应用程序以本地风格显示货币。因此,如果我将手机从英国带到日本,它将显示以日元格式化的货币字段。

格式化十进制货币的最直接方法是使用CultureInfo对象。

如何从双字母ISO国家/地区代码访问CultureInfo对象。我一直在努力实现这一目标,但找不到转换之路。

任何指针?

2 个答案:

答案 0 :(得分:6)

var isoCountryCode = "GB"; // Replace with the one you got from GeoLocation.
var cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)
                          .Where(c => c.Name.EndsWith("-" + isoCountryCode )).First;

如果您查看CultureCodes provided by microsoft列表,可以看到文化的前两个字母是指语言,最后两个字母是国家。例如,对于日语,你会有“ja”和“ja-JP”。

因此,如果您搜索以所需国家/地区代码结尾的文化列表,您应该获得所需国家/地区的所有可用CultureInfo列表。

然后你可以再次浏览它们以找到用户所选语言的一个(如果有的话)或任意选择一个。

答案 1 :(得分:-1)

您可以通过双字母代码搜索所有文化:

CultureInfo.GetCultures(CultureTypes.AllCultures)
           .Where(cu => cu.TwoLetterISOLanguageName == code);

请注意,可能会有多个结果。