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é
Utilisez la propriété RegionInfo.ISOCurrencySymbol. Par exemple:
var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
Console.WriteLine(ri.ISOCurrencySymbol);
Sortie: "USD"
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)
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
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;
Vous pouvez essentiellement utiliser la classe 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
Vous aurez besoin de RegionInfo.CurrencyNativeName, RegionInfo.CurrencyEnglishName ou RegionInfo.ISOCurrencySymbol