UNPKG

react-native-moyasar-sdk

Version:

Official React Native Moyasar SDK - Integrate Credit Cards, Apple Pay, Samsung Pay, and STC Pay with simple interfaces for a seamless payment experience in your React Native app

134 lines (128 loc) 5.93 kB
"use strict"; import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import { I18nManager, NativeModules, Platform, Settings } from 'react-native'; import RTNDeviceLanguage from "../specs/NativeRTNDeviceLanguage.js"; import { errorLog } from "../helpers/debug_log.js"; const resources = { en: { moyasarTranslation: { // Credit Card nameOnCard: 'Name on Card', cardNumber: 'Card Number', expiry: 'Expiry (MM/YY)', cvc: 'CVC', cardNumberRequired: 'Card number is required', invalidCardNumber: 'Invalid card number', unsupportedCreditCardNetwork: 'Unsupported card type', expiryRequired: 'Expiry date is required', invalidExpiry: 'Invalid expiry date', expiredCard: 'Expired card', nameRequired: 'Name is required', bothNamesRequired: 'Both first and last names are required', onlyEnglishAlphabets: 'Name must only contain english alphabets', cvcRequired: 'Security code is required', onlyDigits: 'Security code must only contain numbers', invalidCvc: 'Invalid security code', pay: 'Pay', // STC Pay phoneNumberTitle: 'Mobile Number', phoneNumberRequired: 'Phone number is required', phoneNumberInvalid: 'Phone number should begin with 05', phoneNumberInvalidCount: 'Phone number should be 10 digits', phoneNumberOnlyDigits: 'Phone number must only contain numbers', phoneNumberNotRegisteredTitle: 'Mobile Number Not Registered', phoneNumberNotRegisteredBody: 'The mobile number entered is not registered to use stc pay', otpTitle: 'One-time Password', otpRequired: 'One-time password is required', otpOnlyDigits: 'One-time password must only contain numbers', otpInvalidCount: 'One-time password should be 4-10 digits', otpConfirm: 'Confirm' } }, ar: { moyasarTranslation: { // Credit Card nameOnCard: 'الاسم على البطاقة', cardNumber: 'رقم البطاقة', expiry: 'تاريخ الانتهاء (شهر/سنة)', cvc: 'رمز الأمان', cardNumberRequired: 'رقم البطاقة مطلوب', invalidCardNumber: 'رقم البطاقة غير صحيح', unsupportedCreditCardNetwork: 'نوع البطاقة الإئتمانية غير مدعوم', expiryRequired: 'تاريخ الإنتهاء مطلوب', invalidExpiry: 'تاريخ الإنتهاء غير صحيح', expiredCard: 'البطاقة منتهية', nameRequired: 'الاسم مطلوب', bothNamesRequired: 'الاسم الأول والأخير مطلوبان', onlyEnglishAlphabets: 'يجب أن يحتوي الاسم على حروف إنجليزية فقط', cvcRequired: 'رمز الأمان مطلوب', onlyDigits: 'رمز الأمان يجب أن يحتوي على أرقام فقط', invalidCvc: 'رمز الأمان غير صحيح', pay: 'ادفع', // STC Pay phoneNumberTitle: 'رقم الجوال', phoneNumberRequired: 'رقم الجوال مطلوب', phoneNumberInvalid: 'رقم الجوال يجب أن يبدأ بـ 05', phoneNumberInvalidCount: 'يجب أن يحتوي رقم الجوال على 10 أرقام فقط', phoneNumberOnlyDigits: 'يجب أن يحتوي رقم الجوال على أرقام فقط', phoneNumberNotRegisteredTitle: 'رقم الجوال غير مسجل', phoneNumberNotRegisteredBody: 'رقم الجوال المدخل غير مسجل لإستخدام stc pay', otpTitle: 'رمز التحقق المؤقت', otpRequired: 'رمز التحقق المؤقت مطلوب', otpOnlyDigits: 'رمز التحقق المؤقت يجب أن يحتوي على أرقام فقط', otpInvalidCount: 'رمز التحقق المؤقت يجب أن يكون بين 4-10 أرقام فقط', otpConfirm: 'تأكيد' } } }; // App language is currently supported for new arch only, system language for the old arch // TODO: Check 'https://www.npmjs.com/package/i18next-browser-languagedetector' when supporting web export function getCurrentLang() { let lang; // iOS old arch if (Platform.OS === 'ios' && NativeModules && NativeModules.SettingsManager && NativeModules.SettingsManager.settings) { lang = NativeModules.SettingsManager.settings.AppleLocale || NativeModules.SettingsManager.settings.AppleLanguages[0]; // iOS 13 // Android old arch } else if (NativeModules && NativeModules.I18nManager) { lang = NativeModules.I18nManager.localeIdentifier; } // New arch if (RTNDeviceLanguage && !lang) { lang = RTNDeviceLanguage.getPreferredLanguage(); } // Fallback, should not be reached if (Platform.OS === 'ios' && !lang) { lang = Settings.get('AppleLocale') || Settings.get('AppleLanguages')[0]; } else if (!lang) { lang = I18nManager.getConstants()?.localeIdentifier; } if (!lang) { errorLog('Could not get current language'); } return lang?.substring(0, 2) || 'en'; } // TODO: Optimize and find a better way to handle localizations in an SDK + Make sure that localizations are ready before showing any view export function getConfiguredLocalizations() { if (i18n.isInitialized) { if (!i18n.hasResourceBundle('en', 'moyasarTranslation')) { i18n.addResourceBundle('en', 'moyasarTranslation', resources.en.moyasarTranslation); } if (!i18n.hasResourceBundle('ar', 'moyasarTranslation')) { i18n.addResourceBundle('ar', 'moyasarTranslation', resources.ar.moyasarTranslation); } } else { i18n.use(initReactI18next).init({ resources: resources, compatibilityJSON: 'v3', lng: getCurrentLang(), ns: 'moyasarTranslation', fallbackLng: ['en', 'ar'] }); } return i18n; } export function isArabicLang() { return getCurrentLang() === 'ar'; } //# sourceMappingURL=i18n.js.map