Есть ли способ динамически получать актуальную информацию из настроек культуры приложений? В основном, если пользователь установил культуру США, я хочу знать, что валюта - доллары, или если он настроен на Великобританию, я хочу фунт стерлингов и т. Д.
Это позволяет мне отправлять эту информацию в PayPal при совершении платежа
Используйте свойство RegionInfo.ISOCurrencySymbol. Например:
var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID); Console.WriteLine(ri.ISOCurrencySymbol);
Вывод: "USD"
Вы можете получить символ от CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, но я сомневаюсь, что этого достаточно; вам может потребоваться вести отдельный список для каждой культуры. Или просто позвольте пользователю рассказать, сколько он хочет заплатить (например, он может быть вдали от дома и т. Д., Поэтому культура ПК в каком-то гостиничном лаундже не , что в его кредитах карта)
CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
Если у вас есть объект CultureInfo ci, вы можете задать, например,
ci.NumberFormat.CurrencySymbol
Для текущей культуры вы просто сделаете
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;
Вы можете в основном использовать класс CultureInfo
CultureInfo ci = new CultureInfo(UICulture); var symbol = ci.NumberFormat.CurrencySymbol;
public static string GetCurrencySymbol(string currency) { if (currency == null) return ""; if (currency == "") return ""; int i = 0; var regionInfo = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID); foreach (var cultureInfo in CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures)) { if (!cultureInfo.Equals(CultureInfo.InvariantCulture)) { var regionCulture = new RegionInfo(cultureInfo.LCID); if(regionCulture.ISOCurrencySymbol == currency) { //list.Add(regionCulture); regionInfo = regionCulture; } } }
http://help.outlook.com/en-us/140/system.globalization.regioninfo.currencynativename(VS.85).aspx
Вам понадобится RegionInfo.CurrencyNativeName, RegionInfo.CurrencyEnglishName или RegionInfo.ISOCurrencySymbol