diff --git a/package.json b/package.json index faa35f1..f445f50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "processout.js", - "version": "1.9.11", + "version": "1.9.13", "description": "ProcessOut.js is a JavaScript library for ProcessOut's payment processing API.", "scripts": { "build:processout": "tsc -p src/processout && uglifyjs --compress --keep-fnames --ie8 dist/processout.js -o dist/processout.js", diff --git a/src/dynamic-checkout/locales/bg.ts b/src/dynamic-checkout/locales/bg.ts new file mode 100644 index 0000000..88360ba --- /dev/null +++ b/src/dynamic-checkout/locales/bg.ts @@ -0,0 +1,56 @@ +module ProcessOut { + export const bg = { + "apm-redirect-message": "Ще бъдете пренасочени, за да завършите плащането.", + "save-for-future-label": "Запазване за бъдещи плащания", + "continue-with-apm-button": "Продължете с", + "pay-button-text": "Плащане", + "tokenize-payment-button-text": "Запазване на картата", + "card-details-section-title": "Данни за картата", + "cardholder-name-label": "Име на картодържателя", + "billing-address-section-title": "Адрес за фактуриране", + "country-label": "Държава", + "select-country-placeholder": "Изберете държава", + "select-state-placeholder": "Изберете щат", + "card-number-error-message": "Номерът на картата е невалиден", + "expiry-date-error-message": "Датата на валидност е невалидна", + "cvc-error-message": "Кодът за сигурност е невалиден", + "cardholder-name-error-message": "Името на картодържателя е невалидно", + "payment-error-message": "Възникна грешка. Моля, опитайте отново.", + "payment-cancelled-message": "Плащането беше отменено.", + "express-checkout-header": "Експресно плащане", + "other-payment-methods-header": "Други методи на плащане", + "select-payment-method-label": "Изберете метод на плащане", + "payment-success-message": "Това плащане е завършено.", + "payment-info-message": "Обработваме вашето плащане. Вече можете да затворите този прозорец.", + "payment-pending-message": "Плащането ви е в изчакване.", + "payment-error-generic-message": "Не успяхме да обработим плащането ви.", + "verification-success-message": "Тази проверка е завършена.", + "verification-cancelled-message": "Проверката беше отменена.", + "verification-info-message": + "Обработваме вашата проверка. Вече можете да затворите този прозорец.", + "verification-pending-message": "Проверката ви е в изчакване.", + "verification-error-generic-message": "Не успяхме да проверим картата ви.", + "processing-verification-label": "Обработване на проверката", + "street1-label": "Адрес, ред 1", + "street2-label": "Адрес, ред 2", + "city-label": "Град", + "postcode-label": "Пощенски код", + "state-label": "Щат", + "payments-manager-header": "Управление на запазените методи на плащане", + "payments-manager-close-button": "Затваряне", + "no-saved-payment-methods-header": "Няма запазени методи на плащане", + "no-saved-payment-methods-message": + "Следващия път, когато запазите метод на плащане, той ще се появи тук.", + "card-number-label": "Номер на картата", + "expiry-date-label": "Дата на валидност", + "cvc-label": "Код за сигурност", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Тази карта не се поддържа", + "card-label": "Карта", + "delete-payment-method-label": "Изтриване на метода на плащане", + "settings-button-label": "Управление на запазените методи на плащане", + "loading-label": "Зареждане", + "processing-payment-label": "Обработване на плащането", + "card-form-label": "Формуляр за плащане с карта", + } +} diff --git a/src/dynamic-checkout/locales/bn.ts b/src/dynamic-checkout/locales/bn.ts new file mode 100644 index 0000000..2a64be1 --- /dev/null +++ b/src/dynamic-checkout/locales/bn.ts @@ -0,0 +1,57 @@ +module ProcessOut { + export const bn = { + "apm-redirect-message": "পেমেন্ট সম্পন্ন করতে আপনাকে রিডাইরেক্ট করা হবে।", + "save-for-future-label": "ভবিষ্যতের পেমেন্টের জন্য সংরক্ষণ করুন", + "continue-with-apm-button": "এর মাধ্যমে চালিয়ে যান:", + "pay-button-text": "পেমেন্ট করুন", + "tokenize-payment-button-text": "কার্ড সংরক্ষণ করুন", + "card-details-section-title": "কার্ডের বিবরণ", + "cardholder-name-label": "কার্ডধারীর নাম", + "billing-address-section-title": "বিলিং ঠিকানা", + "country-label": "দেশ", + "select-country-placeholder": "দেশ নির্বাচন করুন", + "select-state-placeholder": "রাজ্য নির্বাচন করুন", + "card-number-error-message": "কার্ড নম্বর সঠিক নয়", + "expiry-date-error-message": "মেয়াদ শেষের তারিখ সঠিক নয়", + "cvc-error-message": "সিকিউরিটি কোড সঠিক নয়", + "cardholder-name-error-message": "কার্ডধারীর নাম সঠিক নয়", + "payment-error-message": "কিছু একটা সমস্যা হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "payment-cancelled-message": "পেমেন্ট বাতিল করা হয়েছে।", + "express-checkout-header": "এক্সপ্রেস চেকআউট", + "other-payment-methods-header": "অন্যান্য পেমেন্ট পদ্ধতি", + "select-payment-method-label": "পেমেন্ট পদ্ধতি নির্বাচন করুন", + "payment-success-message": "এই পেমেন্ট সম্পন্ন হয়েছে।", + "payment-info-message": + "আমরা আপনার পেমেন্ট প্রক্রিয়া করছি। আপনি এখন এই উইন্ডোটি বন্ধ করতে পারেন।", + "payment-pending-message": "আপনার পেমেন্ট মুলতুবি রয়েছে।", + "payment-error-generic-message": "আমরা আপনার পেমেন্ট প্রক্রিয়া করতে পারিনি।", + "verification-success-message": "এই যাচাইকরণ সম্পন্ন হয়েছে।", + "verification-cancelled-message": "যাচাইকরণ বাতিল করা হয়েছে।", + "verification-info-message": + "আমরা আপনার যাচাইকরণ প্রক্রিয়া করছি। আপনি এখন এই উইন্ডোটি বন্ধ করতে পারেন।", + "verification-pending-message": "আপনার যাচাইকরণ মুলতুবি রয়েছে।", + "verification-error-generic-message": "আমরা আপনার কার্ড যাচাই করতে পারিনি।", + "processing-verification-label": "যাচাইকরণ প্রক্রিয়া করা হচ্ছে", + "street1-label": "ঠিকানা লাইন ১", + "street2-label": "ঠিকানা লাইন ২", + "city-label": "শহর", + "postcode-label": "পোস্টাল কোড", + "state-label": "রাজ্য", + "payments-manager-header": "সংরক্ষিত পেমেন্ট পদ্ধতি পরিচালনা করুন", + "payments-manager-close-button": "বন্ধ করুন", + "no-saved-payment-methods-header": "কোনো সংরক্ষিত পেমেন্ট পদ্ধতি নেই", + "no-saved-payment-methods-message": + "পরবর্তীবার আপনি কোনো পেমেন্ট পদ্ধতি সংরক্ষণ করলে তা এখানে দেখা যাবে।", + "card-number-label": "কার্ড নম্বর", + "expiry-date-label": "মেয়াদ শেষের তারিখ", + "cvc-label": "সিকিউরিটি কোড", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "এই কার্ড সমর্থিত নয়", + "card-label": "কার্ড", + "delete-payment-method-label": "পেমেন্ট পদ্ধতি মুছুন", + "settings-button-label": "সংরক্ষিত পেমেন্ট পদ্ধতি পরিচালনা করুন", + "loading-label": "লোড হচ্ছে", + "processing-payment-label": "পেমেন্ট প্রক্রিয়া করা হচ্ছে", + "card-form-label": "কার্ড পেমেন্ট ফর্ম", + } +} diff --git a/src/dynamic-checkout/locales/cs.ts b/src/dynamic-checkout/locales/cs.ts new file mode 100644 index 0000000..91f83d6 --- /dev/null +++ b/src/dynamic-checkout/locales/cs.ts @@ -0,0 +1,54 @@ +module ProcessOut { + export const cs = { + "apm-redirect-message": "Budete přesměrováni k dokončení platby.", + "save-for-future-label": "Uložit pro budoucí platby", + "continue-with-apm-button": "Pokračovat s", + "pay-button-text": "Zaplatit", + "tokenize-payment-button-text": "Uložit kartu", + "card-details-section-title": "Údaje o kartě", + "cardholder-name-label": "Jméno držitele karty", + "billing-address-section-title": "Fakturační adresa", + "country-label": "Země", + "select-country-placeholder": "Vyberte zemi", + "select-state-placeholder": "Vyberte stát", + "card-number-error-message": "Číslo karty je neplatné", + "expiry-date-error-message": "Datum platnosti je neplatné", + "cvc-error-message": "Bezpečnostní kód je neplatný", + "cardholder-name-error-message": "Jméno držitele karty je neplatné", + "payment-error-message": "Něco se pokazilo. Zkuste to prosím znovu.", + "payment-cancelled-message": "Platba byla zrušena.", + "express-checkout-header": "Rychlá platba", + "other-payment-methods-header": "Další platební metody", + "select-payment-method-label": "Vyberte platební metodu", + "payment-success-message": "Tato platba byla dokončena.", + "payment-info-message": "Vaši platbu zpracováváme. Toto okno můžete nyní zavřít.", + "payment-pending-message": "Vaše platba čeká na zpracování.", + "payment-error-generic-message": "Vaši platbu se nepodařilo zpracovat.", + "verification-success-message": "Toto ověření bylo dokončeno.", + "verification-cancelled-message": "Ověření bylo zrušeno.", + "verification-info-message": "Vaše ověření zpracováváme. Toto okno můžete nyní zavřít.", + "verification-pending-message": "Vaše ověření čeká na zpracování.", + "verification-error-generic-message": "Vaši kartu se nepodařilo ověřit.", + "processing-verification-label": "Probíhá ověření", + "street1-label": "Adresa, řádek 1", + "street2-label": "Adresa, řádek 2", + "city-label": "Město", + "postcode-label": "PSČ", + "state-label": "Stát", + "payments-manager-header": "Správa uložených platebních metod", + "payments-manager-close-button": "Zavřít", + "no-saved-payment-methods-header": "Žádné uložené platební metody", + "no-saved-payment-methods-message": "Až příště uložíte platební metodu, zobrazí se zde.", + "card-number-label": "Číslo karty", + "expiry-date-label": "Datum platnosti", + "cvc-label": "Bezpečnostní kód", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Tato karta není podporována", + "card-label": "Karta", + "delete-payment-method-label": "Odstranit platební metodu", + "settings-button-label": "Správa uložených platebních metod", + "loading-label": "Načítání", + "processing-payment-label": "Probíhá zpracování platby", + "card-form-label": "Formulář pro platbu kartou", + } +} diff --git a/src/dynamic-checkout/locales/da.ts b/src/dynamic-checkout/locales/da.ts new file mode 100644 index 0000000..314d37b --- /dev/null +++ b/src/dynamic-checkout/locales/da.ts @@ -0,0 +1,54 @@ +module ProcessOut { + export const da = { + "apm-redirect-message": "Du bliver omdirigeret for at gennemføre betalingen.", + "save-for-future-label": "Gem til fremtidige betalinger", + "continue-with-apm-button": "Fortsæt med", + "pay-button-text": "Betal", + "tokenize-payment-button-text": "Gem kort", + "card-details-section-title": "Kortoplysninger", + "cardholder-name-label": "Kortholders navn", + "billing-address-section-title": "Faktureringsadresse", + "country-label": "Land", + "select-country-placeholder": "Vælg land", + "select-state-placeholder": "Vælg stat", + "card-number-error-message": "Kortnummeret er ugyldigt", + "expiry-date-error-message": "Udløbsdatoen er ugyldig", + "cvc-error-message": "Sikkerhedskoden er ugyldig", + "cardholder-name-error-message": "Kortholders navn er ugyldigt", + "payment-error-message": "Noget gik galt. Prøv venligst igen.", + "payment-cancelled-message": "Betalingen er blevet annulleret.", + "express-checkout-header": "Hurtig betaling", + "other-payment-methods-header": "Andre betalingsmetoder", + "select-payment-method-label": "Vælg betalingsmetode", + "payment-success-message": "Denne betaling er gennemført.", + "payment-info-message": "Vi behandler din betaling. Du kan nu lukke dette vindue.", + "payment-pending-message": "Din betaling afventer.", + "payment-error-generic-message": "Vi kunne ikke behandle din betaling.", + "verification-success-message": "Denne verificering er gennemført.", + "verification-cancelled-message": "Verificeringen er blevet annulleret.", + "verification-info-message": "Vi behandler din verificering. Du kan nu lukke dette vindue.", + "verification-pending-message": "Din verificering afventer.", + "verification-error-generic-message": "Vi kunne ikke verificere dit kort.", + "processing-verification-label": "Behandler verificering", + "street1-label": "Adresselinje 1", + "street2-label": "Adresselinje 2", + "city-label": "By", + "postcode-label": "Postnummer", + "state-label": "Stat", + "payments-manager-header": "Administrer gemte betalingsmetoder", + "payments-manager-close-button": "Luk", + "no-saved-payment-methods-header": "Ingen gemte betalingsmetoder", + "no-saved-payment-methods-message": "Næste gang du gemmer en betalingsmetode, vises den her.", + "card-number-label": "Kortnummer", + "expiry-date-label": "Udløbsdato", + "cvc-label": "Sikkerhedskode", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Dette kort understøttes ikke", + "card-label": "Kort", + "delete-payment-method-label": "Slet betalingsmetode", + "settings-button-label": "Administrer gemte betalingsmetoder", + "loading-label": "Indlæser", + "processing-payment-label": "Behandler betaling", + "card-form-label": "Kortbetalingsformular", + } +} diff --git a/src/dynamic-checkout/locales/el.ts b/src/dynamic-checkout/locales/el.ts new file mode 100644 index 0000000..cd6cd93 --- /dev/null +++ b/src/dynamic-checkout/locales/el.ts @@ -0,0 +1,57 @@ +module ProcessOut { + export const el = { + "apm-redirect-message": "Θα ανακατευθυνθείτε για να ολοκληρώσετε την πληρωμή.", + "save-for-future-label": "Αποθήκευση για μελλοντικές πληρωμές", + "continue-with-apm-button": "Συνέχεια με", + "pay-button-text": "Πληρωμή", + "tokenize-payment-button-text": "Αποθήκευση κάρτας", + "card-details-section-title": "Στοιχεία κάρτας", + "cardholder-name-label": "Όνομα κατόχου κάρτας", + "billing-address-section-title": "Διεύθυνση χρέωσης", + "country-label": "Χώρα", + "select-country-placeholder": "Επιλέξτε χώρα", + "select-state-placeholder": "Επιλέξτε περιφέρεια", + "card-number-error-message": "Ο αριθμός κάρτας δεν είναι έγκυρος", + "expiry-date-error-message": "Η ημερομηνία λήξης δεν είναι έγκυρη", + "cvc-error-message": "Ο κωδικός ασφαλείας δεν είναι έγκυρος", + "cardholder-name-error-message": "Το όνομα κατόχου κάρτας δεν είναι έγκυρο", + "payment-error-message": "Κάτι πήγε στραβά. Δοκιμάστε ξανά.", + "payment-cancelled-message": "Η πληρωμή ακυρώθηκε.", + "express-checkout-header": "Γρήγορη πληρωμή", + "other-payment-methods-header": "Άλλοι τρόποι πληρωμής", + "select-payment-method-label": "Επιλέξτε τρόπο πληρωμής", + "payment-success-message": "Η πληρωμή ολοκληρώθηκε.", + "payment-info-message": + "Επεξεργαζόμαστε την πληρωμή σας. Μπορείτε τώρα να κλείσετε αυτό το παράθυρο.", + "payment-pending-message": "Η πληρωμή σας εκκρεμεί.", + "payment-error-generic-message": "Δεν ήταν δυνατή η επεξεργασία της πληρωμής σας.", + "verification-success-message": "Η επαλήθευση ολοκληρώθηκε.", + "verification-cancelled-message": "Η επαλήθευση ακυρώθηκε.", + "verification-info-message": + "Επεξεργαζόμαστε την επαλήθευσή σας. Μπορείτε τώρα να κλείσετε αυτό το παράθυρο.", + "verification-pending-message": "Η επαλήθευσή σας εκκρεμεί.", + "verification-error-generic-message": "Δεν ήταν δυνατή η επαλήθευση της κάρτας σας.", + "processing-verification-label": "Επεξεργασία επαλήθευσης", + "street1-label": "Διεύθυνση, γραμμή 1", + "street2-label": "Διεύθυνση, γραμμή 2", + "city-label": "Πόλη", + "postcode-label": "Ταχυδρομικός κώδικας", + "state-label": "Περιφέρεια", + "payments-manager-header": "Διαχείριση αποθηκευμένων τρόπων πληρωμής", + "payments-manager-close-button": "Κλείσιμο", + "no-saved-payment-methods-header": "Δεν υπάρχουν αποθηκευμένοι τρόποι πληρωμής", + "no-saved-payment-methods-message": + "Την επόμενη φορά που θα αποθηκεύσετε έναν τρόπο πληρωμής, θα εμφανιστεί εδώ.", + "card-number-label": "Αριθμός κάρτας", + "expiry-date-label": "Ημερομηνία λήξης", + "cvc-label": "Κωδικός ασφαλείας", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Αυτή η κάρτα δεν υποστηρίζεται", + "card-label": "Κάρτα", + "delete-payment-method-label": "Διαγραφή τρόπου πληρωμής", + "settings-button-label": "Διαχείριση αποθηκευμένων τρόπων πληρωμής", + "loading-label": "Φόρτωση", + "processing-payment-label": "Επεξεργασία πληρωμής", + "card-form-label": "Φόρμα πληρωμής με κάρτα", + } +} diff --git a/src/dynamic-checkout/locales/he.ts b/src/dynamic-checkout/locales/he.ts new file mode 100644 index 0000000..5be9aed --- /dev/null +++ b/src/dynamic-checkout/locales/he.ts @@ -0,0 +1,54 @@ +module ProcessOut { + export const he = { + "apm-redirect-message": "תועברו להשלמת התשלום.", + "save-for-future-label": "שמירה לתשלומים עתידיים", + "continue-with-apm-button": "המשך עם", + "pay-button-text": "לתשלום", + "tokenize-payment-button-text": "שמירת כרטיס", + "card-details-section-title": "פרטי הכרטיס", + "cardholder-name-label": "שם בעל הכרטיס", + "billing-address-section-title": "כתובת לחיוב", + "country-label": "מדינה", + "select-country-placeholder": "בחירת מדינה", + "select-state-placeholder": "בחירת מחוז", + "card-number-error-message": "מספר הכרטיס אינו תקין", + "expiry-date-error-message": "תאריך התפוגה אינו תקין", + "cvc-error-message": "קוד האבטחה אינו תקין", + "cardholder-name-error-message": "שם בעל הכרטיס אינו תקין", + "payment-error-message": "משהו השתבש. נסו שוב.", + "payment-cancelled-message": "התשלום בוטל.", + "express-checkout-header": "תשלום מהיר", + "other-payment-methods-header": "אמצעי תשלום נוספים", + "select-payment-method-label": "בחירת אמצעי תשלום", + "payment-success-message": "התשלום הושלם.", + "payment-info-message": "התשלום שלכם בטיפול. כעת ניתן לסגור חלון זה.", + "payment-pending-message": "התשלום שלכם ממתין לאישור.", + "payment-error-generic-message": "לא הצלחנו לעבד את התשלום שלכם.", + "verification-success-message": "האימות הושלם.", + "verification-cancelled-message": "האימות בוטל.", + "verification-info-message": "האימות שלכם בטיפול. כעת ניתן לסגור חלון זה.", + "verification-pending-message": "האימות שלכם ממתין לאישור.", + "verification-error-generic-message": "לא הצלחנו לאמת את הכרטיס שלכם.", + "processing-verification-label": "מעבד את האימות", + "street1-label": "כתובת, שורה 1", + "street2-label": "כתובת, שורה 2", + "city-label": "עיר", + "postcode-label": "מיקוד", + "state-label": "מחוז", + "payments-manager-header": "ניהול אמצעי תשלום שמורים", + "payments-manager-close-button": "סגירה", + "no-saved-payment-methods-header": "אין אמצעי תשלום שמורים", + "no-saved-payment-methods-message": "בפעם הבאה שתשמרו אמצעי תשלום, הוא יופיע כאן.", + "card-number-label": "מספר כרטיס", + "expiry-date-label": "תאריך תפוגה", + "cvc-label": "קוד אבטחה", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "כרטיס זה אינו נתמך", + "card-label": "כרטיס", + "delete-payment-method-label": "מחיקת אמצעי תשלום", + "settings-button-label": "ניהול אמצעי תשלום שמורים", + "loading-label": "טוען", + "processing-payment-label": "מעבד את התשלום", + "card-form-label": "טופס תשלום בכרטיס", + } +} diff --git a/src/dynamic-checkout/locales/hi.ts b/src/dynamic-checkout/locales/hi.ts new file mode 100644 index 0000000..f29ef77 --- /dev/null +++ b/src/dynamic-checkout/locales/hi.ts @@ -0,0 +1,56 @@ +module ProcessOut { + export const hi = { + "apm-redirect-message": "भुगतान पूरा करने के लिए आपको रीडायरेक्ट किया जाएगा।", + "save-for-future-label": "भविष्य के भुगतानों के लिए सहेजें", + "continue-with-apm-button": "इसके साथ जारी रखें:", + "pay-button-text": "भुगतान करें", + "tokenize-payment-button-text": "कार्ड सहेजें", + "card-details-section-title": "कार्ड विवरण", + "cardholder-name-label": "कार्डधारक का नाम", + "billing-address-section-title": "बिलिंग पता", + "country-label": "देश", + "select-country-placeholder": "देश चुनें", + "select-state-placeholder": "राज्य चुनें", + "card-number-error-message": "कार्ड नंबर अमान्य है", + "expiry-date-error-message": "समाप्ति तिथि अमान्य है", + "cvc-error-message": "सुरक्षा कोड अमान्य है", + "cardholder-name-error-message": "कार्डधारक का नाम अमान्य है", + "payment-error-message": "कुछ गलत हो गया। कृपया पुनः प्रयास करें।", + "payment-cancelled-message": "भुगतान रद्द कर दिया गया है।", + "express-checkout-header": "एक्सप्रेस चेकआउट", + "other-payment-methods-header": "अन्य भुगतान विधियाँ", + "select-payment-method-label": "भुगतान विधि चुनें", + "payment-success-message": "यह भुगतान पूरा हो गया है।", + "payment-info-message": "हम आपके भुगतान को संसाधित कर रहे हैं। अब आप यह विंडो बंद कर सकते हैं।", + "payment-pending-message": "आपका भुगतान लंबित है।", + "payment-error-generic-message": "हम आपका भुगतान संसाधित नहीं कर सके।", + "verification-success-message": "यह सत्यापन पूरा हो गया है।", + "verification-cancelled-message": "सत्यापन रद्द कर दिया गया है।", + "verification-info-message": + "हम आपके सत्यापन को संसाधित कर रहे हैं। अब आप यह विंडो बंद कर सकते हैं।", + "verification-pending-message": "आपका सत्यापन लंबित है।", + "verification-error-generic-message": "हम आपके कार्ड का सत्यापन नहीं कर सके।", + "processing-verification-label": "सत्यापन संसाधित हो रहा है", + "street1-label": "पता पंक्ति 1", + "street2-label": "पता पंक्ति 2", + "city-label": "शहर", + "postcode-label": "पिन कोड", + "state-label": "राज्य", + "payments-manager-header": "सहेजी गई भुगतान विधियाँ प्रबंधित करें", + "payments-manager-close-button": "बंद करें", + "no-saved-payment-methods-header": "कोई सहेजी गई भुगतान विधि नहीं", + "no-saved-payment-methods-message": + "अगली बार जब आप कोई भुगतान विधि सहेजेंगे, तो वह यहाँ दिखाई देगी।", + "card-number-label": "कार्ड नंबर", + "expiry-date-label": "समाप्ति तिथि", + "cvc-label": "सुरक्षा कोड", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "यह कार्ड समर्थित नहीं है", + "card-label": "कार्ड", + "delete-payment-method-label": "भुगतान विधि हटाएँ", + "settings-button-label": "सहेजी गई भुगतान विधियाँ प्रबंधित करें", + "loading-label": "लोड हो रहा है", + "processing-payment-label": "भुगतान संसाधित हो रहा है", + "card-form-label": "कार्ड भुगतान फ़ॉर्म", + } +} diff --git a/src/dynamic-checkout/locales/id.ts b/src/dynamic-checkout/locales/id.ts new file mode 100644 index 0000000..e318a25 --- /dev/null +++ b/src/dynamic-checkout/locales/id.ts @@ -0,0 +1,57 @@ +module ProcessOut { + export const id = { + "apm-redirect-message": "Anda akan dialihkan untuk menyelesaikan pembayaran.", + "save-for-future-label": "Simpan untuk pembayaran berikutnya", + "continue-with-apm-button": "Lanjutkan dengan", + "pay-button-text": "Bayar", + "tokenize-payment-button-text": "Simpan kartu", + "card-details-section-title": "Detail kartu", + "cardholder-name-label": "Nama pemegang kartu", + "billing-address-section-title": "Alamat penagihan", + "country-label": "Negara", + "select-country-placeholder": "Pilih negara", + "select-state-placeholder": "Pilih provinsi", + "card-number-error-message": "Nomor kartu tidak valid", + "expiry-date-error-message": "Tanggal kedaluwarsa tidak valid", + "cvc-error-message": "Kode keamanan tidak valid", + "cardholder-name-error-message": "Nama pemegang kartu tidak valid", + "payment-error-message": "Terjadi kesalahan. Silakan coba lagi.", + "payment-cancelled-message": "Pembayaran telah dibatalkan.", + "express-checkout-header": "Pembayaran cepat", + "other-payment-methods-header": "Metode pembayaran lainnya", + "select-payment-method-label": "Pilih metode pembayaran", + "payment-success-message": "Pembayaran ini telah selesai.", + "payment-info-message": + "Kami sedang memproses pembayaran Anda. Anda dapat menutup jendela ini sekarang.", + "payment-pending-message": "Pembayaran Anda sedang menunggu.", + "payment-error-generic-message": "Kami tidak dapat memproses pembayaran Anda.", + "verification-success-message": "Verifikasi ini telah selesai.", + "verification-cancelled-message": "Verifikasi telah dibatalkan.", + "verification-info-message": + "Kami sedang memproses verifikasi Anda. Anda dapat menutup jendela ini sekarang.", + "verification-pending-message": "Verifikasi Anda sedang menunggu.", + "verification-error-generic-message": "Kami tidak dapat memverifikasi kartu Anda.", + "processing-verification-label": "Memproses verifikasi", + "street1-label": "Alamat baris 1", + "street2-label": "Alamat baris 2", + "city-label": "Kota", + "postcode-label": "Kode pos", + "state-label": "Provinsi", + "payments-manager-header": "Kelola metode pembayaran tersimpan", + "payments-manager-close-button": "Tutup", + "no-saved-payment-methods-header": "Tidak ada metode pembayaran tersimpan", + "no-saved-payment-methods-message": + "Saat Anda menyimpan metode pembayaran nanti, metode tersebut akan muncul di sini.", + "card-number-label": "Nomor kartu", + "expiry-date-label": "Tanggal kedaluwarsa", + "cvc-label": "Kode keamanan", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Kartu ini tidak didukung", + "card-label": "Kartu", + "delete-payment-method-label": "Hapus metode pembayaran", + "settings-button-label": "Kelola metode pembayaran tersimpan", + "loading-label": "Memuat", + "processing-payment-label": "Memproses pembayaran", + "card-form-label": "Formulir pembayaran kartu", + } +} diff --git a/src/dynamic-checkout/locales/kn.ts b/src/dynamic-checkout/locales/kn.ts new file mode 100644 index 0000000..80ad137 --- /dev/null +++ b/src/dynamic-checkout/locales/kn.ts @@ -0,0 +1,57 @@ +module ProcessOut { + export const kn = { + "apm-redirect-message": "ಪಾವತಿಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನಿಮ್ಮನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ.", + "save-for-future-label": "ಭವಿಷ್ಯದ ಪಾವತಿಗಳಿಗಾಗಿ ಉಳಿಸಿ", + "continue-with-apm-button": "ಇದರೊಂದಿಗೆ ಮುಂದುವರಿಸಿ:", + "pay-button-text": "ಪಾವತಿಸಿ", + "tokenize-payment-button-text": "ಕಾರ್ಡ್ ಉಳಿಸಿ", + "card-details-section-title": "ಕಾರ್ಡ್ ವಿವರಗಳು", + "cardholder-name-label": "ಕಾರ್ಡ್‌ದಾರರ ಹೆಸರು", + "billing-address-section-title": "ಬಿಲ್ಲಿಂಗ್ ವಿಳಾಸ", + "country-label": "ದೇಶ", + "select-country-placeholder": "ದೇಶವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "select-state-placeholder": "ರಾಜ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "card-number-error-message": "ಕಾರ್ಡ್ ಸಂಖ್ಯೆ ಅಮಾನ್ಯವಾಗಿದೆ", + "expiry-date-error-message": "ಅವಧಿ ಮುಕ್ತಾಯ ದಿನಾಂಕ ಅಮಾನ್ಯವಾಗಿದೆ", + "cvc-error-message": "ಭದ್ರತಾ ಕೋಡ್ ಅಮಾನ್ಯವಾಗಿದೆ", + "cardholder-name-error-message": "ಕಾರ್ಡ್‌ದಾರರ ಹೆಸರು ಅಮಾನ್ಯವಾಗಿದೆ", + "payment-error-message": "ಏನೋ ತಪ್ಪಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.", + "payment-cancelled-message": "ಪಾವತಿಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ.", + "express-checkout-header": "ಎಕ್ಸ್‌ಪ್ರೆಸ್ ಚೆಕ್‌ಔಟ್", + "other-payment-methods-header": "ಇತರ ಪಾವತಿ ವಿಧಾನಗಳು", + "select-payment-method-label": "ಪಾವತಿ ವಿಧಾನವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "payment-success-message": "ಈ ಪಾವತಿ ಪೂರ್ಣಗೊಂಡಿದೆ.", + "payment-info-message": + "ನಿಮ್ಮ ಪಾವತಿಯನ್ನು ನಾವು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತಿದ್ದೇವೆ. ಈಗ ನೀವು ಈ ವಿಂಡೋವನ್ನು ಮುಚ್ಚಬಹುದು.", + "payment-pending-message": "ನಿಮ್ಮ ಪಾವತಿ ಬಾಕಿ ಇದೆ.", + "payment-error-generic-message": "ನಿಮ್ಮ ಪಾವತಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ನಮಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.", + "verification-success-message": "ಈ ಪರಿಶೀಲನೆ ಪೂರ್ಣಗೊಂಡಿದೆ.", + "verification-cancelled-message": "ಪರಿಶೀಲನೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ.", + "verification-info-message": + "ನಿಮ್ಮ ಪರಿಶೀಲನೆಯನ್ನು ನಾವು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುತ್ತಿದ್ದೇವೆ. ಈಗ ನೀವು ಈ ವಿಂಡೋವನ್ನು ಮುಚ್ಚಬಹುದು.", + "verification-pending-message": "ನಿಮ್ಮ ಪರಿಶೀಲನೆ ಬಾಕಿ ಇದೆ.", + "verification-error-generic-message": "ನಿಮ್ಮ ಕಾರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ನಮಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.", + "processing-verification-label": "ಪರಿಶೀಲನೆಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತಿದೆ", + "street1-label": "ವಿಳಾಸ ಸಾಲು 1", + "street2-label": "ವಿಳಾಸ ಸಾಲು 2", + "city-label": "ನಗರ", + "postcode-label": "ಪಿನ್ ಕೋಡ್", + "state-label": "ರಾಜ್ಯ", + "payments-manager-header": "ಉಳಿಸಿದ ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ನಿರ್ವಹಿಸಿ", + "payments-manager-close-button": "ಮುಚ್ಚಿ", + "no-saved-payment-methods-header": "ಉಳಿಸಿದ ಪಾವತಿ ವಿಧಾನಗಳಿಲ್ಲ", + "no-saved-payment-methods-message": + "ಮುಂದಿನ ಬಾರಿ ನೀವು ಪಾವತಿ ವಿಧಾನವನ್ನು ಉಳಿಸಿದಾಗ, ಅದು ಇಲ್ಲಿ ಕಾಣಿಸುತ್ತದೆ.", + "card-number-label": "ಕಾರ್ಡ್ ಸಂಖ್ಯೆ", + "expiry-date-label": "ಅವಧಿ ಮುಕ್ತಾಯ ದಿನಾಂಕ", + "cvc-label": "ಭದ್ರತಾ ಕೋಡ್", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "ಈ ಕಾರ್ಡ್ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ", + "card-label": "ಕಾರ್ಡ್", + "delete-payment-method-label": "ಪಾವತಿ ವಿಧಾನವನ್ನು ಅಳಿಸಿ", + "settings-button-label": "ಉಳಿಸಿದ ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ನಿರ್ವಹಿಸಿ", + "loading-label": "ಲೋಡ್ ಆಗುತ್ತಿದೆ", + "processing-payment-label": "ಪಾವತಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತಿದೆ", + "card-form-label": "ಕಾರ್ಡ್ ಪಾವತಿ ಫಾರ್ಮ್", + } +} diff --git a/src/dynamic-checkout/locales/nl.ts b/src/dynamic-checkout/locales/nl.ts new file mode 100644 index 0000000..a663e08 --- /dev/null +++ b/src/dynamic-checkout/locales/nl.ts @@ -0,0 +1,55 @@ +module ProcessOut { + export const nl = { + "apm-redirect-message": "U wordt doorgestuurd om de betaling af te ronden.", + "save-for-future-label": "Opslaan voor toekomstige betalingen", + "continue-with-apm-button": "Doorgaan met", + "pay-button-text": "Betalen", + "tokenize-payment-button-text": "Kaart opslaan", + "card-details-section-title": "Kaartgegevens", + "cardholder-name-label": "Naam kaarthouder", + "billing-address-section-title": "Factuuradres", + "country-label": "Land", + "select-country-placeholder": "Selecteer land", + "select-state-placeholder": "Selecteer staat", + "card-number-error-message": "Kaartnummer is ongeldig", + "expiry-date-error-message": "Vervaldatum is ongeldig", + "cvc-error-message": "Beveiligingscode is ongeldig", + "cardholder-name-error-message": "Naam kaarthouder is ongeldig", + "payment-error-message": "Er is iets misgegaan. Probeer het opnieuw.", + "payment-cancelled-message": "De betaling is geannuleerd.", + "express-checkout-header": "Snel afrekenen", + "other-payment-methods-header": "Andere betaalmethoden", + "select-payment-method-label": "Selecteer betaalmethode", + "payment-success-message": "Deze betaling is voltooid.", + "payment-info-message": "We verwerken uw betaling. U kunt dit venster nu sluiten.", + "payment-pending-message": "Uw betaling is in behandeling.", + "payment-error-generic-message": "We konden uw betaling niet verwerken.", + "verification-success-message": "Deze verificatie is voltooid.", + "verification-cancelled-message": "De verificatie is geannuleerd.", + "verification-info-message": "We verwerken uw verificatie. U kunt dit venster nu sluiten.", + "verification-pending-message": "Uw verificatie is in behandeling.", + "verification-error-generic-message": "We konden uw kaart niet verifiëren.", + "processing-verification-label": "Verificatie wordt verwerkt", + "street1-label": "Adresregel 1", + "street2-label": "Adresregel 2", + "city-label": "Plaats", + "postcode-label": "Postcode", + "state-label": "Staat", + "payments-manager-header": "Opgeslagen betaalmethoden beheren", + "payments-manager-close-button": "Sluiten", + "no-saved-payment-methods-header": "Geen opgeslagen betaalmethoden", + "no-saved-payment-methods-message": + "De volgende keer dat u een betaalmethode opslaat, verschijnt deze hier.", + "card-number-label": "Kaartnummer", + "expiry-date-label": "Vervaldatum", + "cvc-label": "Beveiligingscode", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Deze kaart wordt niet ondersteund", + "card-label": "Kaart", + "delete-payment-method-label": "Betaalmethode verwijderen", + "settings-button-label": "Opgeslagen betaalmethoden beheren", + "loading-label": "Laden", + "processing-payment-label": "Betaling wordt verwerkt", + "card-form-label": "Kaartbetalingsformulier", + } +} diff --git a/src/dynamic-checkout/locales/ro.ts b/src/dynamic-checkout/locales/ro.ts new file mode 100644 index 0000000..1fed728 --- /dev/null +++ b/src/dynamic-checkout/locales/ro.ts @@ -0,0 +1,57 @@ +module ProcessOut { + export const ro = { + "apm-redirect-message": "Veți fi redirecționat pentru a finaliza plata.", + "save-for-future-label": "Salvează pentru plăți viitoare", + "continue-with-apm-button": "Continuă cu", + "pay-button-text": "Plătește", + "tokenize-payment-button-text": "Salvează metoda de plată", + "card-details-section-title": "Detalii card", + "cardholder-name-label": "Numele titularului cardului", + "billing-address-section-title": "Adresă de facturare", + "country-label": "Țară", + "select-country-placeholder": "Selectați țara", + "select-state-placeholder": "Selectați statul", + "card-number-error-message": "Numărul cardului este invalid", + "expiry-date-error-message": "Data expirării este invalidă", + "cvc-error-message": "Codul de securitate este invalid", + "cardholder-name-error-message": "Numele titularului cardului este invalid", + "payment-error-message": "A apărut o eroare. Vă rugăm să încercați din nou.", + "payment-cancelled-message": "Plata a fost anulată.", + "express-checkout-header": "Plată rapidă", + "other-payment-methods-header": "Alte metode de plată", + "select-payment-method-label": "Selectați metoda de plată", + "payment-success-message": "Plata a fost finalizată.", + "payment-info-message": + "Plata dumneavoastră este în curs de procesare. Puteți închide această fereastră.", + "payment-pending-message": "Plata dumneavoastră este în așteptare.", + "payment-error-generic-message": "Nu am putut procesa plata dumneavoastră.", + "verification-success-message": "Verificarea a fost finalizată.", + "verification-cancelled-message": "Verificarea a fost anulată.", + "verification-info-message": + "Verificarea dumneavoastră este în curs de procesare. Puteți închide această fereastră.", + "verification-pending-message": "Verificarea dumneavoastră este în așteptare.", + "verification-error-generic-message": "Nu am putut verifica cardul dumneavoastră.", + "processing-verification-label": "Se procesează verificarea", + "street1-label": "Adresă, linia 1", + "street2-label": "Adresă, linia 2", + "city-label": "Oraș", + "postcode-label": "Cod poștal", + "state-label": "Stat", + "payments-manager-header": "Gestionați metodele de plată salvate", + "payments-manager-close-button": "Închide", + "no-saved-payment-methods-header": "Nicio metodă de plată salvată", + "no-saved-payment-methods-message": + "Data viitoare când salvați o metodă de plată, aceasta va apărea aici.", + "card-number-label": "Număr card", + "expiry-date-label": "Data expirării", + "cvc-label": "Cod de securitate", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Acest card nu este acceptat", + "card-label": "Card", + "delete-payment-method-label": "Șterge metoda de plată", + "settings-button-label": "Gestionați metodele de plată salvate", + "loading-label": "Se încarcă", + "processing-payment-label": "Se procesează plata", + "card-form-label": "Formular de plată cu cardul", + } +} diff --git a/src/dynamic-checkout/locales/ru.ts b/src/dynamic-checkout/locales/ru.ts new file mode 100644 index 0000000..910fdd3 --- /dev/null +++ b/src/dynamic-checkout/locales/ru.ts @@ -0,0 +1,54 @@ +module ProcessOut { + export const ru = { + "apm-redirect-message": "Вы будете перенаправлены для завершения оплаты.", + "save-for-future-label": "Сохранить для будущих платежей", + "continue-with-apm-button": "Продолжить с", + "pay-button-text": "Оплатить", + "tokenize-payment-button-text": "Сохранить способ оплаты", + "card-details-section-title": "Данные карты", + "cardholder-name-label": "Имя владельца карты", + "billing-address-section-title": "Платёжный адрес", + "country-label": "Страна", + "select-country-placeholder": "Выберите страну", + "select-state-placeholder": "Выберите регион", + "card-number-error-message": "Неверный номер карты", + "expiry-date-error-message": "Неверный срок действия", + "cvc-error-message": "Неверный код безопасности", + "cardholder-name-error-message": "Неверное имя владельца карты", + "payment-error-message": "Что-то пошло не так. Попробуйте ещё раз.", + "payment-cancelled-message": "Платёж отменён.", + "express-checkout-header": "Быстрая оплата", + "other-payment-methods-header": "Другие способы оплаты", + "select-payment-method-label": "Выберите способ оплаты", + "payment-success-message": "Платёж завершён.", + "payment-info-message": "Мы обрабатываем ваш платёж. Вы можете закрыть это окно.", + "payment-pending-message": "Ваш платёж ожидает подтверждения.", + "payment-error-generic-message": "Нам не удалось обработать ваш платёж.", + "verification-success-message": "Проверка завершена.", + "verification-cancelled-message": "Проверка отменена.", + "verification-info-message": "Мы выполняем проверку. Вы можете закрыть это окно.", + "verification-pending-message": "Проверка ожидает подтверждения.", + "verification-error-generic-message": "Нам не удалось проверить вашу карту.", + "processing-verification-label": "Выполняется проверка", + "street1-label": "Адрес, строка 1", + "street2-label": "Адрес, строка 2", + "city-label": "Город", + "postcode-label": "Почтовый индекс", + "state-label": "Регион", + "payments-manager-header": "Управление сохранёнными способами оплаты", + "payments-manager-close-button": "Закрыть", + "no-saved-payment-methods-header": "Нет сохранённых способов оплаты", + "no-saved-payment-methods-message": "Когда вы сохраните способ оплаты, он появится здесь.", + "card-number-label": "Номер карты", + "expiry-date-label": "Срок действия", + "cvc-label": "Код безопасности", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Эта карта не поддерживается", + "card-label": "Карта", + "delete-payment-method-label": "Удалить способ оплаты", + "settings-button-label": "Управление сохранёнными способами оплаты", + "loading-label": "Загрузка", + "processing-payment-label": "Обработка платежа", + "card-form-label": "Форма оплаты картой", + } +} diff --git a/src/dynamic-checkout/locales/sv.ts b/src/dynamic-checkout/locales/sv.ts new file mode 100644 index 0000000..95dbe35 --- /dev/null +++ b/src/dynamic-checkout/locales/sv.ts @@ -0,0 +1,54 @@ +module ProcessOut { + export const sv = { + "apm-redirect-message": "Du kommer att omdirigeras för att slutföra betalningen.", + "save-for-future-label": "Spara för framtida betalningar", + "continue-with-apm-button": "Fortsätt med", + "pay-button-text": "Betala", + "tokenize-payment-button-text": "Spara betalningsmetod", + "card-details-section-title": "Kortuppgifter", + "cardholder-name-label": "Kortinnehavarens namn", + "billing-address-section-title": "Faktureringsadress", + "country-label": "Land", + "select-country-placeholder": "Välj land", + "select-state-placeholder": "Välj delstat", + "card-number-error-message": "Kortnumret är ogiltigt", + "expiry-date-error-message": "Utgångsdatumet är ogiltigt", + "cvc-error-message": "Säkerhetskoden är ogiltig", + "cardholder-name-error-message": "Kortinnehavarens namn är ogiltigt", + "payment-error-message": "Något gick fel. Försök igen.", + "payment-cancelled-message": "Betalningen har avbrutits.", + "express-checkout-header": "Snabbkassa", + "other-payment-methods-header": "Andra betalningsmetoder", + "select-payment-method-label": "Välj betalningsmetod", + "payment-success-message": "Betalningen är slutförd.", + "payment-info-message": "Vi behandlar din betalning. Du kan nu stänga det här fönstret.", + "payment-pending-message": "Din betalning väntar på behandling.", + "payment-error-generic-message": "Vi kunde inte behandla din betalning.", + "verification-success-message": "Verifieringen är slutförd.", + "verification-cancelled-message": "Verifieringen har avbrutits.", + "verification-info-message": "Vi behandlar din verifiering. Du kan nu stänga det här fönstret.", + "verification-pending-message": "Din verifiering väntar på behandling.", + "verification-error-generic-message": "Vi kunde inte verifiera ditt kort.", + "processing-verification-label": "Verifiering pågår", + "street1-label": "Adressrad 1", + "street2-label": "Adressrad 2", + "city-label": "Ort", + "postcode-label": "Postnummer", + "state-label": "Delstat", + "payments-manager-header": "Hantera sparade betalningsmetoder", + "payments-manager-close-button": "Stäng", + "no-saved-payment-methods-header": "Inga sparade betalningsmetoder", + "no-saved-payment-methods-message": "Nästa gång du sparar en betalningsmetod visas den här.", + "card-number-label": "Kortnummer", + "expiry-date-label": "Utgångsdatum", + "cvc-label": "Säkerhetskod", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Det här kortet stöds inte", + "card-label": "Kort", + "delete-payment-method-label": "Ta bort betalningsmetod", + "settings-button-label": "Hantera sparade betalningsmetoder", + "loading-label": "Laddar", + "processing-payment-label": "Betalning pågår", + "card-form-label": "Kortbetalningsformulär", + } +} diff --git a/src/dynamic-checkout/locales/te.ts b/src/dynamic-checkout/locales/te.ts new file mode 100644 index 0000000..3197731 --- /dev/null +++ b/src/dynamic-checkout/locales/te.ts @@ -0,0 +1,57 @@ +module ProcessOut { + export const te = { + "apm-redirect-message": "చెల్లింపును పూర్తి చేయడానికి మీరు దారి మళ్లించబడతారు.", + "save-for-future-label": "భవిష్యత్ చెల్లింపుల కోసం సేవ్ చేయండి", + "continue-with-apm-button": "దీనితో కొనసాగించండి", + "pay-button-text": "చెల్లించండి", + "tokenize-payment-button-text": "చెల్లింపు పద్ధతిని సేవ్ చేయండి", + "card-details-section-title": "కార్డ్ వివరాలు", + "cardholder-name-label": "కార్డ్ హోల్డర్ పేరు", + "billing-address-section-title": "బిల్లింగ్ చిరునామా", + "country-label": "దేశం", + "select-country-placeholder": "దేశాన్ని ఎంచుకోండి", + "select-state-placeholder": "రాష్ట్రాన్ని ఎంచుకోండి", + "card-number-error-message": "కార్డ్ నంబర్ చెల్లదు", + "expiry-date-error-message": "గడువు తేదీ చెల్లదు", + "cvc-error-message": "భద్రతా కోడ్ చెల్లదు", + "cardholder-name-error-message": "కార్డ్ హోల్డర్ పేరు చెల్లదు", + "payment-error-message": "ఏదో తప్పు జరిగింది. దయచేసి మళ్లీ ప్రయత్నించండి.", + "payment-cancelled-message": "చెల్లింపు రద్దు చేయబడింది.", + "express-checkout-header": "ఎక్స్‌ప్రెస్ చెక్అవుట్", + "other-payment-methods-header": "ఇతర చెల్లింపు పద్ధతులు", + "select-payment-method-label": "చెల్లింపు పద్ధతిని ఎంచుకోండి", + "payment-success-message": "ఈ చెల్లింపు పూర్తయింది.", + "payment-info-message": + "మేము మీ చెల్లింపును ప్రాసెస్ చేస్తున్నాము. మీరు ఇప్పుడు ఈ విండోను మూసివేయవచ్చు.", + "payment-pending-message": "మీ చెల్లింపు పెండింగ్‌లో ఉంది.", + "payment-error-generic-message": "మేము మీ చెల్లింపును ప్రాసెస్ చేయలేకపోయాము.", + "verification-success-message": "ఈ ధృవీకరణ పూర్తయింది.", + "verification-cancelled-message": "ధృవీకరణ రద్దు చేయబడింది.", + "verification-info-message": + "మేము మీ ధృవీకరణను ప్రాసెస్ చేస్తున్నాము. మీరు ఇప్పుడు ఈ విండోను మూసివేయవచ్చు.", + "verification-pending-message": "మీ ధృవీకరణ పెండింగ్‌లో ఉంది.", + "verification-error-generic-message": "మేము మీ కార్డ్‌ను ధృవీకరించలేకపోయాము.", + "processing-verification-label": "ధృవీకరణ ప్రాసెస్ అవుతోంది", + "street1-label": "చిరునామా లైన్ 1", + "street2-label": "చిరునామా లైన్ 2", + "city-label": "నగరం", + "postcode-label": "పోస్టల్ కోడ్", + "state-label": "రాష్ట్రం", + "payments-manager-header": "సేవ్ చేసిన చెల్లింపు పద్ధతులను నిర్వహించండి", + "payments-manager-close-button": "మూసివేయండి", + "no-saved-payment-methods-header": "సేవ్ చేసిన చెల్లింపు పద్ధతులు లేవు", + "no-saved-payment-methods-message": + "మీరు తదుపరిసారి చెల్లింపు పద్ధతిని సేవ్ చేసినప్పుడు, అది ఇక్కడ కనిపిస్తుంది.", + "card-number-label": "కార్డ్ నంబర్", + "expiry-date-label": "గడువు తేదీ", + "cvc-label": "భద్రతా కోడ్", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "ఈ కార్డ్‌కు మద్దతు లేదు", + "card-label": "కార్డ్", + "delete-payment-method-label": "చెల్లింపు పద్ధతిని తొలగించండి", + "settings-button-label": "సేవ్ చేసిన చెల్లింపు పద్ధతులను నిర్వహించండి", + "loading-label": "లోడ్ అవుతోంది", + "processing-payment-label": "చెల్లింపు ప్రాసెస్ అవుతోంది", + "card-form-label": "కార్డ్ చెల్లింపు ఫారమ్", + } +} diff --git a/src/dynamic-checkout/locales/th.ts b/src/dynamic-checkout/locales/th.ts new file mode 100644 index 0000000..eb31320 --- /dev/null +++ b/src/dynamic-checkout/locales/th.ts @@ -0,0 +1,55 @@ +module ProcessOut { + export const th = { + "apm-redirect-message": "คุณจะถูกนำไปยังหน้าถัดไปเพื่อดำเนินการชำระเงินให้เสร็จสิ้น", + "save-for-future-label": "บันทึกไว้สำหรับการชำระเงินครั้งถัดไป", + "continue-with-apm-button": "ดำเนินการต่อด้วย", + "pay-button-text": "ชำระเงิน", + "tokenize-payment-button-text": "บันทึกวิธีการชำระเงิน", + "card-details-section-title": "รายละเอียดบัตร", + "cardholder-name-label": "ชื่อผู้ถือบัตร", + "billing-address-section-title": "ที่อยู่สำหรับออกใบแจ้งหนี้", + "country-label": "ประเทศ", + "select-country-placeholder": "เลือกประเทศ", + "select-state-placeholder": "เลือกรัฐ", + "card-number-error-message": "หมายเลขบัตรไม่ถูกต้อง", + "expiry-date-error-message": "วันหมดอายุไม่ถูกต้อง", + "cvc-error-message": "รหัสความปลอดภัยไม่ถูกต้อง", + "cardholder-name-error-message": "ชื่อผู้ถือบัตรไม่ถูกต้อง", + "payment-error-message": "เกิดข้อผิดพลาด โปรดลองอีกครั้ง", + "payment-cancelled-message": "การชำระเงินถูกยกเลิกแล้ว", + "express-checkout-header": "ชำระเงินด่วน", + "other-payment-methods-header": "วิธีการชำระเงินอื่น ๆ", + "select-payment-method-label": "เลือกวิธีการชำระเงิน", + "payment-success-message": "การชำระเงินเสร็จสมบูรณ์แล้ว", + "payment-info-message": "เรากำลังดำเนินการชำระเงินของคุณ คุณสามารถปิดหน้าต่างนี้ได้", + "payment-pending-message": "การชำระเงินของคุณอยู่ระหว่างรอดำเนินการ", + "payment-error-generic-message": "เราไม่สามารถดำเนินการชำระเงินของคุณได้", + "verification-success-message": "การยืนยันเสร็จสมบูรณ์แล้ว", + "verification-cancelled-message": "การยืนยันถูกยกเลิกแล้ว", + "verification-info-message": "เรากำลังดำเนินการยืนยันของคุณ คุณสามารถปิดหน้าต่างนี้ได้", + "verification-pending-message": "การยืนยันของคุณอยู่ระหว่างรอดำเนินการ", + "verification-error-generic-message": "เราไม่สามารถยืนยันบัตรของคุณได้", + "processing-verification-label": "กำลังดำเนินการยืนยัน", + "street1-label": "ที่อยู่บรรทัดที่ 1", + "street2-label": "ที่อยู่บรรทัดที่ 2", + "city-label": "เมือง", + "postcode-label": "รหัสไปรษณีย์", + "state-label": "รัฐ", + "payments-manager-header": "จัดการวิธีการชำระเงินที่บันทึกไว้", + "payments-manager-close-button": "ปิด", + "no-saved-payment-methods-header": "ไม่มีวิธีการชำระเงินที่บันทึกไว้", + "no-saved-payment-methods-message": + "เมื่อคุณบันทึกวิธีการชำระเงินในครั้งถัดไป วิธีการนั้นจะแสดงที่นี่", + "card-number-label": "หมายเลขบัตร", + "expiry-date-label": "วันหมดอายุ", + "cvc-label": "รหัสความปลอดภัย", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "ไม่รองรับบัตรนี้", + "card-label": "บัตร", + "delete-payment-method-label": "ลบวิธีการชำระเงิน", + "settings-button-label": "จัดการวิธีการชำระเงินที่บันทึกไว้", + "loading-label": "กำลังโหลด", + "processing-payment-label": "กำลังดำเนินการชำระเงิน", + "card-form-label": "แบบฟอร์มชำระเงินด้วยบัตร", + } +} diff --git a/src/dynamic-checkout/locales/tr.ts b/src/dynamic-checkout/locales/tr.ts new file mode 100644 index 0000000..b5c9c52 --- /dev/null +++ b/src/dynamic-checkout/locales/tr.ts @@ -0,0 +1,55 @@ +module ProcessOut { + export const tr = { + "apm-redirect-message": "Ödemeyi tamamlamak için yönlendirileceksiniz.", + "save-for-future-label": "Gelecekteki ödemeler için kaydet", + "continue-with-apm-button": "Şununla devam et:", + "pay-button-text": "Öde", + "tokenize-payment-button-text": "Ödeme yöntemini kaydet", + "card-details-section-title": "Kart bilgileri", + "cardholder-name-label": "Kart sahibinin adı", + "billing-address-section-title": "Fatura adresi", + "country-label": "Ülke", + "select-country-placeholder": "Ülke seçin", + "select-state-placeholder": "Eyalet seçin", + "card-number-error-message": "Kart numarası geçersiz", + "expiry-date-error-message": "Son kullanma tarihi geçersiz", + "cvc-error-message": "Güvenlik kodu geçersiz", + "cardholder-name-error-message": "Kart sahibinin adı geçersiz", + "payment-error-message": "Bir sorun oluştu. Lütfen tekrar deneyin.", + "payment-cancelled-message": "Ödeme iptal edildi.", + "express-checkout-header": "Hızlı ödeme", + "other-payment-methods-header": "Diğer ödeme yöntemleri", + "select-payment-method-label": "Ödeme yöntemi seçin", + "payment-success-message": "Bu ödeme tamamlandı.", + "payment-info-message": "Ödemeniz işleniyor. Bu pencereyi şimdi kapatabilirsiniz.", + "payment-pending-message": "Ödemeniz beklemede.", + "payment-error-generic-message": "Ödemenizi işleyemedik.", + "verification-success-message": "Bu doğrulama tamamlandı.", + "verification-cancelled-message": "Doğrulama iptal edildi.", + "verification-info-message": "Doğrulamanız işleniyor. Bu pencereyi şimdi kapatabilirsiniz.", + "verification-pending-message": "Doğrulamanız beklemede.", + "verification-error-generic-message": "Kartınızı doğrulayamadık.", + "processing-verification-label": "Doğrulama işleniyor", + "street1-label": "Adres satırı 1", + "street2-label": "Adres satırı 2", + "city-label": "Şehir", + "postcode-label": "Posta kodu", + "state-label": "Eyalet", + "payments-manager-header": "Kayıtlı ödeme yöntemlerini yönet", + "payments-manager-close-button": "Kapat", + "no-saved-payment-methods-header": "Kayıtlı ödeme yöntemi yok", + "no-saved-payment-methods-message": + "Bir sonraki ödeme yöntemi kaydettiğinizde burada görünecektir.", + "card-number-label": "Kart numarası", + "expiry-date-label": "Son kullanma tarihi", + "cvc-label": "Güvenlik kodu", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Bu kart desteklenmiyor", + "card-label": "Kart", + "delete-payment-method-label": "Ödeme yöntemini sil", + "settings-button-label": "Kayıtlı ödeme yöntemlerini yönet", + "loading-label": "Yükleniyor", + "processing-payment-label": "Ödeme işleniyor", + "card-form-label": "Kartla ödeme formu", + } +} diff --git a/src/dynamic-checkout/locales/uk.ts b/src/dynamic-checkout/locales/uk.ts new file mode 100644 index 0000000..7f08d0d --- /dev/null +++ b/src/dynamic-checkout/locales/uk.ts @@ -0,0 +1,55 @@ +module ProcessOut { + export const uk = { + "apm-redirect-message": "Вас буде перенаправлено для завершення оплати.", + "save-for-future-label": "Зберегти для майбутніх платежів", + "continue-with-apm-button": "Продовжити з", + "pay-button-text": "Сплатити", + "tokenize-payment-button-text": "Зберегти спосіб оплати", + "card-details-section-title": "Дані картки", + "cardholder-name-label": "Ім’я власника картки", + "billing-address-section-title": "Платіжна адреса", + "country-label": "Країна", + "select-country-placeholder": "Виберіть країну", + "select-state-placeholder": "Виберіть область", + "card-number-error-message": "Недійсний номер картки", + "expiry-date-error-message": "Недійсний термін дії", + "cvc-error-message": "Недійсний код безпеки", + "cardholder-name-error-message": "Недійсне ім’я власника картки", + "payment-error-message": "Сталася помилка. Спробуйте ще раз.", + "payment-cancelled-message": "Платіж скасовано.", + "express-checkout-header": "Швидка оплата", + "other-payment-methods-header": "Інші способи оплати", + "select-payment-method-label": "Виберіть спосіб оплати", + "payment-success-message": "Платіж завершено.", + "payment-info-message": "Ми обробляємо ваш платіж. Ви можете закрити це вікно.", + "payment-pending-message": "Ваш платіж очікує на обробку.", + "payment-error-generic-message": "Не вдалося обробити ваш платіж.", + "verification-success-message": "Перевірку завершено.", + "verification-cancelled-message": "Перевірку скасовано.", + "verification-info-message": "Ми обробляємо вашу перевірку. Ви можете закрити це вікно.", + "verification-pending-message": "Ваша перевірка очікує на обробку.", + "verification-error-generic-message": "Не вдалося перевірити вашу картку.", + "processing-verification-label": "Виконується перевірка", + "street1-label": "Адреса, рядок 1", + "street2-label": "Адреса, рядок 2", + "city-label": "Місто", + "postcode-label": "Поштовий індекс", + "state-label": "Область", + "payments-manager-header": "Керування збереженими способами оплати", + "payments-manager-close-button": "Закрити", + "no-saved-payment-methods-header": "Немає збережених способів оплати", + "no-saved-payment-methods-message": + "Наступного разу, коли ви збережете спосіб оплати, він з’явиться тут.", + "card-number-label": "Номер картки", + "expiry-date-label": "Термін дії", + "cvc-label": "Код безпеки", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "Ця картка не підтримується", + "card-label": "Картка", + "delete-payment-method-label": "Видалити спосіб оплати", + "settings-button-label": "Керування збереженими способами оплати", + "loading-label": "Завантаження", + "processing-payment-label": "Обробка платежу", + "card-form-label": "Форма оплати карткою", + } +} diff --git a/src/dynamic-checkout/locales/zh-cn.ts b/src/dynamic-checkout/locales/zh-cn.ts new file mode 100644 index 0000000..5af5fa7 --- /dev/null +++ b/src/dynamic-checkout/locales/zh-cn.ts @@ -0,0 +1,54 @@ +module ProcessOut { + export const zhCN = { + "apm-redirect-message": "您将被重定向以完成付款。", + "save-for-future-label": "保存以便日后付款", + "continue-with-apm-button": "继续使用", + "pay-button-text": "支付", + "tokenize-payment-button-text": "保存支付方式", + "card-details-section-title": "银行卡信息", + "cardholder-name-label": "持卡人姓名", + "billing-address-section-title": "账单地址", + "country-label": "国家/地区", + "select-country-placeholder": "选择国家/地区", + "select-state-placeholder": "选择省/州", + "card-number-error-message": "卡号无效", + "expiry-date-error-message": "有效期无效", + "cvc-error-message": "安全码无效", + "cardholder-name-error-message": "持卡人姓名无效", + "payment-error-message": "出了点问题,请重试。", + "payment-cancelled-message": "付款已取消。", + "express-checkout-header": "快捷结账", + "other-payment-methods-header": "其他支付方式", + "select-payment-method-label": "选择支付方式", + "payment-success-message": "付款已完成。", + "payment-info-message": "我们正在处理您的付款。您现在可以关闭此窗口。", + "payment-pending-message": "您的付款正在等待处理。", + "payment-error-generic-message": "我们无法处理您的付款。", + "verification-success-message": "验证已完成。", + "verification-cancelled-message": "验证已取消。", + "verification-info-message": "我们正在处理您的验证。您现在可以关闭此窗口。", + "verification-pending-message": "您的验证正在等待处理。", + "verification-error-generic-message": "我们无法验证您的银行卡。", + "processing-verification-label": "正在验证", + "street1-label": "地址第 1 行", + "street2-label": "地址第 2 行", + "city-label": "城市", + "postcode-label": "邮政编码", + "state-label": "省/州", + "payments-manager-header": "管理已保存的支付方式", + "payments-manager-close-button": "关闭", + "no-saved-payment-methods-header": "没有已保存的支付方式", + "no-saved-payment-methods-message": "下次保存支付方式时,它将显示在此处。", + "card-number-label": "卡号", + "expiry-date-label": "有效期", + "cvc-label": "信用卡安全码", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "不支持此卡", + "card-label": "银行卡", + "delete-payment-method-label": "删除支付方式", + "settings-button-label": "管理已保存的支付方式", + "loading-label": "加载中", + "processing-payment-label": "正在处理付款", + "card-form-label": "银行卡支付表单", + } +} diff --git a/src/dynamic-checkout/locales/zh-tw.ts b/src/dynamic-checkout/locales/zh-tw.ts new file mode 100644 index 0000000..9076eda --- /dev/null +++ b/src/dynamic-checkout/locales/zh-tw.ts @@ -0,0 +1,54 @@ +module ProcessOut { + export const zhTW = { + "apm-redirect-message": "系統將為您重新導向以完成付款。", + "save-for-future-label": "儲存以供日後付款使用", + "continue-with-apm-button": "繼續使用", + "pay-button-text": "付款", + "tokenize-payment-button-text": "儲存付款方式", + "card-details-section-title": "信用卡資料", + "cardholder-name-label": "持卡人姓名", + "billing-address-section-title": "帳單地址", + "country-label": "國家/地區", + "select-country-placeholder": "選擇國家/地區", + "select-state-placeholder": "選擇州/省", + "card-number-error-message": "卡號無效", + "expiry-date-error-message": "有效期限無效", + "cvc-error-message": "安全碼無效", + "cardholder-name-error-message": "持卡人姓名無效", + "payment-error-message": "發生錯誤,請再試一次。", + "payment-cancelled-message": "付款已取消。", + "express-checkout-header": "快速結帳", + "other-payment-methods-header": "其他付款方式", + "select-payment-method-label": "選擇付款方式", + "payment-success-message": "付款已完成。", + "payment-info-message": "我們正在處理您的付款,您現在可以關閉此視窗。", + "payment-pending-message": "您的付款處理中。", + "payment-error-generic-message": "我們無法處理您的付款。", + "verification-success-message": "驗證已完成。", + "verification-cancelled-message": "驗證已取消。", + "verification-info-message": "我們正在處理您的驗證,您現在可以關閉此視窗。", + "verification-pending-message": "您的驗證處理中。", + "verification-error-generic-message": "我們無法驗證您的卡片。", + "processing-verification-label": "驗證處理中", + "street1-label": "地址第 1 行", + "street2-label": "地址第 2 行", + "city-label": "縣市", + "postcode-label": "郵遞區號", + "state-label": "州/省", + "payments-manager-header": "管理已儲存的付款方式", + "payments-manager-close-button": "關閉", + "no-saved-payment-methods-header": "沒有已儲存的付款方式", + "no-saved-payment-methods-message": "下次儲存付款方式時,將會顯示在這裡。", + "card-number-label": "卡號", + "expiry-date-label": "有效期限", + "cvc-label": "安全碼", + "cvc-placeholder": "CVC/CVV", + "card-not-supported-error-message": "不支援此卡片", + "card-label": "信用卡", + "delete-payment-method-label": "刪除付款方式", + "settings-button-label": "管理已儲存的付款方式", + "loading-label": "載入中", + "processing-payment-label": "付款處理中", + "card-form-label": "信用卡付款表單", + } +} diff --git a/src/dynamic-checkout/references.ts b/src/dynamic-checkout/references.ts index 8283dd5..f8d3b21 100644 --- a/src/dynamic-checkout/references.ts +++ b/src/dynamic-checkout/references.ts @@ -25,19 +25,38 @@ /// /// /// +/// +/// +/// +/// /// +/// /// /// /// /// +/// +/// +/// /// /// +/// /// /// +/// /// /// +/// +/// +/// /// +/// +/// +/// +/// /// +/// +/// /// /// /// diff --git a/src/dynamic-checkout/utils/translations.ts b/src/dynamic-checkout/utils/translations.ts index 869d4ed..7055331 100644 --- a/src/dynamic-checkout/utils/translations.ts +++ b/src/dynamic-checkout/utils/translations.ts @@ -4,37 +4,90 @@ module ProcessOut { export class Translations { static localeTranslationsMap = { ar: ar, + bg: bg, + bn: bn, + cs: cs, + da: da, de: de, + el: el, en: en, es: es, fi: fi, fr: fr, + he: he, + hi: hi, + id: id, it: it, ja: ja, + kn: kn, ko: ko, nb: nb, + nl: nl, pl: pl, pt: pt, + ro: ro, + ru: ru, + sv: sv, ta: ta, + te: te, + th: th, + tr: tr, + uk: uk, vi: vi, + "zh-cn": zhCN, + "zh-tw": zhTW, } - static rtlLocales = ["ar"] + // Legacy or regional tags that should resolve to one of the locales above. + static localeAliases = { + "in": "id", + iw: "he", + zh: "zh-cn", + "zh-hans": "zh-cn", + "zh-sg": "zh-cn", + "zh-hant": "zh-tw", + "zh-hk": "zh-tw", + "zh-mo": "zh-tw", + } + + static rtlLocales = ["ar", "he"] + + static defaultLocale = "en" static getText(key: string, locale: string) { - const language = Translations.getLanguageCode(locale) - const keys = - Translations.localeTranslationsMap[language] || Translations.localeTranslationsMap.en + const keys = Translations.localeTranslationsMap[Translations.resolveLocale(locale)] return keys[key] || "" } static isRtlLocale(locale: string) { - return Translations.rtlLocales.indexOf(Translations.getLanguageCode(locale)) !== -1 + return Translations.rtlLocales.indexOf(Translations.resolveLocale(locale)) !== -1 } - static getLanguageCode(locale: string) { - return locale ? locale.toLowerCase().split(/[-_]/)[0] : "" + /** + * Maps a BCP 47-ish tag (e.g. "zh-TW", "pt_BR", "in") to a key of + * localeTranslationsMap. Tries the full tag first, then drops trailing + * subtags one at a time (RFC 4647 lookup) so e.g. "zh-Hant-TW" matches + * "zh-hant" before the bare "zh", then falls back to the default locale. + */ + static resolveLocale(locale: string) { + if (!locale) { + return Translations.defaultLocale + } + + const normalized = locale.toLowerCase().replace(/_/g, "-") + const parts = normalized.split("-") + + for (let length = parts.length; length > 0; length--) { + const tag = parts.slice(0, length).join("-") + const candidate = Translations.localeAliases[tag] || tag + + if (Translations.localeTranslationsMap[candidate]) { + return candidate + } + } + + return Translations.defaultLocale } } } diff --git a/test/dynamic-checkout/tokenize-only.test.ts b/test/dynamic-checkout/tokenize-only.test.ts index eefe468..cf0aadd 100644 --- a/test/dynamic-checkout/tokenize-only.test.ts +++ b/test/dynamic-checkout/tokenize-only.test.ts @@ -1,6 +1,8 @@ import { beforeEach, describe, expect, it } from "vitest" import { CapturedEvent, LOCALES, loadDynamicCheckout } from "../support/loadNamespace" +const LOCALE_TAGS = LOCALES.map(locale => locale.file) + let ProcessOut: Record let dispatchedEvents: CapturedEvent[] @@ -59,7 +61,7 @@ describe("getStatusMessage", () => { "processing-payment-label", ] - it.each(LOCALES)("keeps the payment wording for a regular checkout in %s", locale => { + it.each(LOCALE_TAGS)("keeps the payment wording for a regular checkout in %s", locale => { const paymentConfig = createPaymentConfig([regularCardMethod], locale) mappedKeys.forEach(key => { @@ -69,7 +71,7 @@ describe("getStatusMessage", () => { }) }) - it.each(LOCALES)("uses translated verification wording in %s", locale => { + it.each(LOCALE_TAGS)("uses translated verification wording in %s", locale => { const paymentConfig = createPaymentConfig([tokenizeOnlyMethod], locale) mappedKeys.forEach(key => { diff --git a/test/dynamic-checkout/translations.test.ts b/test/dynamic-checkout/translations.test.ts new file mode 100644 index 0000000..36dc89a --- /dev/null +++ b/test/dynamic-checkout/translations.test.ts @@ -0,0 +1,107 @@ +import { beforeEach, describe, expect, it } from "vitest" +import { LOCALES, loadDynamicCheckout } from "../support/loadNamespace" + +let ProcessOut: Record + +beforeEach(() => { + ProcessOut = loadDynamicCheckout().namespace +}) + +describe("Dynamic Checkout locale files", () => { + it("registers every locale file in the translations map", () => { + const registered = Object.keys(ProcessOut.Translations.localeTranslationsMap).sort() + const shipped = LOCALES.map(locale => locale.file).sort() + + expect(registered).toEqual(shipped) + }) + + it.each(LOCALES.map(locale => locale.name))("%s has exactly the English key set", name => { + const englishKeys = Object.keys(ProcessOut.en).sort() + const localeKeys = Object.keys(ProcessOut[name]).sort() + + expect(localeKeys).toEqual(englishKeys) + }) + + it.each(LOCALES.map(locale => locale.name))("%s has no empty translations", name => { + const emptyKeys = Object.keys(ProcessOut[name]).filter( + key => typeof ProcessOut[name][key] !== "string" || ProcessOut[name][key].trim() === "", + ) + + expect(emptyKeys).toEqual([]) + }) +}) + +describe("Translations.resolveLocale", () => { + it.each([ + ["en", "en"], + ["EN", "en"], + ["ar-SA", "ar"], + ["pt_BR", "pt"], + ["zh-CN", "zh-cn"], + ["zh-TW", "zh-tw"], + ["zh_TW", "zh-tw"], + ["zh", "zh-cn"], + ["zh-Hans", "zh-cn"], + ["zh-SG", "zh-cn"], + ["zh-Hant", "zh-tw"], + ["zh-HK", "zh-tw"], + ["zh-Hant-TW", "zh-tw"], + ["zh-Hant-HK", "zh-tw"], + ["zh-TW-u-ca-gregory", "zh-tw"], + ["zh-Hans-CN", "zh-cn"], + ["zh-Hans-TW", "zh-cn"], + ["pt-BR-x-foo", "pt"], + ["id", "id"], + ["in", "id"], + ["in-ID", "id"], + ["he", "he"], + ["iw", "he"], + ["he-IL", "he"], + ])("resolves %s to %s", (input, expected) => { + expect(ProcessOut.Translations.resolveLocale(input)).toBe(expected) + }) + + it.each([["xx"], ["xx-YY"], [""], [undefined], [null]])("falls back to English for %s", input => { + expect(ProcessOut.Translations.resolveLocale(input)).toBe("en") + }) +}) + +describe("Translations.getText", () => { + it("returns the Traditional Chinese string for zh-TW", () => { + expect(ProcessOut.Translations.getText("pay-button-text", "zh-TW")).toBe( + ProcessOut.zhTW["pay-button-text"], + ) + }) + + it("returns the Simplified Chinese string for zh-CN", () => { + expect(ProcessOut.Translations.getText("pay-button-text", "zh-CN")).toBe( + ProcessOut.zhCN["pay-button-text"], + ) + }) + + it("returns the Indonesian string for the legacy `in` tag", () => { + expect(ProcessOut.Translations.getText("pay-button-text", "in")).toBe( + ProcessOut.id["pay-button-text"], + ) + }) + + it("falls back to English for an unknown locale", () => { + expect(ProcessOut.Translations.getText("pay-button-text", "xx")).toBe( + ProcessOut.en["pay-button-text"], + ) + }) + + it("returns an empty string for an unknown key", () => { + expect(ProcessOut.Translations.getText("does-not-exist", "en")).toBe("") + }) +}) + +describe("Translations.isRtlLocale", () => { + it.each([["ar"], ["ar-SA"], ["he"], ["he-IL"], ["iw"]])("is true for %s", locale => { + expect(ProcessOut.Translations.isRtlLocale(locale)).toBe(true) + }) + + it.each([["en"], ["fa"], ["ur"], [""], [undefined]])("is false for %s", locale => { + expect(ProcessOut.Translations.isRtlLocale(locale)).toBe(false) + }) +}) diff --git a/test/support/loadNamespace.ts b/test/support/loadNamespace.ts index e06ade4..b94397d 100644 --- a/test/support/loadNamespace.ts +++ b/test/support/loadNamespace.ts @@ -52,21 +52,44 @@ export function loadApmUtils(navigator: FakeNavigator = {}): Record return moduleShim.exports } +/** + * Dynamic Checkout locale files and the `ProcessOut` const each one exports. + * The two differ only where the tag is not a valid identifier (zh-cn → zhCN). + */ export const LOCALES = [ - "ar", - "de", - "en", - "es", - "fi", - "fr", - "it", - "ja", - "ko", - "nb", - "pl", - "pt", - "ta", - "vi", + { file: "ar", name: "ar" }, + { file: "bg", name: "bg" }, + { file: "bn", name: "bn" }, + { file: "cs", name: "cs" }, + { file: "da", name: "da" }, + { file: "de", name: "de" }, + { file: "el", name: "el" }, + { file: "en", name: "en" }, + { file: "es", name: "es" }, + { file: "fi", name: "fi" }, + { file: "fr", name: "fr" }, + { file: "he", name: "he" }, + { file: "hi", name: "hi" }, + { file: "id", name: "id" }, + { file: "it", name: "it" }, + { file: "ja", name: "ja" }, + { file: "kn", name: "kn" }, + { file: "ko", name: "ko" }, + { file: "nb", name: "nb" }, + { file: "nl", name: "nl" }, + { file: "pl", name: "pl" }, + { file: "pt", name: "pt" }, + { file: "ro", name: "ro" }, + { file: "ru", name: "ru" }, + { file: "sv", name: "sv" }, + { file: "ta", name: "ta" }, + { file: "te", name: "te" }, + { file: "th", name: "th" }, + { file: "tr", name: "tr" }, + { file: "uk", name: "uk" }, + { file: "vi", name: "vi" }, + { file: "zh-cn", name: "zhCN" }, + { file: "zh-tw", name: "zhTW" }, ] export interface CapturedEvent { @@ -91,8 +114,8 @@ export interface DynamicCheckoutNamespace { */ export function loadDynamicCheckout(): DynamicCheckoutNamespace { const chunks = [ - ...LOCALES.map(locale => compile(`src/dynamic-checkout/locales/${locale}.ts`)), - `const { ${LOCALES.join(", ")} } = ProcessOut;`, + ...LOCALES.map(locale => compile(`src/dynamic-checkout/locales/${locale.file}.ts`)), + `const { ${LOCALES.map(locale => locale.name).join(", ")} } = ProcessOut;`, compile("src/dynamic-checkout/utils/translations.ts"), `const { Translations } = ProcessOut;`, compile("src/dynamic-checkout/utils/status-messages.ts"),