2010-05-04 18 views
48

क्या ऐप्स संस्कृति सेटिंग से गतिशील रूप से वर्तमान जानकारी प्राप्त करने का कोई तरीका है? असल में यदि उपयोगकर्ता ने अमेरिका को संस्कृति स्थापित की है, तो मैं जानना चाहता हूं कि मुद्रा डॉलर है, या यदि वे ब्रिटेन में सेट हैं तो मैं स्टर्लिंग इत्यादि पाउंड करना चाहता हूं ... आदि ..मुद्रा को वर्तमान संस्कृति से प्राप्त करें?

ऐसा इसलिए है कि मैं इसे भेज सकता हूं पेपैल के लिए जानकारी जब एक भुगतान

+0

मैं "USD" लगता है कि पेपैल "यूएसडी" की अपेक्षा करता है जो आईएसओ मुद्रा कोड है। –

उत्तर

73

RegionInfo.ISOCurrencySymbol प्रॉपर्टी का उपयोग करें। उदाहरण के लिए:

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

आउटपुट:

+0

मुझे लगता है कि पेपैल "यूएसडी" की अपेक्षा करता है, वह आईएसओ मुद्रा कोड की तलाश में है .. –

+0

यह पूरी तरह से काम करना चाहिए! मैं इसे आज दोपहर कोशिश करूंगा और अगर यह काम करता है तो उत्तर के रूप में चिह्नित करें :) धन्यवाद – leen3o

24

किया जा रहा है एक बार जब आप CultureInfo ci वस्तु है, तो आप वर्तमान संस्कृति के लिए इस तरह के रूप

ci.NumberFormat.CurrencySymbol 

पूछ सकते हैं, तो आप बस करना होगा

CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol 
+1

आवश्यक नहीं है क्योंकि मुद्रा SYMBOL अद्वितीय नहीं हो सकता है। – TomTom

+0

बस जो मैं खोज रहा था, धन्यवाद :) – Ortund

+1

यह आईएसओ मुद्रा प्रतीकों को वापस नहीं करेगा। उदाहरण के लिए यूरो के बजाय आपको यूरो प्रतीक मिलेगा। – Tomas

2

आप मूल रूप से CultureInfo वर्ग का उपयोग कर सकते

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

पर्याप्त नहीं है - क्षमा करें। वह मुद्रा प्रतीक मुद्रा नहीं है - इसके लिए अद्वितीय होने की कोई आवश्यकता नहीं है। – TomTom

38

आप CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol से प्रतीक प्राप्त कर सकते हैं, लेकिन मुझे शक है यह पर्याप्त है, आपको प्रति संस्कृति की एक अलग सूची बनाए रखने की आवश्यकता हो सकती है। या बस उपयोगकर्ता को बताएं कि वे क्या भुगतान करना चाहते हैं (उदाहरण के लिए, वे घर से दूर हो सकते हैं, आदि, इसलिए कुछ होटल लाउंज में पीसी की संस्कृति उनके क्रेडिट कार्ड पर नहीं है)

+0

बिल्कुल वही जो मैं खोज रहा था लेकिन आपको पहले सिस्टम आयात करना होगा। ग्लोबलाइजेशन पहले। धन्यवाद –

1
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; 
        } 
       } 
     } 
+0

ओ (एन) प्रत्येक बार खोज ?? इसे एक पुनरावर्ती कार्य क्यों न करें और कुछ यादें करें? – Henrik

3
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol; 
+0

ISOCurrencySymbol 3-अक्षर कोड (उदा।, यूएसडी) है। संख्या या संकेत (उदाहरण के लिए, $) के रूप में NumberFormat.CurrencySymbol द्वारा पुनर्प्राप्त, अद्वितीय नहीं है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^