web-dev-qa-db-fra.com

Obtenez la devise de la culture actuelle?

Existe-t-il un moyen d'obtenir dynamiquement les informations actuelles à partir des paramètres de culture des applications? Fondamentalement, si l'utilisateur a défini la culture sur les États-Unis, je veux savoir que la devise est le dollar, ou s'il l'a définie sur le Royaume-Uni, je veux livre sterling etc ... etc.

C'est ainsi que je peux envoyer ces informations à Paypal lorsqu'un paiement est effectué

50
leen3o

Utilisez la propriété RegionInfo.ISOCurrencySymbol. Par exemple:

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

Sortie: "USD"

80
Hans Passant

Vous pouvez obtenir le symbole de CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, mais je doute que cela soit suffisant; vous devrez peut-être maintenir une liste distincte par culture. Ou laissez simplement l'utilisateur vous dire ce qu'il veut payer (par exemple, il pourrait être loin de chez lui, etc., donc la culture du PC dans un salon d'hôtel n'est pas ce qui est sur leur carte de crédit)

40
Marc Gravell

Une fois que vous avez l'objet CultureInfo ci, vous pouvez demander par exemple

ci.NumberFormat.CurrencySymbol

Pour la culture actuelle, vous ferez simplement

CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
26
Fadrian Sudaman
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;
4
Cornel

Vous pouvez essentiellement utiliser la classe CultureInfo

CultureInfo ci = new CultureInfo(UICulture);
var symbol = ci.NumberFormat.CurrencySymbol;
2
Jan Remunda
    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
Mike

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

Vous aurez besoin de RegionInfo.CurrencyNativeName, RegionInfo.CurrencyEnglishName ou RegionInfo.ISOCurrencySymbol

0
Jeroen