DanLevy.net

فهم الأرقام الدولية والعملات

شرح النقود المحلية!

المال: التوطين (L10n) والتدويل (i18n)

ليست مجرد كلمات للتفوق في لعبة سكرابل، بل يشير التوطين و التدويل إلى عملية جعل المنتج يشعر وكأنه في وطنه في بلد مختلف.

عرض عملة بتنسيق محلي خاطئ هو دليل قاطع: لم تبذل أي جهد.
إذا كنت لا تستطيع تنسيق سعر، فكيف ستتعامل مع الشحن؟

التدويل موضوع كبير، يغطي كل شيء من ترجمة النصوص إلى تنسيق التواريخ. في هذه المقالة سنركز على موضوع فرعي معين، تنسيق الأرقام والعملات.

دعنا نستكشف التنسيق بين 3 دول من منطقة اليورو، والولايات المتحدة والهند:

فوضى! أليس كذلك؟ رموز ومسافات وعلامات ترقيم تتطاير في كل مكان! من المذهل أن يتمكن الاتحاد الأوروبي من الاتفاق على أي شيء! 😅

مفاهيم أساسية

قبل أن نتعمق في الحلول، ماذا نعني بـ “الأرقام محلية”؟

الأرقام محلية 🏘️

كل إعداد محلي (الدولة حسب ISO 3166) يحدد قواعد تنسيق الأرقام.

تتضمن قواعد تنسيق الأرقام:

العملة عالمية 🌎

العملة تشير إلى وحدة نقدية محددة. (انظر ISO 4217 للقائمة.)

متى يكون الإعداد المحلي مهمًا

معظم واجهات برمجة تطبيقات REST للتجارة الإلكترونية/الدفع تتعامل مع price + currencyCode. لماذا لا توجد إعدادات محلية؟

الإعدادات المحلية تُضبط (عادةً) على مستوى نظام التشغيل/الجهاز، وتجعلها المتصفحات متاحة عبر navigator.language. نظرًا لأن كل مستخدم من مستخدميك قد يكون لديه إعداد محلي مختلف، فمن المنطقي فقط تنسيق الأرقام والعملة على جانب العميل.

حل

حسنًا، أخبار سارة! لغات البرمجة الحديثة تدعم هذا بشكل مدمج. في جافا سكريبت، لدينا الفئة 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.

الخطوات التالية

اعتمادًا على احتياجاتك الخاصة، قد ترغب في استكشاف مفاهيم ذات صلة:

أخبرني إذا كنت ترغب في رؤية مقال مستقبلي حول هذه المواضيع!

جافا سكريبت / تايب سكريبت

Rust

Go