56 votes

Tirer la devise de la culture actuelle ?

Existe-t-il un moyen d'obtenir les informations actuelles de manière dynamique à partir des paramètres de culture de l'application ? En gros, si l'utilisateur a réglé la culture sur US, je veux savoir que la monnaie est le dollar, ou s'il l'a réglé sur UK, je veux savoir que la livre sterling, etc... etc...

Cela me permet d'envoyer cette information à PayPal lorsqu'un paiement est effectué.

1 votes

Je pense que Paypal attend "USD" qui est le code de devise ISO.

90voto

Hans Passant Points 475940

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

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

Sortie : "USD"

0 votes

Cela devrait fonctionner parfaitement ! Je vais essayer cet après-midi et marquer comme réponse si ça marche :) Merci

41voto

Marc Gravell Points 482669

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

0 votes

Exactement ce que je cherchais, mais il faut d'abord importer System.Globalization. Merci

26voto

Fadrian Sudaman Points 4659

Une fois que vous avez l'objet CultureInfo ci, vous pouvez poser une question telle que

ci.NumberFormat.CurrencySymbol

Pour la culture actuelle, vous ferez simplement

CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol

1 votes

Ce n'est pas forcément suffisant car le SYMBOLE de la devise peut ne pas être unique.

2 votes

Ceci renverra les symboles monétaires non ISO. Par exemple, au lieu de EUR, vous obtiendrez le symbole de l'euro comme € .

4voto

Cornel Points 1461
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;

1 votes

Le symbole ISOCurrencySymbol est le code à 3 lettres (par exemple, USD). Le symbole ou le signe (par exemple, $), tel qu'il est récupéré par NumberFormat.CurrencySymbol, n'est PAS unique.

0 votes

Juste un avertissement : CurrentRegion ne provient PAS de la culture de l'interface utilisateur actuelle, et changer la culture du fil de discussion actuel ne changera pas CurrentRegion -. docs.microsoft.com/fr/us/dotnet/api/ Pour ce faire, voir la réponse de @Hans Passant

2voto

Jan Remunda Points 3088

Vous pouvez utiliser la classe CultureInfo

CultureInfo ci = new CultureInfo(UICulture);
var symbol = ci.NumberFormat.CurrencySymbol;

3 votes

Pas assez bon - désolé. Le symbole de la devise n'est pas la devise - il n'est pas nécessaire qu'il soit unique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X