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"),