2将ISO国家代码写入CultureInfo

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

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

如何从2个字母的ISO国家/地区代码中获取CultureInfo对象。 我一直在努力实现这一目标,但却无法找到转化之路。

有什么指针吗?

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

如果您查看microsoft提供的CultureCodes列表,您可以看到文化的前两个字母指的是语言,最后两个字母指的是国家/地区。 例如,对于日语,您将拥有“ja”和“ja-JP”)。

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

然后,您可以再次浏览它们以找到用户所选语言(如果可用)或任意选择一种语言。

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

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

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