DanLevy.net

अंतर्राष्ट्रीय संख्याओं और मुद्रा को समझना

स्थानीयकृत धन समझाया गया!

धन: स्थानीयकरण (L10n) और अंतर्राष्ट्रीयकरण (i18n)

वे सिर्फ स्क्रेबल के खेल में जीतने के लिए नहीं हैं, स्थानीयकरण और अंतर्राष्ट्रीयकरण किसी उत्पाद को किसी अलग देश में घर जैसा महसूस कराने की प्रक्रिया को संदर्भित करते हैं।

गलत स्थानीय प्रारूप में मुद्रा दिखाना एक स्पष्ट संकेत है: आपने कोई प्रयास नहीं किया है।
यदि आप कीमत प्रारूपित नहीं कर सकते, तो शिपिंग कैसे संभालेंगे?

अंतर्राष्ट्रीयकरण एक बड़ा विषय है, जो पाठ अनुवाद से लेकर दिनांक प्रारूपण तक सब कुछ कवर करता है। इस पोस्ट में हम एक विशेष उपविषय पर ध्यान केंद्रित करेंगे, संख्याओं और मुद्रा को प्रारूपित करना।

आइए 3 यूरोज़ोन देशों, USA और भारत के बीच प्रारूपण का पता लगाएं:

अराजकता! है न? प्रतीक, रिक्त स्थान और विराम चिह्न सब जगह उड़ रहे हैं! यह अद्भुत है कि EU किसी भी चीज़ पर सहमत कैसे हो पाता है! 😅

महत्वपूर्ण अवधारणाएँ

समाधानों में गोता लगाने से पहले, “संख्याएँ स्थानीय होती हैं” से हमारा क्या तात्पर्य है?

संख्याएँ स्थानीय होती हैं 🏘️

प्रत्येक लोकेल (ISO 3166 प्रति देश) संख्याओं को प्रारूपित करने के नियमों को परिभाषित करता है।

संख्या प्रारूपण नियमों में शामिल हैं:

मुद्रा वैश्विक होती है 🌎

एक currency धन की एक विशिष्ट इकाई को संदर्भित करती है। (सूची के लिए ISO 4217 देखें।)

जब लोकेल मायने रखता है

अधिकांश ईकॉमर्स/पेमेंट REST APIs price + currencyCode से निपटते हैं। लोकेल क्यों नहीं?

लोकेल आमतौर पर OS/डिवाइस स्तर पर सेट किए जाते हैं, और ब्राउज़र उन्हें navigator.language के माध्यम से उपलब्ध कराते हैं। चूंकि आपके प्रत्येक उपयोगकर्ता का लोकेल अलग हो सकता है, इसलिए क्लाइंट साइड पर संख्याओं और मुद्रा को प्रारूपित करना ही समझदारी है।

एक समाधान

ठीक है, अच्छी खबर! आधुनिक प्रोग्रामिंग भाषाओं में इसके लिए अंतर्निहित समर्थन है। JavaScript में, हमारे पास Intl क्लास और Intl.NumberFormat है!

आइए कुछ कोड देखें:

const number = 1_234_567.89;
/**
* Format a number in local currency.
* @param {number} amount - The amount to format.
* @param {string} currency - The 3-letter currency code.
* @param {string} [locale] - The users locale string.
*/
const formatMoney = (amount, currency, locale = navigator.language) =>
new Intl.NumberFormat(locale, { currency, style: 'currency' })
.format(amount);
console.log('🇩🇪 ' + formatMoney(number, 'EUR', 'de-DE'));
console.log('🇮🇪 ' + formatMoney(number, 'EUR', 'ga-IE'));
console.log('🇫🇷 ' + formatMoney(number, 'EUR', 'fr-FR'));

यदि आपको करों की गणना, छूट लागू करना, या मुद्राओं के बीच रूपांतरण जैसे अधिक जटिल कार्य करने हैं, तो आपको dinero.js जैसी लाइब्रेरी का उपयोग करना चाहिए।

अगले कदम

आपकी विशिष्ट आवश्यकताओं के आधार पर, आप संबंधित अवधारणाओं का पता लगा सकते हैं:

मुझे बताएं यदि आप इन विषयों पर भविष्य का लेख देखना चाहेंगे!