Obtener la moneda de la cultura actual?


¿Hay alguna forma de obtener información actual dinámicamente desde la configuración de cultura de aplicaciones? Básicamente, si el usuario ha establecido la cultura para NOSOTROS, quiero saber que la moneda es el dólar, o si lo tienen establecido en el Reino Unido, quiero libra esterlina, etc... sucesivamente..

Esto es para que pueda enviar esta información a PayPal cuando se realiza un pago

Author: abatishchev, 2010-05-04

7 answers

Utilice el RegionInfo.ISOCurrencySymbol propiedad. Por ejemplo:

  var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
  Console.WriteLine(ri.ISOCurrencySymbol);

Salida: "USD"

 76
Author: Hans Passant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-23 10:33:53

Puede obtener el símbolo de CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, pero dudo que esto sea suficiente; es posible que deba mantener una lista separada por cultura. O simplemente deje que el usuario le diga lo que quiere pagar (por ejemplo, podría estar lejos de casa, etc., por lo que la cultura del PC en algún salón de hotel no es lo que está en su tarjeta de crédito)

 39
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-04 06:15:24

Una vez que tenga el objeto CultureInfo ci, puede preguntar como

ci.NumberFormat.CurrencySymbol

Para la cultura actual, simplemente harás

CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
 25
Author: Fadrian Sudaman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-04 06:07:15
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;
 3
Author: Cornel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-27 10:08:48

Básicamente puedes usar CultureInfo class

CultureInfo ci = new CultureInfo(UICulture);
var symbol = ci.NumberFormat.CurrencySymbol;
 2
Author: Jan Remunda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-04 06:07:56
    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;
                    }
                }
        }
 1
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-13 07:55:12

Http://help.outlook.com/en-us/140/system.globalization.regioninfo.currencynativename(VS.85).aspx

Querrá el RegionInfo.CurrencyNativeName, RegionInfo.CurrencyEnglishName o RegionInfo.ISOCurrencySymbol

 0
Author: Jeroen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-02 13:57:42