diff --git a/.changeset/warm-clouds-occur.md b/.changeset/warm-clouds-occur.md new file mode 100644 index 00000000..5d9003f3 --- /dev/null +++ b/.changeset/warm-clouds-occur.md @@ -0,0 +1,10 @@ +--- +"@godaddy/localizations": patch +"@godaddy/react": patch +--- + +- Add latest translations. +- Add address autocomplete feature flag and US support for address autocomplete. +- Update tracking events. +- Improved address reset logic in the checkout form. +- Fix issues with country data missing regions codes. \ No newline at end of file diff --git a/README.md b/README.md index abeb84a2..09cfd443 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ This monorepo contains the following packages: | Package | Description | NPM | |---------|-------------|-----| | [`eslint-config-godaddy`](/packages/eslint-config-godaddy) | Base ESLint configuration for ES6 JavaScript | [![npm](https://img.shields.io/npm/v/eslint-config-godaddy.svg)](https://www.npmjs.com/package/eslint-config-godaddy) | -| [`eslint-config-godaddy-react`](/packages/eslint-config-godaddy-react) | ESLint configuration for React applications | [![npm](https://img.shields.io/npm/v/eslint-config-godaddy-react.svg)](https://www.npmjs.com/package/eslint-config-godaddy-react) | +| [`eslint-config-godaddy-react`](/packages/eslint-config-godaddy-react) | ESLint configuration for React applications | [![npm](https://img.shields.io/npm/v/eslint-config-godaddy-svg)](https://www.npmjs.com/package/eslint-config-godaddy-react) | | [`eslint-config-godaddy-typescript`](/packages/eslint-config-godaddy-typescript) | ESLint configuration for TypeScript applications | [![npm](https://img.shields.io/npm/v/eslint-config-godaddy-typescript.svg)](https://www.npmjs.com/package/eslint-config-godaddy-typescript) | | [`eslint-config-godaddy-react-typescript`](/packages/eslint-config-godaddy-react-typescript) | ESLint configuration for React + TypeScript applications | [![npm](https://img.shields.io/npm/v/eslint-config-godaddy-react-typescript.svg)](https://www.npmjs.com/package/eslint-config-godaddy-react-typescript) | | [`biome-config-godaddy`](/packages/biome-config-godaddy) | Fast Rust-based alternative to ESLint and Prettier using Biome | [![npm](https://img.shields.io/npm/v/biome-config-godaddy.svg)](https://www.npmjs.com/package/biome-config-godaddy) | diff --git a/packages/localizations/biome.json b/packages/localizations/biome.json new file mode 100644 index 00000000..198eb98d --- /dev/null +++ b/packages/localizations/biome.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.3.2/schema.json", + "extends": ["biome-config-godaddy/biome.json"] +} diff --git a/packages/localizations/package.json b/packages/localizations/package.json index ae2cf4c8..873039fd 100644 --- a/packages/localizations/package.json +++ b/packages/localizations/package.json @@ -1,38 +1,34 @@ { - "name": "@godaddy/localizations", - "version": "1.0.0", - "description": "Internationalization localizations for GoDaddy checkout components", - "type": "module", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "default": "./dist/index.js" - } - }, - "scripts": { - "dev": "tsdown --watch", - "build": "tsdown", - "typecheck": "tsc --noEmit" - }, - "keywords": [ - "godaddy", - "checkout", - "localization", - "i18n", - "internationalization" - ], - "license": "MIT", - "devDependencies": { - "@types/node": "^22.13.1", - "tsdown": "^0.15.6", - "typescript": "~5.7.3" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/" - } + "name": "@godaddy/localizations", + "version": "1.0.0", + "description": "Internationalization localizations for GoDaddy checkout components", + "type": "module", + "types": "./dist/index.d.ts", + "files": ["dist"], + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + } + }, + "scripts": { + "dev": "tsdown --watch", + "build": "tsdown", + "typecheck": "tsc --noEmit", + "lint": "biome check .", + "lint:fix": "biome check --write ." + }, + "keywords": ["godaddy", "checkout", "localization", "i18n", "internationalization"], + "license": "MIT", + "devDependencies": { + "@biomejs/biome": "^2.3.2", + "biome-config-godaddy": "workspace:*", + "@types/node": "^22.13.1", + "tsdown": "^0.15.6", + "typescript": "~5.7.3" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/" + } } diff --git a/packages/localizations/src/deDe.ts b/packages/localizations/src/deDe.ts index 9bb64f30..2bb86528 100644 --- a/packages/localizations/src/deDe.ts +++ b/packages/localizations/src/deDe.ts @@ -1,340 +1,317 @@ export const deDe = { - general: { - optional: "optional", - notes: "Notizen", - quantity: "Menge", - free: "KOSTENLOS", - closed: "Geschlossen", - apply: "Anwenden", - checkoutDisabled: - "Der Checkout ist derzeit deaktiviert. Wir entschuldigen uns für die Unannehmlichkeiten.", - }, - contact: { - title: "Kontakt", - description: "", - email: "E-Mail", - }, - pickup: { - title: "Abholung vor Ort", - description: - "Wir werden uns bemühen, Ihre gewünschte Abholzeit einzuhalten. Die tatsächlichen Abholzeiten können variieren.", - location: "Abholort", - date: "Abholdatum", - time: "Bevorzugte Abholzeit", - selectStore: "Filiale auswählen", - selectDate: "Datum auswählen", - selectTime: "Abholzeit auswählen", - storeHours: "Öffnungszeiten", - seeDetails: "Details anzeigen", - noTimeSlots: - "Keine verfügbaren Zeitfenster für das ausgewählte Datum. Bitte wählen Sie ein anderes Datum.", - hoursDisplayed: "Zeiten werden in Ihrer lokalen Zeitzone angezeigt.", - storeOperatesIn: "Die Filiale arbeitet in der Zeitzone {timezone}.", - asap: "ASAP", - hour: "Stunde", - hours: "Stunden", - minutes: "Minuten", - searchCountry: "Land suchen...", - noCountryFound: "Kein Land gefunden.", - }, - days: { - sunday: "Sonntag", - monday: "Montag", - tuesday: "Dienstag", - wednesday: "Mittwoch", - thursday: "Donnerstag", - friday: "Freitag", - saturday: "Samstag", - }, - delivery: { - title: "Lieferung", - method: "Liefermethode", - shipping: "Versand", - shipToAddress: "An Ihre Adresse versenden", - localPickup: "Abholung vor Ort", - pickupFromStore: "In der Filiale abholen", - }, - tips: { - title: "Trinkgeld hinzufügen", - noTip: "Kein Trinkgeld", - customAmount: "Benutzerdefinierten Betrag", - customTipAmount: "Benutzerdefiniertes Trinkgeld", - placeholder: "0,00 €", - }, - shipping: { - title: "Versand", - description: "Lieferadresse", - method: "Versandart", - noShippingMethodAddress: - "Geben Sie Ihre Adresse ein, um verfügbare Versandmethoden zu sehen.", - noShippingMethods: "Keine Versandmethoden gefunden.", - phone: "Telefonnummer", - country: "Land", - selectCountry: "Land auswählen", - searchCountry: "Land suchen...", - noCountryFound: "Kein Land gefunden", - firstName: "Vorname", - lastName: "Nachname", - address1: "Adresse", - address2: "Wohnung, Suite usw.", - city: "Stadt", - region: "Bundesland/Provinz", - postalCode: "Postleitzahl", - notesPlaceholder: "Notizen oder besondere Anweisungen", - addressSuggestion: "Meinten Sie", - addressSuggestionEnd: "?", - noShippingOriginAddress: "Keine Versandursprungsadresse angegeben.", - }, - billing: { - title: "Abrechnung", - description: "Abrechnungsbeschreibung", - }, - payment: { - title: "Zahlung", - description: "Alle Zahlungen sind sicher und verschlüsselt.", - billingAddress: { - title: "Rechnungsadresse", - description: "Geben Sie Ihre Rechnungsadresse ein.", - useShippingAddress: "Lieferadresse als Rechnungsadresse verwenden", - }, - methods: { - creditCard: "Kredit- oder Debitkarte", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Offline-Zahlungen", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Keine Zahlungsmethoden verfügbar", - cardNumber: "Kartennummer", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Ablaufdatum (MM / JJ)", - securityCode: "Sicherheitscode", - cvvPlaceholder: "CVV", - nameOnCard: "Name auf Karte", - payNow: "Jetzt bezahlen", - standardShipping: "Standardversand", - cardDetails: "Kartendetails", - payWithApplePay: "Mit Apple Pay bezahlen", - expirationDatePlaceholder: "MM / JJ", - failedToInitializePayment: "Zahlung konnte nicht initialisiert werden.", - orderTotal: "Bestellsumme", - subtotal: "Zwischensumme", - tax: "Steuer", - shipping: "Versand", - discount: "Gutschein", - processingPayment: "Zahlung wird verarbeitet...", - completingOrder: "Bestellung wird abgeschlossen...", - freePayment: "Schließen Sie Ihre kostenlose Bestellung ab", - }, - phone: { - placeholder: "(030) 555-1234", - searchCountry: "Land suchen...", - noCountryFound: "Kein Land gefunden.", - }, - discounts: { - placeholder: "Gutscheincode", - enterCode: "Gutscheincode eingeben", - apply: "Anwenden", - alreadyApplied: "Dieser Gutscheincode wurde bereits angewendet", - failedToApply: "Gutscheincode konnte nicht angewendet werden", - enterCodeValidation: "Bitte geben Sie einen Gutscheincode ein", - }, - totals: { - subtotal: "Zwischensumme", - discount: "Rabatt", - shipping: "Versand", - tip: "Trinkgeld", - estimatedTaxes: "Geschätzte Steuern", - totalDue: "Gesamtbetrag", - orderSummary: "Bestellübersicht", - itemCount: "Artikel", - noItems: "Keine Artikel", - }, - lineItems: { - note: "Hinweis:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Adresse", - suggestions: "Vorschläge", - }, - form: { - useFormFieldError: - "useFormField sollte innerhalb von verwendet werden", - }, - pagination: { - ariaLabel: "Seitennummerierung", - previousPageAriaLabel: "Zur vorherigen Seite gehen", - previous: "Zurück", - nextPageAriaLabel: "Zur nächsten Seite gehen", - next: "Weiter", - morePages: "Weitere Seiten", - }, - sidebar: { - useSidebarError: - "useSidebar muss innerhalb eines SidebarProvider verwendet werden.", - toggleSidebar: "Seitenleiste umschalten", - }, - accessibility: { - payWithApplePay: "Mit Apple Pay bezahlen", - applePayLogo: "Apple Pay Logo", - }, - }, - errors: { - failedToGetAccessToken: "Zugangstoken konnte nicht abgerufen werden", - invalidEnvironment: "Ungültige Umgebung", - noPublicAccessToken: "Kein öffentlicher Zugangstoken bereitgestellt", - noSessionToken: "Kein Sitzungstoken oder ID bereitgestellt", - errorCreatingSession: "Fehler beim Erstellen der Checkout-Sitzung:", - orderIdRequired: "Bestellnummer ist erforderlich", - errorTrackingEvent: "Fehler beim Verfolgen des Events", - errorInTrackingSubscriber: "Fehler im Tracking-Abonnenten", - useTrackingProviderError: - "useTracking muss innerhalb eines TrackingProvider verwendet werden", - usePoyntCollectProviderError: - "usePoyntCollect muss innerhalb eines PoyntCollectProvider verwendet werden", - useSquareProviderError: - "useSquare muss innerhalb eines SquareProvider verwendet werden", - errorProcessingPayment: "Fehler bei der Zahlungsverarbeitung", - stripeConfigMissing: - "Stripe-Konfiguration fehlt. Bitte überprüfen Sie Ihre Einstellungen.", - paymentSuccessful: "Zahlung erfolgreich", - paymentFailed: "Zahlung fehlgeschlagen", - paypalConfigMissing: - "PayPal-Konfiguration fehlt. Bitte überprüfen Sie Ihre Einstellungen.", - stripeNotReady: "Stripe nicht bereit", - cardElementNotFound: "CardElement nicht gefunden", - errorProcessingCardPayment: - "Fehler bei der Verarbeitung der Kartenzahlung.", - errorProcessingExpressPayment: - "Fehler bei der Verarbeitung der Express-Zahlung.", - failedToInitializePayment: "Zahlung konnte nicht initialisiert werden.", - invalidPhoneNumber: "Ungültige Telefonnummer", - }, - validation: { - phoneRequired: "Telefonnummer ist erforderlich", - emailRequired: "E-Mail eingeben", - emailInvalid: "Gültige E-Mail eingeben", - phoneTooLong: "Telefonnummer zu lang", - invalidShippingAddress: "Ungültige Lieferadresse", - invalidBillingAddress: "Ungültige Rechnungsadresse", - selectPaymentMethod: "Zahlungsmethode auswählen", - enterValidBillingPhone: "Gültige Rechnungstelefonnummer eingeben", - enterValidShippingPhone: "Gültige Liefertelefonnummer eingeben", - enterFirstName: "Vorname eingeben", - enterLastName: "Nachname eingeben", - enterAddress: "Adresse eingeben", - enterCity: "Stadt eingeben", - enterZipCode: "Postleitzahl eingeben", - enterZipPostalCode: "PLZ / Postleitzahl eingeben", - selectState: "Bundesland/Provinz auswählen", - selectCountry: "Land auswählen", - enterCountry: "Land eingeben", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Serverfehler", - SESSION_NOT_FOUND: "Sitzung nicht gefunden", - CHECKOUT_SESSION_RETRIEVAL_FAILED: - "Abrufen der Checkout-Sitzung fehlgeschlagen", - CHECKOUT_SESSION_NOT_FOUND: "Checkout-Sitzung nicht gefunden", - CHECKOUT_SESSION_FETCH_ERROR: - "Allgemeiner Abruffehler der Checkout-Sitzung", - DRAFT_ORDER_NOT_FOUND: "Entwurfsbestellung nicht gefunden", - CHECKOUT_SESSION_CREATION_FAILED: - "Erstellen der Checkout-Sitzung fehlgeschlagen", - CREATED_SESSION_DATA_NOT_FOUND: - "Daten der erstellten Sitzung nicht gefunden", - CHECKOUT_SESSION_CREATION_ERROR: - "Allgemeiner Erstellungsfehler der Checkout-Sitzung", - CHECKOUT_SESSION_UPDATE_FAILED: - "Aktualisierung der Checkout-Sitzung fehlgeschlagen", - UPDATED_SESSION_NOT_FOUND: "Aktualisierte Sitzung nicht gefunden", - CHECKOUT_SESSION_UPDATE_ERROR: - "Allgemeiner Aktualisierungsfehler der Checkout-Sitzung", - ORDER_API_NOT_FOUND: "Bestellungs-API-Datenquelle nicht gefunden", - DRAFT_ORDER_RETRIEVAL_FAILED: - "Abrufen der Entwurfsbestellung fehlgeschlagen", - DATA_SOURCES_NOT_FOUND: "Datenquellen nicht gefunden", - TRANSACTION_API_NOT_FOUND: "Transaktions-API-Datenquelle nicht gefunden", - TRANSACTION_PROCESSING_FAILED: - "Verarbeitung der Transaktion fehlgeschlagen", - TRANSACTION_CREATION_FAILED: - "Finden oder Erstellen der Transaktion fehlgeschlagen", - ORDER_OPENING_FAILED: "Öffnen der Bestellung fehlgeschlagen", - INVALID_FULFILLMENT_LOCATION: "Ungültiger Erfüllungsort", - NO_VALID_PICKUP_LOCATION: "Kein gültiger Abholort verfügbar", - DRAFT_ORDER_FETCH_FAILED: "Abrufen der Entwurfsbestellung fehlgeschlagen", - LINE_ITEMS_FETCH_FAILED: "Abrufen der Artikel fehlgeschlagen", - CURRENT_ORDER_FETCH_FAILED: - "Abrufen der aktuellen Entwurfsbestellung fehlgeschlagen", - DRAFT_ORDER_UPDATE_FAILED: - "Aktualisierung der Entwurfsbestellung fehlgeschlagen", - DISCOUNT_APPLICATION_FAILED: "Anwenden des Gutscheins fehlgeschlagen", - CONTEXT_UNAVAILABLE: "Sitzung oder Datenquellen nicht verfügbar", - SHIPPING_LINES_UPDATE_FAILED: - "Aktualisierung der Versandzeilen fehlgeschlagen", - ORDER_TOTALS_UPDATE_FAILED: - "Aktualisierung der Bestellsummen fehlgeschlagen", - SHIPPING_METHOD_APPLICATION_FAILED: - "Anwenden der Versandmethode fehlgeschlagen", - SKU_FETCH_FAILED: "Abrufen der SKUs fehlgeschlagen", - SHIPPING_RATES_CALCULATION_FAILED: - "Berechnung der Versandkosten fehlgeschlagen", - SHIPPING_METHOD_NOT_FOUND: "Versandmethode nicht gefunden", - SHIPPING_METHOD_REMOVAL_FAILED: - "Entfernen der Versandmethode fehlgeschlagen", - SHIPPING_ADDRESS_REQUIRED: "Lieferadresse erforderlich", - INVENTORY_VALIDATION_ERROR: "Lagervalidierungsfehler", - INSUFFICIENT_INVENTORY: "Unzureichender Lagerbestand", - INVALID_ORDER_STATUS: "Ungültiger Bestellstatus", - TRANSACTION_CREATION_ERROR: "Transaktionserstellungsfehler", - TRANSACTION_PROCESSING_ERROR: "Transaktionsverarbeitungsfehler", - UNKNOWN_ERROR: "Unbekannter Fehler", - FULFILLMENT_CREATION_ERROR: "Erfüllungserstellungsfehler", - TAX_CALCULATION_ERROR: "Steuerberechnungsfehler", - ADDRESS_VERIFICATION_ERROR: "Adressverifizierungsfehler", - ADDRESS_MATCHES_ERROR: "Adressenabgleichfehler", - SHIPPING_CONFLICT_ERROR: "Versandkonfliktfehler", - SHIPPING_ERROR: "Allgemeiner Versandfehler", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Preisanpassungsberechnungsfehler", - ORDER_FETCH_ERROR: "Bestellabruffehler", - DRAFT_ORDER_UPDATE_ERROR: "Entwurfsbestellungsaktualisierungsfehler", - DISCOUNT_APPLICATION_ERROR: "Gutscheinanwendungsfehler", - DRAFT_ORDER_OPEN_ERROR: "Entwurfsbestellungsöffnungsfehler", - ORDER_UPDATE_ERROR: "Bestellaktualisierungsfehler", - CATALOG_FETCH_ERROR: "Katalogabruffehler", - STORE_ID_NOT_FOUND: "Shop-ID nicht gefunden", - ORDER_NOT_DRAFT: "Bestellung ist nicht im Entwurfsstatus", - NO_LINE_ITEMS: "Keine Artikel gefunden", - BAD_USER_INPUT: "Ungültige Benutzereingabe", - MISSING_SHIPPING_ADDRESS: "Lieferadresse ist erforderlich", - MISSING_REQUIRED_FIELD: "Pflichtfeld fehlt", - CATALOG_API_ERROR: "Katalogservice-Fehler", - TAX_SERVICE_UNAVAILABLE: "Steuerservice ist nicht verfügbar", - SHIPPING_SERVICE_UNAVAILABLE: "Versandservice ist nicht verfügbar", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Preisanpassungsservice ist nicht verfügbar", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Berechnung der Preisanpassungen fehlgeschlagen", - SERVICE_UNAVAILABLE: "Service ist vorübergehend nicht verfügbar", - RATE_LIMITED: "Zu viele Anfragen, bitte versuchen Sie es später erneut", - TIMEOUT: "Zeitüberschreitung der Anfrage", - INTERNAL_ERROR: "Interner Serverfehler", - SHIPPING_POSTAL_CODE_REQUIRED: "Postleitzahl für Versand ist erforderlich", - SHIPPING_COUNTRY_CODE_REQUIRED: "Ländercode für Versand ist erforderlich", - SHIPPING_METHOD_REQUIRED: "Versandmethode ist erforderlich", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Verifizierung der Lieferadresse fehlgeschlagen", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Verifizierung der Rechnungsadresse fehlgeschlagen", - }, + general: { + optional: 'optional', + notes: 'Notizen', + quantity: 'Menge', + free: 'KOSTENLOS', + closed: 'Geschlossen', + apply: 'Anwenden', + checkoutDisabled: 'Der Checkout ist derzeit deaktiviert. Wir entschuldigen uns für die Unannehmlichkeiten.', + }, + contact: { + title: 'Kontakt', + description: '', + email: 'E-Mail', + }, + pickup: { + title: 'Abholung vor Ort', + description: 'Wir werden uns bemühen, Ihre gewünschte Abholzeit einzuhalten. Die tatsächlichen Abholzeiten können variieren.', + location: 'Abholort', + date: 'Abholdatum', + time: 'Bevorzugte Abholzeit', + selectStore: 'Filiale auswählen', + selectDate: 'Datum auswählen', + selectTime: 'Abholzeit auswählen', + storeHours: 'Öffnungszeiten', + seeDetails: 'Details anzeigen', + noTimeSlots: 'Keine verfügbaren Zeitfenster für das ausgewählte Datum. Bitte wählen Sie ein anderes Datum.', + hoursDisplayed: 'Zeiten werden in Ihrer lokalen Zeitzone angezeigt.', + storeOperatesIn: 'Die Filiale arbeitet in der Zeitzone {timezone}.', + asap: 'ASAP', + hour: 'Stunde', + hours: 'Stunden', + minutes: 'Minuten', + searchCountry: 'Land suchen...', + noCountryFound: 'Kein Land gefunden.', + }, + days: { + sunday: 'Sonntag', + monday: 'Montag', + tuesday: 'Dienstag', + wednesday: 'Mittwoch', + thursday: 'Donnerstag', + friday: 'Freitag', + saturday: 'Samstag', + }, + delivery: { + title: 'Lieferung', + method: 'Liefermethode', + shipping: 'Versand', + shipToAddress: 'An Ihre Adresse versenden', + localPickup: 'Abholung vor Ort', + pickupFromStore: 'In der Filiale abholen', + }, + tips: { + title: 'Trinkgeld hinzufügen', + noTip: 'Kein Trinkgeld', + customAmount: 'Benutzerdefinierten Betrag', + customTipAmount: 'Benutzerdefiniertes Trinkgeld', + placeholder: '0,00 €', + }, + shipping: { + title: 'Versand', + description: 'Lieferadresse', + method: 'Versandart', + noShippingMethodAddress: 'Geben Sie Ihre Adresse ein, um verfügbare Versandmethoden zu sehen.', + noShippingMethods: 'Keine Versandmethoden gefunden.', + phone: 'Telefonnummer', + country: 'Land', + selectCountry: 'Land auswählen', + searchCountry: 'Land suchen...', + noCountryFound: 'Kein Land gefunden', + firstName: 'Vorname', + lastName: 'Nachname', + address1: 'Adresse', + address2: 'Wohnung, Suite usw.', + city: 'Stadt', + region: 'Bundesland/Provinz', + postalCode: 'Postleitzahl', + notesPlaceholder: 'Notizen oder besondere Anweisungen', + addressSuggestion: 'Meinten Sie', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'Keine Versandursprungsadresse angegeben.', + }, + billing: { + title: 'Abrechnung', + description: 'Abrechnungsbeschreibung', + }, + payment: { + title: 'Zahlung', + description: 'Alle Zahlungen sind sicher und verschlüsselt.', + billingAddress: { + title: 'Rechnungsadresse', + description: 'Geben Sie Ihre Rechnungsadresse ein.', + useShippingAddress: 'Lieferadresse als Rechnungsadresse verwenden', + }, + methods: { + creditCard: 'Kredit- oder Debitkarte', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Offline-Zahlungen', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Keine Zahlungsmethoden verfügbar', + cardNumber: 'Kartennummer', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Ablaufdatum (MM / JJ)', + securityCode: 'Sicherheitscode', + cvvPlaceholder: 'CVV', + nameOnCard: 'Name auf Karte', + payNow: 'Jetzt bezahlen', + standardShipping: 'Standardversand', + cardDetails: 'Kartendetails', + payWithApplePay: 'Mit Apple Pay bezahlen', + expirationDatePlaceholder: 'MM / JJ', + failedToInitializePayment: 'Zahlung konnte nicht initialisiert werden.', + orderTotal: 'Bestellsumme', + subtotal: 'Zwischensumme', + tax: 'Steuer', + shipping: 'Versand', + discount: 'Gutschein', + processingPayment: 'Zahlung wird verarbeitet...', + completingOrder: 'Bestellung wird abgeschlossen...', + completeOrder: 'Bestellung abschließen', + freePayment: 'Schließen Sie Ihre kostenlose Bestellung ab', + }, + phone: { + placeholder: '(030) 555-1234', + searchCountry: 'Land suchen...', + noCountryFound: 'Kein Land gefunden.', + }, + discounts: { + placeholder: 'Gutscheincode', + enterCode: 'Gutscheincode eingeben', + apply: 'Anwenden', + alreadyApplied: 'Dieser Gutscheincode wurde bereits angewendet', + failedToApply: 'Gutscheincode konnte nicht angewendet werden', + enterCodeValidation: 'Bitte geben Sie einen Gutscheincode ein', + }, + totals: { + subtotal: 'Zwischensumme', + discount: 'Rabatt', + shipping: 'Versand', + tip: 'Trinkgeld', + estimatedTaxes: 'Geschätzte Steuern', + totalDue: 'Gesamtbetrag', + orderSummary: 'Bestellübersicht', + itemCount: 'Artikel', + noItems: 'Keine Artikel', + }, + lineItems: { + note: 'Hinweis:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Adresse', + suggestions: 'Vorschläge', + }, + form: { + useFormFieldError: 'useFormField sollte innerhalb von verwendet werden', + }, + pagination: { + ariaLabel: 'Seitennummerierung', + previousPageAriaLabel: 'Zur vorherigen Seite gehen', + previous: 'Zurück', + nextPageAriaLabel: 'Zur nächsten Seite gehen', + next: 'Weiter', + morePages: 'Weitere Seiten', + }, + sidebar: { + useSidebarError: 'useSidebar muss innerhalb eines SidebarProvider verwendet werden.', + toggleSidebar: 'Seitenleiste umschalten', + }, + accessibility: { + payWithApplePay: 'Mit Apple Pay bezahlen', + applePayLogo: 'Apple Pay Logo', + close: 'Schließen', + additionalTipOptions: 'Zusätzliche Trinkgeldoptionen', + breadcrumb: 'Brotkrümelnavigation', + more: 'Mehr', + previousSlide: 'Vorherige Folie', + nextSlide: 'Nächste Folie', + }, + }, + errors: { + failedToGetAccessToken: 'Zugangstoken konnte nicht abgerufen werden', + invalidEnvironment: 'Ungültige Umgebung', + noPublicAccessToken: 'Kein öffentlicher Zugangstoken bereitgestellt', + noSessionToken: 'Kein Sitzungstoken oder ID bereitgestellt', + errorCreatingSession: 'Fehler beim Erstellen der Checkout-Sitzung:', + orderIdRequired: 'Bestellnummer ist erforderlich', + errorTrackingEvent: 'Fehler beim Verfolgen des Events', + errorInTrackingSubscriber: 'Fehler im Tracking-Abonnenten', + useTrackingProviderError: 'useTracking muss innerhalb eines TrackingProvider verwendet werden', + usePoyntCollectProviderError: 'usePoyntCollect muss innerhalb eines PoyntCollectProvider verwendet werden', + useSquareProviderError: 'useSquare muss innerhalb eines SquareProvider verwendet werden', + errorProcessingPayment: 'Fehler bei der Zahlungsverarbeitung', + stripeConfigMissing: 'Stripe-Konfiguration fehlt. Bitte überprüfen Sie Ihre Einstellungen.', + paymentSuccessful: 'Zahlung erfolgreich', + paymentFailed: 'Zahlung fehlgeschlagen', + paypalConfigMissing: 'PayPal-Konfiguration fehlt. Bitte überprüfen Sie Ihre Einstellungen.', + stripeNotReady: 'Stripe nicht bereit', + cardElementNotFound: 'CardElement nicht gefunden', + errorProcessingCardPayment: 'Fehler bei der Verarbeitung der Kartenzahlung.', + errorProcessingExpressPayment: 'Fehler bei der Verarbeitung der Express-Zahlung.', + failedToInitializePayment: 'Zahlung konnte nicht initialisiert werden.', + invalidPhoneNumber: 'Ungültige Telefonnummer', + }, + validation: { + phoneRequired: 'Telefonnummer ist erforderlich', + emailRequired: 'E-Mail eingeben', + emailInvalid: 'Gültige E-Mail eingeben', + phoneTooLong: 'Telefonnummer zu lang', + invalidShippingAddress: 'Ungültige Lieferadresse', + invalidBillingAddress: 'Ungültige Rechnungsadresse', + selectPaymentMethod: 'Zahlungsmethode auswählen', + enterValidBillingPhone: 'Gültige Rechnungstelefonnummer eingeben', + enterValidShippingPhone: 'Gültige Liefertelefonnummer eingeben', + enterFirstName: 'Vorname eingeben', + enterLastName: 'Nachname eingeben', + enterAddress: 'Adresse eingeben', + enterCity: 'Stadt eingeben', + enterZipCode: 'Postleitzahl eingeben', + enterZipPostalCode: 'PLZ / Postleitzahl eingeben', + selectState: 'Bundesland/Provinz auswählen', + selectCountry: 'Land auswählen', + enterCountry: 'Land eingeben', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Serverfehler', + SESSION_NOT_FOUND: 'Sitzung nicht gefunden', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Abrufen der Checkout-Sitzung fehlgeschlagen', + CHECKOUT_SESSION_NOT_FOUND: 'Checkout-Sitzung nicht gefunden', + CHECKOUT_SESSION_FETCH_ERROR: 'Allgemeiner Abruffehler der Checkout-Sitzung', + DRAFT_ORDER_NOT_FOUND: 'Bestellung nicht gefunden', + CHECKOUT_SESSION_CREATION_FAILED: 'Erstellen der Checkout-Sitzung fehlgeschlagen', + CREATED_SESSION_DATA_NOT_FOUND: 'Daten der erstellten Sitzung nicht gefunden', + CHECKOUT_SESSION_CREATION_ERROR: 'Allgemeiner Erstellungsfehler der Checkout-Sitzung', + CHECKOUT_SESSION_UPDATE_FAILED: 'Aktualisierung der Checkout-Sitzung fehlgeschlagen', + UPDATED_SESSION_NOT_FOUND: 'Aktualisierte Sitzung nicht gefunden', + CHECKOUT_SESSION_UPDATE_ERROR: 'Allgemeiner Aktualisierungsfehler der Checkout-Sitzung', + ORDER_API_NOT_FOUND: 'Bestellungs-API-Datenquelle nicht gefunden', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Abrufen der Bestellung fehlgeschlagen', + DATA_SOURCES_NOT_FOUND: 'Datenquellen nicht gefunden', + TRANSACTION_API_NOT_FOUND: 'Transaktions-API-Datenquelle nicht gefunden', + TRANSACTION_PROCESSING_FAILED: 'Verarbeitung der Transaktion fehlgeschlagen', + TRANSACTION_CREATION_FAILED: 'Finden oder Erstellen der Transaktion fehlgeschlagen', + ORDER_OPENING_FAILED: 'Öffnen der Bestellung fehlgeschlagen', + INVALID_FULFILLMENT_LOCATION: 'Ungültiger Erfüllungsort', + NO_VALID_PICKUP_LOCATION: 'Kein gültiger Abholort verfügbar', + DRAFT_ORDER_FETCH_FAILED: 'Abrufen der Bestellung fehlgeschlagen', + LINE_ITEMS_FETCH_FAILED: 'Abrufen der Artikel fehlgeschlagen', + CURRENT_ORDER_FETCH_FAILED: 'Abrufen der aktuellen Bestellung fehlgeschlagen', + DRAFT_ORDER_UPDATE_FAILED: 'Aktualisierung der Bestellung fehlgeschlagen', + DISCOUNT_APPLICATION_FAILED: 'Anwenden des Gutscheins fehlgeschlagen', + CONTEXT_UNAVAILABLE: 'Sitzung oder Datenquellen nicht verfügbar', + SHIPPING_LINES_UPDATE_FAILED: 'Aktualisierung der Versandzeilen fehlgeschlagen', + ORDER_TOTALS_UPDATE_FAILED: 'Aktualisierung der Bestellsummen fehlgeschlagen', + ORDER_TOTAL_CALCULATION_FAILED: 'Berechnung der Bestellsummen fehlgeschlagen', + SHIPPING_METHOD_APPLICATION_FAILED: 'Anwenden der Versandmethode fehlgeschlagen', + SKU_FETCH_FAILED: 'Abrufen der SKUs fehlgeschlagen', + SHIPPING_RATES_CALCULATION_FAILED: 'Berechnung der Versandkosten fehlgeschlagen', + SHIPPING_METHOD_NOT_FOUND: 'Versandmethode nicht gefunden', + SHIPPING_METHOD_REMOVAL_FAILED: 'Entfernen der Versandmethode fehlgeschlagen', + SHIPPING_ADDRESS_REQUIRED: 'Lieferadresse erforderlich', + INVENTORY_VALIDATION_ERROR: 'Lagervalidierungsfehler', + INSUFFICIENT_INVENTORY: 'Unzureichender Lagerbestand', + INVALID_ORDER_STATUS: 'Ungültiger Bestellstatus', + TRANSACTION_CREATION_ERROR: 'Transaktionserstellungsfehler', + TRANSACTION_PROCESSING_ERROR: 'Transaktionsverarbeitungsfehler', + UNKNOWN_ERROR: 'Unbekannter Fehler', + FULFILLMENT_CREATION_ERROR: 'Erfüllungserstellungsfehler', + TAX_CALCULATION_ERROR: 'Steuerberechnungsfehler', + ADDRESS_VERIFICATION_ERROR: 'Adressverifizierungsfehler', + ADDRESS_MATCHES_ERROR: 'Adressenabgleichfehler', + SHIPPING_CONFLICT_ERROR: 'Versandkonfliktfehler', + SHIPPING_ERROR: 'Allgemeiner Versandfehler', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Preisanpassungsberechnungsfehler', + ORDER_FETCH_ERROR: 'Bestellabruffehler', + DRAFT_ORDER_UPDATE_ERROR: 'Bestellungsaktualisierungsfehler', + DISCOUNT_APPLICATION_ERROR: 'Gutscheinanwendungsfehler', + DRAFT_ORDER_OPEN_ERROR: 'Bestellungsöffnungsfehler', + ORDER_UPDATE_ERROR: 'Bestellaktualisierungsfehler', + CATALOG_FETCH_ERROR: 'Katalogabruffehler', + STORE_ID_NOT_FOUND: 'Shop-ID nicht gefunden', + ORDER_NOT_DRAFT: 'Bestellung ist nicht im gültigen Status', + NO_LINE_ITEMS: 'Keine Artikel gefunden', + BAD_USER_INPUT: 'Ungültige Benutzereingabe', + MISSING_SHIPPING_ADDRESS: 'Lieferadresse ist erforderlich', + MISSING_REQUIRED_FIELD: 'Pflichtfeld fehlt', + CATALOG_API_ERROR: 'Katalogservice-Fehler', + TAX_SERVICE_UNAVAILABLE: 'Steuerservice ist nicht verfügbar', + SHIPPING_SERVICE_UNAVAILABLE: 'Versandservice ist nicht verfügbar', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Preisanpassungsservice ist nicht verfügbar', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Berechnung der Preisanpassungen fehlgeschlagen', + SERVICE_UNAVAILABLE: 'Service ist vorübergehend nicht verfügbar', + RATE_LIMITED: 'Zu viele Anfragen, bitte versuchen Sie es später erneut', + TIMEOUT: 'Zeitüberschreitung der Anfrage', + INTERNAL_ERROR: 'Interner Serverfehler', + SHIPPING_POSTAL_CODE_REQUIRED: 'Postleitzahl für Versand ist erforderlich', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Ländercode für Versand ist erforderlich', + SHIPPING_METHOD_REQUIRED: 'Versandmethode ist erforderlich', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Verifizierung der Lieferadresse fehlgeschlagen', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Verifizierung der Rechnungsadresse fehlgeschlagen', + MISSING_SHIPPING_INFO: 'Lieferadresse oder -methode konnte nicht angewendet werden', + DEPENDENCY_ERROR: + 'Wir können Ihre Bestellung derzeit nicht bearbeiten. Bitte warten Sie einen Moment und versuchen Sie es erneut', + }, }; diff --git a/packages/localizations/src/enIe.ts b/packages/localizations/src/enIe.ts index 60e4ee45..07dd073f 100644 --- a/packages/localizations/src/enIe.ts +++ b/packages/localizations/src/enIe.ts @@ -1,316 +1,316 @@ export const enIe = { - general: { - optional: "optional", - notes: "Notes", - quantity: "Quantity", - free: "FREE", - closed: "Closed", - apply: "Apply", - checkoutDisabled: - "Checkout is currently disabled. We apologise for the inconvenience.", - }, - contact: { - title: "Contact", - description: "", - email: "Email", - }, - pickup: { - title: "Local Pickup", - description: - "All efforts will be made to meet your expected pickup time. Actual pickup times may vary.", - location: "Pickup Location", - date: "Pickup Date", - time: "Preferred Pickup Time", - selectStore: "Select a store location", - selectDate: "Select a date", - selectTime: "Select a pickup time", - storeHours: "Store Hours", - seeDetails: "See details", - noTimeSlots: - "No available time slots for the selected date. Please select another date.", - hoursDisplayed: "Hours displayed in your local timezone.", - storeOperatesIn: "Store operates in {timezone} timezone.", - asap: "ASAP", - hour: "hour", - hours: "hours", - minutes: "minutes", - searchCountry: "Search country...", - noCountryFound: "No country found.", - }, - days: { - sunday: "Sunday", - monday: "Monday", - tuesday: "Tuesday", - wednesday: "Wednesday", - thursday: "Thursday", - friday: "Friday", - saturday: "Saturday", - }, - delivery: { - title: "Delivery", - method: "Delivery method", - shipping: "Shipping", - shipToAddress: "Ship to your address", - localPickup: "Local Pickup", - pickupFromStore: "Pick up from store location", - }, - tips: { - title: "Add a tip", - noTip: "No Tip", - customAmount: "Custom Amount", - customTipAmount: "Custom Tip Amount", - placeholder: "€0.00", - }, - shipping: { - title: "Shipping", - description: "Shipping address", - method: "Shipping method", - noShippingMethodAddress: - "Enter your address to see available shipping methods.", - noShippingMethods: "No shipping methods found.", - phone: "Phone Number", - country: "Country", - selectCountry: "Select country", - searchCountry: "Search country...", - noCountryFound: "No country found", - firstName: "First Name", - lastName: "Last Name", - address1: "Address", - address2: "Apartment, suite, etc. (optional)", - city: "City", - region: "State/County", - postalCode: "Postal Code", - notesPlaceholder: "Notes or special instructions", - addressSuggestion: "Did you mean", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No shipping origin address provided.", - }, - billing: { - title: "Billing", - description: "Billing description", - }, - payment: { - title: "Payment", - description: "All payments are secure and encrypted.", - billingAddress: { - title: "Billing Address", - description: "Enter your billing address.", - useShippingAddress: "Use shipping address as billing address", - }, - methods: { - creditCard: "Credit or Debit Card", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Offline payments", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No payment methods available", - cardNumber: "Card number", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Expiration date (MM / YY)", - securityCode: "Security code", - cvvPlaceholder: "CVV", - nameOnCard: "Name on card", - payNow: "Pay now", - standardShipping: "Standard Shipping", - cardDetails: "Card details", - payWithApplePay: "Pay with Apple Pay", - expirationDatePlaceholder: "MM / YY", - failedToInitializePayment: "Failed to initialise payment.", - orderTotal: "Order Total", - subtotal: "Subtotal", - tax: "VAT", - shipping: "Shipping", - discount: "Voucher", - processingPayment: "Processing payment...", - freePayment: "Complete your free order", - completingOrder: "Completing order...", - }, - phone: { - placeholder: "+353 1 234 5678", - searchCountry: "Search country...", - noCountryFound: "No country found.", - }, - discounts: { - placeholder: "Voucher code", - enterCode: "Enter voucher code", - apply: "Apply", - alreadyApplied: "This voucher code has already been applied", - failedToApply: "Failed to apply voucher code", - enterCodeValidation: "Please enter a voucher code", - }, - totals: { - subtotal: "Subtotal", - discount: "Discount", - shipping: "Shipping", - tip: "Tip", - estimatedTaxes: "Estimated VAT", - totalDue: "Total Due", - orderSummary: "Order Summary", - itemCount: "items", - noItems: "No items", - }, - lineItems: { - note: "Note:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Address", - suggestions: "Suggestions", - }, - form: { - useFormFieldError: "useFormField should be used within ", - }, - pagination: { - ariaLabel: "pagination", - previousPageAriaLabel: "Go to previous page", - previous: "Previous", - nextPageAriaLabel: "Go to next page", - next: "Next", - morePages: "More pages", - }, - sidebar: { - useSidebarError: "useSidebar must be used within a SidebarProvider.", - toggleSidebar: "Toggle Sidebar", - }, - accessibility: { - payWithApplePay: "Pay with Apple Pay", - applePayLogo: "Apple Pay Logo", - }, - }, - errors: { - failedToGetAccessToken: "Failed to get access token", - invalidEnvironment: "Invalid environment", - noPublicAccessToken: "No public access token provided", - noSessionToken: "No session token or ID provided", - errorCreatingSession: "Error creating checkout session:", - orderIdRequired: "Order ID is required", - errorTrackingEvent: "Error tracking event", - errorInTrackingSubscriber: "Error in tracking subscriber", - useTrackingProviderError: - "useTracking must be used within a TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect must be used within a PoyntCollectProvider", - useSquareProviderError: "useSquare must be used within a SquareProvider", - errorProcessingPayment: "Error processing payment", - stripeConfigMissing: - "Stripe configuration is missing. Please check your setup.", - paymentSuccessful: "Payment successful", - paymentFailed: "Payment failed", - paypalConfigMissing: - "PayPal configuration is missing. Please check your setup.", - stripeNotReady: "Stripe not ready", - cardElementNotFound: "CardElement not found", - errorProcessingCardPayment: "Error processing card payment.", - errorProcessingExpressPayment: "Error processing express payment.", - failedToInitializePayment: "Failed to initialise payment.", - invalidPhoneNumber: "invalid phone number", - }, - validation: { - phoneRequired: "Phone number is required", - emailRequired: "Enter an email", - emailInvalid: "Enter a valid email", - phoneTooLong: "Phone number too long", - invalidShippingAddress: "Invalid shipping address", - invalidBillingAddress: "Invalid billing address", - selectPaymentMethod: "Select a payment method", - enterValidBillingPhone: "Enter a valid billing phone number", - enterValidShippingPhone: "Enter a valid shipping phone number", - enterFirstName: "Enter a first name", - enterLastName: "Enter a last name", - enterAddress: "Enter an address", - enterCity: "Enter a city", - enterZipCode: "Enter a postal code", - enterZipPostalCode: "Enter a postal code", - selectState: "Select a county", - selectCountry: "Select a country", - enterCountry: "Enter a country", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Server error", - SESSION_NOT_FOUND: "Session not found", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Failed to retrieve checkout session", - CHECKOUT_SESSION_NOT_FOUND: "Checkout session not found", - CHECKOUT_SESSION_FETCH_ERROR: "General checkout session fetch error", - DRAFT_ORDER_NOT_FOUND: "Draft order not found", - CHECKOUT_SESSION_CREATION_FAILED: "Failed to create checkout session", - CREATED_SESSION_DATA_NOT_FOUND: "Created session data not found", - CHECKOUT_SESSION_CREATION_ERROR: "General checkout session creation error", - CHECKOUT_SESSION_UPDATE_FAILED: "Failed to update checkout session", - UPDATED_SESSION_NOT_FOUND: "Updated session not found", - CHECKOUT_SESSION_UPDATE_ERROR: "General checkout session update error", - ORDER_API_NOT_FOUND: "Order API data source not found", - DRAFT_ORDER_RETRIEVAL_FAILED: "Failed to retrieve draft order", - DATA_SOURCES_NOT_FOUND: "Data sources not found", - TRANSACTION_API_NOT_FOUND: "Transaction API data source not found", - TRANSACTION_PROCESSING_FAILED: "Failed to process transaction", - TRANSACTION_CREATION_FAILED: "Failed to find or create transaction", - ORDER_OPENING_FAILED: "Failed to open order", - INVALID_FULFILLMENT_LOCATION: "Invalid fulfillment location", - NO_VALID_PICKUP_LOCATION: "No valid pickup location available", - DRAFT_ORDER_FETCH_FAILED: "Failed to fetch draft order", - LINE_ITEMS_FETCH_FAILED: "Failed to fetch line items", - CURRENT_ORDER_FETCH_FAILED: "Failed to fetch current draft order", - DRAFT_ORDER_UPDATE_FAILED: "Failed to update draft order", - DISCOUNT_APPLICATION_FAILED: "Failed to apply voucher", - CONTEXT_UNAVAILABLE: "Session or data sources not available", - SHIPPING_LINES_UPDATE_FAILED: "Failed to update shipping lines", - ORDER_TOTALS_UPDATE_FAILED: "Failed to update order totals", - SHIPPING_METHOD_APPLICATION_FAILED: "Failed to apply shipping method", - SKU_FETCH_FAILED: "Failed to fetch SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Failed to calculate shipping rates", - SHIPPING_METHOD_NOT_FOUND: "Shipping method not found", - SHIPPING_METHOD_REMOVAL_FAILED: "Failed to remove shipping method", - SHIPPING_ADDRESS_REQUIRED: "Shipping address required", - INVENTORY_VALIDATION_ERROR: "Inventory validation error", - INSUFFICIENT_INVENTORY: "Insufficient inventory", - INVALID_ORDER_STATUS: "Invalid order status", - TRANSACTION_CREATION_ERROR: "Transaction creation error", - TRANSACTION_PROCESSING_ERROR: "Transaction processing error", - UNKNOWN_ERROR: "Unknown error", - FULFILLMENT_CREATION_ERROR: "Fulfillment creation error", - TAX_CALCULATION_ERROR: "VAT calculation error", - ADDRESS_VERIFICATION_ERROR: "Address verification error", - ADDRESS_MATCHES_ERROR: "Address matches error", - SHIPPING_CONFLICT_ERROR: "Shipping conflict error", - SHIPPING_ERROR: "General shipping error", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Price adjustment calculation error", - ORDER_FETCH_ERROR: "Order fetch error", - DRAFT_ORDER_UPDATE_ERROR: "Draft order update error", - DISCOUNT_APPLICATION_ERROR: "Voucher application error", - DRAFT_ORDER_OPEN_ERROR: "Draft order open error", - ORDER_UPDATE_ERROR: "Order update error", - CATALOG_FETCH_ERROR: "Catalogue fetch error", - STORE_ID_NOT_FOUND: "Store ID not found", - ORDER_NOT_DRAFT: "Order is not in draft status", - NO_LINE_ITEMS: "No line items found", - BAD_USER_INPUT: "Invalid user input", - MISSING_SHIPPING_ADDRESS: "Shipping address is required", - MISSING_REQUIRED_FIELD: "Required field is missing", - CATALOG_API_ERROR: "Catalogue service error", - TAX_SERVICE_UNAVAILABLE: "VAT service is unavailable", - SHIPPING_SERVICE_UNAVAILABLE: "Shipping service is unavailable", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Price adjustments service is unavailable", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Failed to calculate price adjustments", - SERVICE_UNAVAILABLE: "Service is temporarily unavailable", - RATE_LIMITED: "Too many requests, please try again later", - TIMEOUT: "Request timed out", - INTERNAL_ERROR: "Internal server error", - SHIPPING_POSTAL_CODE_REQUIRED: "Shipping postal code is required", - SHIPPING_COUNTRY_CODE_REQUIRED: "Shipping country code is required", - SHIPPING_METHOD_REQUIRED: "Shipping method is required", - SHIPPING_ADDRESS_VERIFICATION_FAILED: "Shipping address verification failed", - BILLING_ADDRESS_VERIFICATION_FAILED: "Billing address verification failed", - }, -}; \ No newline at end of file + general: { + optional: 'optional', + notes: 'Notes', + quantity: 'Quantity', + free: 'FREE', + closed: 'Closed', + apply: 'Apply', + checkoutDisabled: 'Checkout is currently disabled. We apologise for the inconvenience.', + }, + contact: { + title: 'Contact', + description: '', + email: 'Email', + }, + pickup: { + title: 'Local Pickup', + description: 'All efforts will be made to meet your expected pickup time. Actual pickup times may vary.', + location: 'Pickup Location', + date: 'Pickup Date', + time: 'Preferred Pickup Time', + selectStore: 'Select a store location', + selectDate: 'Select a date', + selectTime: 'Select a pickup time', + storeHours: 'Store Hours', + seeDetails: 'See details', + noTimeSlots: 'No available time slots for the selected date. Please select another date.', + hoursDisplayed: 'Hours displayed in your local timezone.', + storeOperatesIn: 'Store operates in {timezone} timezone.', + asap: 'ASAP', + hour: 'hour', + hours: 'hours', + minutes: 'minutes', + searchCountry: 'Search country...', + noCountryFound: 'No country found.', + }, + days: { + sunday: 'Sunday', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + }, + delivery: { + title: 'Delivery', + method: 'Delivery method', + shipping: 'Shipping', + shipToAddress: 'Ship to your address', + localPickup: 'Local Pickup', + pickupFromStore: 'Pick up from store location', + }, + tips: { + title: 'Add a tip', + noTip: 'No Tip', + customAmount: 'Custom Amount', + customTipAmount: 'Custom Tip Amount', + placeholder: '€0.00', + }, + shipping: { + title: 'Shipping', + description: 'Shipping address', + method: 'Shipping method', + noShippingMethodAddress: 'Enter your address to see available shipping methods.', + noShippingMethods: 'No shipping methods found.', + phone: 'Phone Number', + country: 'Country', + selectCountry: 'Select country', + searchCountry: 'Search country...', + noCountryFound: 'No country found', + firstName: 'First Name', + lastName: 'Last Name', + address1: 'Address', + address2: 'Apartment, suite, etc. (optional)', + city: 'City', + region: 'State/County', + postalCode: 'Postal Code', + notesPlaceholder: 'Notes or special instructions', + addressSuggestion: 'Did you mean', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No shipping origin address provided.', + }, + billing: { + title: 'Billing', + description: 'Billing description', + }, + payment: { + title: 'Payment', + description: 'All payments are secure and encrypted.', + billingAddress: { + title: 'Billing Address', + description: 'Enter your billing address.', + useShippingAddress: 'Use shipping address as billing address', + }, + methods: { + creditCard: 'Credit or Debit Card', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Offline payments', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No payment methods available', + cardNumber: 'Card number', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Expiration date (MM / YY)', + securityCode: 'Security code', + cvvPlaceholder: 'CVV', + nameOnCard: 'Name on card', + payNow: 'Pay now', + standardShipping: 'Standard Shipping', + cardDetails: 'Card details', + payWithApplePay: 'Pay with Apple Pay', + expirationDatePlaceholder: 'MM / YY', + failedToInitializePayment: 'Failed to initialise payment.', + orderTotal: 'Order Total', + subtotal: 'Subtotal', + tax: 'VAT', + shipping: 'Shipping', + discount: 'Voucher', + processingPayment: 'Processing payment...', + completingOrder: 'Completing order...', + completeOrder: 'Complete your order', + freePayment: 'Complete your free order', + }, + phone: { + placeholder: '+353 1 234 5678', + searchCountry: 'Search country...', + noCountryFound: 'No country found.', + }, + discounts: { + placeholder: 'Voucher code', + enterCode: 'Enter voucher code', + apply: 'Apply', + alreadyApplied: 'This voucher code has already been applied', + failedToApply: 'Failed to apply voucher code', + enterCodeValidation: 'Please enter a voucher code', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Discount', + shipping: 'Shipping', + tip: 'Tip', + estimatedTaxes: 'Estimated VAT', + totalDue: 'Total Due', + orderSummary: 'Order Summary', + itemCount: 'items', + noItems: 'No items', + }, + lineItems: { + note: 'Note:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Address', + suggestions: 'Suggestions', + }, + form: { + useFormFieldError: 'useFormField should be used within ', + }, + pagination: { + ariaLabel: 'pagination', + previousPageAriaLabel: 'Go to previous page', + previous: 'Previous', + nextPageAriaLabel: 'Go to next page', + next: 'Next', + morePages: 'More pages', + }, + sidebar: { + useSidebarError: 'useSidebar must be used within a SidebarProvider.', + toggleSidebar: 'Toggle Sidebar', + }, + accessibility: { + payWithApplePay: 'Pay with Apple Pay', + applePayLogo: 'Apple Pay Logo', + close: 'Close', + additionalTipOptions: 'Additional tip options', + breadcrumb: 'breadcrumb', + more: 'More', + previousSlide: 'Previous slide', + nextSlide: 'Next slide', + }, + }, + errors: { + failedToGetAccessToken: 'Failed to get access token', + invalidEnvironment: 'Invalid environment', + noPublicAccessToken: 'No public access token provided', + noSessionToken: 'No session token or ID provided', + errorCreatingSession: 'Error creating checkout session:', + orderIdRequired: 'Order ID is required', + errorTrackingEvent: 'Error tracking event', + errorInTrackingSubscriber: 'Error in tracking subscriber', + useTrackingProviderError: 'useTracking must be used within a TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect must be used within a PoyntCollectProvider', + useSquareProviderError: 'useSquare must be used within a SquareProvider', + errorProcessingPayment: 'Error processing payment', + stripeConfigMissing: 'Stripe configuration is missing. Please check your setup.', + paymentSuccessful: 'Payment successful', + paymentFailed: 'Payment failed', + paypalConfigMissing: 'PayPal configuration is missing. Please check your setup.', + stripeNotReady: 'Stripe not ready', + cardElementNotFound: 'CardElement not found', + errorProcessingCardPayment: 'Error processing card payment.', + errorProcessingExpressPayment: 'Error processing express payment.', + failedToInitializePayment: 'Failed to initialise payment.', + invalidPhoneNumber: 'invalid phone number', + }, + validation: { + phoneRequired: 'Phone number is required', + emailRequired: 'Enter an email', + emailInvalid: 'Enter a valid email', + phoneTooLong: 'Phone number too long', + invalidShippingAddress: 'Invalid shipping address', + invalidBillingAddress: 'Invalid billing address', + selectPaymentMethod: 'Select a payment method', + enterValidBillingPhone: 'Enter a valid billing phone number', + enterValidShippingPhone: 'Enter a valid shipping phone number', + enterFirstName: 'Enter a first name', + enterLastName: 'Enter a last name', + enterAddress: 'Enter an address', + enterCity: 'Enter a city', + enterZipCode: 'Enter a postal code', + enterZipPostalCode: 'Enter a postal code', + selectState: 'Select a county', + selectCountry: 'Select a country', + enterCountry: 'Enter a country', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Server error', + SESSION_NOT_FOUND: 'Session not found', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Failed to retrieve checkout session', + CHECKOUT_SESSION_NOT_FOUND: 'Checkout session not found', + CHECKOUT_SESSION_FETCH_ERROR: 'General checkout session fetch error', + DRAFT_ORDER_NOT_FOUND: 'Order not found', + CHECKOUT_SESSION_CREATION_FAILED: 'Failed to create checkout session', + CREATED_SESSION_DATA_NOT_FOUND: 'Created session data not found', + CHECKOUT_SESSION_CREATION_ERROR: 'General checkout session creation error', + CHECKOUT_SESSION_UPDATE_FAILED: 'Failed to update checkout session', + UPDATED_SESSION_NOT_FOUND: 'Updated session not found', + CHECKOUT_SESSION_UPDATE_ERROR: 'General checkout session update error', + ORDER_API_NOT_FOUND: 'Order API data source not found', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Failed to retrieve order', + DATA_SOURCES_NOT_FOUND: 'Data sources not found', + TRANSACTION_API_NOT_FOUND: 'Transaction API data source not found', + TRANSACTION_PROCESSING_FAILED: 'Failed to process transaction', + TRANSACTION_CREATION_FAILED: 'Failed to find or create transaction', + ORDER_OPENING_FAILED: 'Failed to open order', + INVALID_FULFILLMENT_LOCATION: 'Invalid fulfillment location', + NO_VALID_PICKUP_LOCATION: 'No valid pickup location available', + DRAFT_ORDER_FETCH_FAILED: 'Failed to fetch order', + LINE_ITEMS_FETCH_FAILED: 'Failed to fetch line items', + CURRENT_ORDER_FETCH_FAILED: 'Failed to fetch current order', + DRAFT_ORDER_UPDATE_FAILED: 'Failed to update order', + DISCOUNT_APPLICATION_FAILED: 'Failed to apply voucher', + CONTEXT_UNAVAILABLE: 'Session or data sources not available', + SHIPPING_LINES_UPDATE_FAILED: 'Failed to update shipping lines', + ORDER_TOTALS_UPDATE_FAILED: 'Failed to update order totals', + ORDER_TOTAL_CALCULATION_FAILED: 'Failed to calculate order totals', + SHIPPING_METHOD_APPLICATION_FAILED: 'Failed to apply shipping method', + SKU_FETCH_FAILED: 'Failed to fetch SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Failed to calculate shipping rates', + SHIPPING_METHOD_NOT_FOUND: 'Shipping method not found', + SHIPPING_METHOD_REMOVAL_FAILED: 'Failed to remove shipping method', + SHIPPING_ADDRESS_REQUIRED: 'Shipping address required', + INVENTORY_VALIDATION_ERROR: 'Inventory validation error', + INSUFFICIENT_INVENTORY: 'Insufficient inventory', + INVALID_ORDER_STATUS: 'Invalid order status', + TRANSACTION_CREATION_ERROR: 'Transaction creation error', + TRANSACTION_PROCESSING_ERROR: 'Transaction processing error', + UNKNOWN_ERROR: 'Unknown error', + FULFILLMENT_CREATION_ERROR: 'Fulfillment creation error', + TAX_CALCULATION_ERROR: 'VAT calculation error', + ADDRESS_VERIFICATION_ERROR: 'Address verification error', + ADDRESS_MATCHES_ERROR: 'Address matches error', + SHIPPING_CONFLICT_ERROR: 'Shipping conflict error', + SHIPPING_ERROR: 'General shipping error', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Price adjustment calculation error', + ORDER_FETCH_ERROR: 'Order fetch error', + DRAFT_ORDER_UPDATE_ERROR: 'Order update error', + DISCOUNT_APPLICATION_ERROR: 'Voucher application error', + DRAFT_ORDER_OPEN_ERROR: 'Order open error', + ORDER_UPDATE_ERROR: 'Order update error', + CATALOG_FETCH_ERROR: 'Catalogue fetch error', + STORE_ID_NOT_FOUND: 'Store ID not found', + ORDER_NOT_DRAFT: 'Order is not in valid status', + NO_LINE_ITEMS: 'No line items found', + BAD_USER_INPUT: 'Invalid user input', + MISSING_SHIPPING_ADDRESS: 'Shipping address is required', + MISSING_REQUIRED_FIELD: 'Required field is missing', + CATALOG_API_ERROR: 'Catalogue service error', + TAX_SERVICE_UNAVAILABLE: 'VAT service is unavailable', + SHIPPING_SERVICE_UNAVAILABLE: 'Shipping service is unavailable', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Price adjustments service is unavailable', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Failed to calculate price adjustments', + SERVICE_UNAVAILABLE: 'Service is temporarily unavailable', + RATE_LIMITED: 'Too many requests, please try again later', + TIMEOUT: 'Request timed out', + INTERNAL_ERROR: 'Internal server error', + SHIPPING_POSTAL_CODE_REQUIRED: 'Shipping postal code is required', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Shipping country code is required', + SHIPPING_METHOD_REQUIRED: 'Shipping method is required', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Shipping address verification failed', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Billing address verification failed', + MISSING_SHIPPING_INFO: 'Shipping address or method failed to apply', + DEPENDENCY_ERROR: "We're unable to process your order right now. Please wait a moment and try again", + }, +}; diff --git a/packages/localizations/src/enUs.ts b/packages/localizations/src/enUs.ts index f4bf702e..b28eb58f 100644 --- a/packages/localizations/src/enUs.ts +++ b/packages/localizations/src/enUs.ts @@ -1,316 +1,316 @@ export const enUs = { - general: { - optional: "optional", - notes: "Notes", - quantity: "Quantity", - free: "FREE", - closed: "Closed", - apply: "Apply", - checkoutDisabled: - "Checkout is currently disabled. We apologize for the inconvenience.", - }, - contact: { - title: "Contact", - description: "", - email: "Email", - }, - pickup: { - title: "Local Pickup", - description: - "All efforts will be made to meet your expected pickup time. Actual pickup times may vary.", - location: "Pickup Location", - date: "Pickup Date", - time: "Preferred Pickup Time", - selectStore: "Select a store location", - selectDate: "Select a date", - selectTime: "Select a pickup time", - storeHours: "Store Hours", - seeDetails: "See details", - noTimeSlots: - "No available time slots for the selected date. Please select another date.", - hoursDisplayed: "Hours displayed in your local timezone.", - storeOperatesIn: "Store operates in {timezone} timezone.", - asap: "ASAP", - hour: "hour", - hours: "hours", - minutes: "minutes", - searchCountry: "Search country...", - noCountryFound: "No country found.", - }, - days: { - sunday: "Sunday", - monday: "Monday", - tuesday: "Tuesday", - wednesday: "Wednesday", - thursday: "Thursday", - friday: "Friday", - saturday: "Saturday", - }, - delivery: { - title: "Delivery", - method: "Delivery method", - shipping: "Shipping", - shipToAddress: "Ship to your address", - localPickup: "Local Pickup", - pickupFromStore: "Pick up from store location", - }, - tips: { - title: "Add a tip", - noTip: "No Tip", - customAmount: "Custom Amount", - customTipAmount: "Custom Tip Amount", - placeholder: "$0.00", - }, - shipping: { - title: "Shipping", - description: "Shipping address", - method: "Shipping method", - noShippingMethodAddress: - "Enter your address to see available shipping methods.", - noShippingMethods: "No shipping methods found.", - phone: "Phone Number", - country: "Country", - selectCountry: "Select country", - searchCountry: "Search country...", - noCountryFound: "No country found", - firstName: "First Name", - lastName: "Last Name", - address1: "Address", - address2: "Apartment, suite, etc. (optional)", - city: "City", - region: "State/Province", - postalCode: "Postal Code", - notesPlaceholder: "Notes or special instructions", - addressSuggestion: "Did you mean", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No shipping origin address provided.", - }, - billing: { - title: "Billing", - description: "Billing description", - }, - payment: { - title: "Payment", - description: "All payments are secure and encrypted.", - billingAddress: { - title: "Billing Address", - description: "Enter your billing address.", - useShippingAddress: "Use shipping address as billing address", - }, - methods: { - creditCard: "Credit or Debit Card", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Offline payments", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No payment methods available", - cardNumber: "Card number", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Expiration date (MM / YY)", - securityCode: "Security code", - cvvPlaceholder: "CVV", - nameOnCard: "Name on card", - payNow: "Pay now", - standardShipping: "Standard Shipping", - cardDetails: "Card details", - payWithApplePay: "Pay with Apple Pay", - expirationDatePlaceholder: "MM / YY", - failedToInitializePayment: "Failed to initialize payment.", - orderTotal: "Order Total", - subtotal: "Subtotal", - tax: "Tax", - shipping: "Shipping", - discount: "Coupon", - processingPayment: "Processing payment...", - freePayment: "Complete your free order", - completingOrder: "Completing order...", - }, - phone: { - placeholder: "(201) 555-1234", - searchCountry: "Search country...", - noCountryFound: "No country found.", - }, - discounts: { - placeholder: "Coupon code", - enterCode: "Enter coupon code", - apply: "Apply", - alreadyApplied: "This coupon code has already been applied", - failedToApply: "Failed to apply coupon code", - enterCodeValidation: "Please enter a coupon code", - }, - totals: { - subtotal: "Subtotal", - discount: "Discount", - shipping: "Shipping", - tip: "Tip", - estimatedTaxes: "Estimated taxes", - totalDue: "Total Due", - orderSummary: "Order Summary", - itemCount: "items", - noItems: "No items", - }, - lineItems: { - note: "Note:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Address", - suggestions: "Suggestions", - }, - form: { - useFormFieldError: "useFormField should be used within ", - }, - pagination: { - ariaLabel: "pagination", - previousPageAriaLabel: "Go to previous page", - previous: "Previous", - nextPageAriaLabel: "Go to next page", - next: "Next", - morePages: "More pages", - }, - sidebar: { - useSidebarError: "useSidebar must be used within a SidebarProvider.", - toggleSidebar: "Toggle Sidebar", - }, - accessibility: { - payWithApplePay: "Pay with Apple Pay", - applePayLogo: "Apple Pay Logo", - }, - }, - errors: { - failedToGetAccessToken: "Failed to get access token", - invalidEnvironment: "Invalid environment", - noPublicAccessToken: "No public access token provided", - noSessionToken: "No session token or ID provided", - errorCreatingSession: "Error creating checkout session:", - orderIdRequired: "Order ID is required", - errorTrackingEvent: "Error tracking event", - errorInTrackingSubscriber: "Error in tracking subscriber", - useTrackingProviderError: - "useTracking must be used within a TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect must be used within a PoyntCollectProvider", - useSquareProviderError: "useSquare must be used within a SquareProvider", - errorProcessingPayment: "Error processing payment", - stripeConfigMissing: - "Stripe configuration is missing. Please check your setup.", - paymentSuccessful: "Payment successful", - paymentFailed: "Payment failed", - paypalConfigMissing: - "PayPal configuration is missing. Please check your setup.", - stripeNotReady: "Stripe not ready", - cardElementNotFound: "CardElement not found", - errorProcessingCardPayment: "Error processing card payment.", - errorProcessingExpressPayment: "Error processing express payment.", - failedToInitializePayment: "Failed to initialize payment.", - invalidPhoneNumber: "invalid phone number", - }, - validation: { - phoneRequired: "Phone number is required", - emailRequired: "Enter an email", - emailInvalid: "Enter a valid email", - phoneTooLong: "Phone number too long", - invalidShippingAddress: "Invalid shipping address", - invalidBillingAddress: "Invalid billing address", - selectPaymentMethod: "Select a payment method", - enterValidBillingPhone: "Enter a valid billing phone number", - enterValidShippingPhone: "Enter a valid shipping phone number", - enterFirstName: "Enter a first name", - enterLastName: "Enter a last name", - enterAddress: "Enter an address", - enterCity: "Enter a city", - enterZipCode: "Enter a ZIP code", - enterZipPostalCode: "Enter a ZIP / postal code", - selectState: "Select a state/province", - selectCountry: "Select a country", - enterCountry: "Enter a country", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Server error", - SESSION_NOT_FOUND: "Session not found", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Failed to retrieve checkout session", - CHECKOUT_SESSION_NOT_FOUND: "Checkout session not found", - CHECKOUT_SESSION_FETCH_ERROR: "General checkout session fetch error", - DRAFT_ORDER_NOT_FOUND: "Draft order not found", - CHECKOUT_SESSION_CREATION_FAILED: "Failed to create checkout session", - CREATED_SESSION_DATA_NOT_FOUND: "Created session data not found", - CHECKOUT_SESSION_CREATION_ERROR: "General checkout session creation error", - CHECKOUT_SESSION_UPDATE_FAILED: "Failed to update checkout session", - UPDATED_SESSION_NOT_FOUND: "Updated session not found", - CHECKOUT_SESSION_UPDATE_ERROR: "General checkout session update error", - ORDER_API_NOT_FOUND: "Order API data source not found", - DRAFT_ORDER_RETRIEVAL_FAILED: "Failed to retrieve draft order", - DATA_SOURCES_NOT_FOUND: "Data sources not found", - TRANSACTION_API_NOT_FOUND: "Transaction API data source not found", - TRANSACTION_PROCESSING_FAILED: "Failed to process transaction", - TRANSACTION_CREATION_FAILED: "Failed to find or create transaction", - ORDER_OPENING_FAILED: "Failed to open order", - INVALID_FULFILLMENT_LOCATION: "Invalid fulfillment location", - NO_VALID_PICKUP_LOCATION: "No valid pickup location available", - DRAFT_ORDER_FETCH_FAILED: "Failed to fetch draft order", - LINE_ITEMS_FETCH_FAILED: "Failed to fetch line items", - CURRENT_ORDER_FETCH_FAILED: "Failed to fetch current draft order", - DRAFT_ORDER_UPDATE_FAILED: "Failed to update draft order", - DISCOUNT_APPLICATION_FAILED: "Failed to apply coupon", - CONTEXT_UNAVAILABLE: "Session or data sources not available", - SHIPPING_LINES_UPDATE_FAILED: "Failed to update shipping lines", - ORDER_TOTALS_UPDATE_FAILED: "Failed to update order totals", - SHIPPING_METHOD_APPLICATION_FAILED: "Failed to apply shipping method", - SKU_FETCH_FAILED: "Failed to fetch SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Failed to calculate shipping rates", - SHIPPING_METHOD_NOT_FOUND: "Shipping method not found", - SHIPPING_METHOD_REMOVAL_FAILED: "Failed to remove shipping method", - SHIPPING_ADDRESS_REQUIRED: "Shipping address required", - INVENTORY_VALIDATION_ERROR: "Inventory validation error", - INSUFFICIENT_INVENTORY: "Insufficient inventory", - INVALID_ORDER_STATUS: "Invalid order status", - TRANSACTION_CREATION_ERROR: "Transaction creation error", - TRANSACTION_PROCESSING_ERROR: "Transaction processing error", - UNKNOWN_ERROR: "Unknown error", - FULFILLMENT_CREATION_ERROR: "Fulfillment creation error", - TAX_CALCULATION_ERROR: "Tax calculation error", - ADDRESS_VERIFICATION_ERROR: "Address verification error", - ADDRESS_MATCHES_ERROR: "Address matches error", - SHIPPING_CONFLICT_ERROR: "Shipping conflict error", - SHIPPING_ERROR: "General shipping error", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Price adjustment calculation error", - ORDER_FETCH_ERROR: "Order fetch error", - DRAFT_ORDER_UPDATE_ERROR: "Draft order update error", - DISCOUNT_APPLICATION_ERROR: "Coupon application error", - DRAFT_ORDER_OPEN_ERROR: "Draft order open error", - ORDER_UPDATE_ERROR: "Order update error", - CATALOG_FETCH_ERROR: "Catalog fetch error", - STORE_ID_NOT_FOUND: "Store ID not found", - ORDER_NOT_DRAFT: "Order is not in draft status", - NO_LINE_ITEMS: "No line items found", - BAD_USER_INPUT: "Invalid user input", - MISSING_SHIPPING_ADDRESS: "Shipping address is required", - MISSING_REQUIRED_FIELD: "Required field is missing", - CATALOG_API_ERROR: "Catalog service error", - TAX_SERVICE_UNAVAILABLE: "Tax service is unavailable", - SHIPPING_SERVICE_UNAVAILABLE: "Shipping service is unavailable", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Price adjustments service is unavailable", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Failed to calculate price adjustments", - SERVICE_UNAVAILABLE: "Service is temporarily unavailable", - RATE_LIMITED: "Too many requests, please try again later", - TIMEOUT: "Request timed out", - INTERNAL_ERROR: "Internal server error", - SHIPPING_POSTAL_CODE_REQUIRED: "Shipping postal code is required", - SHIPPING_COUNTRY_CODE_REQUIRED: "Shipping country code is required", - SHIPPING_METHOD_REQUIRED: "Shipping method is required", - SHIPPING_ADDRESS_VERIFICATION_FAILED: "Shipping address verification failed", - BILLING_ADDRESS_VERIFICATION_FAILED: "Billing address verification failed", - }, + general: { + optional: 'optional', + notes: 'Notes', + quantity: 'Quantity', + free: 'FREE', + closed: 'Closed', + apply: 'Apply', + checkoutDisabled: 'Checkout is currently disabled. We apologize for the inconvenience.', + }, + contact: { + title: 'Contact', + description: '', + email: 'Email', + }, + pickup: { + title: 'Local Pickup', + description: 'All efforts will be made to meet your expected pickup time. Actual pickup times may vary.', + location: 'Pickup Location', + date: 'Pickup Date', + time: 'Preferred Pickup Time', + selectStore: 'Select a store location', + selectDate: 'Select a date', + selectTime: 'Select a pickup time', + storeHours: 'Store Hours', + seeDetails: 'See details', + noTimeSlots: 'No available time slots for the selected date. Please select another date.', + hoursDisplayed: 'Hours displayed in your local timezone.', + storeOperatesIn: 'Store operates in {timezone} timezone.', + asap: 'ASAP', + hour: 'hour', + hours: 'hours', + minutes: 'minutes', + searchCountry: 'Search country...', + noCountryFound: 'No country found.', + }, + days: { + sunday: 'Sunday', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + }, + delivery: { + title: 'Delivery', + method: 'Delivery method', + shipping: 'Shipping', + shipToAddress: 'Ship to your address', + localPickup: 'Local Pickup', + pickupFromStore: 'Pick up from store location', + }, + tips: { + title: 'Add a tip', + noTip: 'No Tip', + customAmount: 'Custom Amount', + customTipAmount: 'Custom Tip Amount', + placeholder: '$0.00', + }, + shipping: { + title: 'Shipping', + description: 'Shipping address', + method: 'Shipping method', + noShippingMethodAddress: 'Enter your address to see available shipping methods.', + noShippingMethods: 'No shipping methods found.', + phone: 'Phone Number', + country: 'Country', + selectCountry: 'Select country', + searchCountry: 'Search country...', + noCountryFound: 'No country found', + firstName: 'First Name', + lastName: 'Last Name', + address1: 'Address', + address2: 'Apartment, suite, etc. (optional)', + city: 'City', + region: 'State/Province', + postalCode: 'Postal Code', + notesPlaceholder: 'Notes or special instructions', + addressSuggestion: 'Did you mean', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No shipping origin address provided.', + }, + billing: { + title: 'Billing', + description: 'Billing description', + }, + payment: { + title: 'Payment', + description: 'All payments are secure and encrypted.', + billingAddress: { + title: 'Billing Address', + description: 'Enter your billing address.', + useShippingAddress: 'Use shipping address as billing address', + }, + methods: { + creditCard: 'Credit or Debit Card', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Offline payments', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No payment methods available', + cardNumber: 'Card number', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Expiration date (MM / YY)', + securityCode: 'Security code', + cvvPlaceholder: 'CVV', + nameOnCard: 'Name on card', + payNow: 'Pay now', + standardShipping: 'Standard Shipping', + cardDetails: 'Card details', + payWithApplePay: 'Pay with Apple Pay', + expirationDatePlaceholder: 'MM / YY', + failedToInitializePayment: 'Failed to initialize payment.', + orderTotal: 'Order Total', + subtotal: 'Subtotal', + tax: 'Tax', + shipping: 'Shipping', + discount: 'Coupon', + processingPayment: 'Processing payment...', + completingOrder: 'Completing order...', + completeOrder: 'Complete your order', + freePayment: 'Complete your free order', + }, + phone: { + placeholder: '(201) 555-1234', + searchCountry: 'Search country...', + noCountryFound: 'No country found.', + }, + discounts: { + placeholder: 'Coupon code', + enterCode: 'Enter coupon code', + apply: 'Apply', + alreadyApplied: 'This coupon code has already been applied', + failedToApply: 'Failed to apply coupon code', + enterCodeValidation: 'Please enter a coupon code', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Discount', + shipping: 'Shipping', + tip: 'Tip', + estimatedTaxes: 'Estimated taxes', + totalDue: 'Total Due', + orderSummary: 'Order Summary', + itemCount: 'items', + noItems: 'No items', + }, + lineItems: { + note: 'Note:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Address', + suggestions: 'Suggestions', + }, + form: { + useFormFieldError: 'useFormField should be used within ', + }, + pagination: { + ariaLabel: 'pagination', + previousPageAriaLabel: 'Go to previous page', + previous: 'Previous', + nextPageAriaLabel: 'Go to next page', + next: 'Next', + morePages: 'More pages', + }, + sidebar: { + useSidebarError: 'useSidebar must be used within a SidebarProvider.', + toggleSidebar: 'Toggle Sidebar', + }, + accessibility: { + payWithApplePay: 'Pay with Apple Pay', + applePayLogo: 'Apple Pay Logo', + close: 'Close', + additionalTipOptions: 'Additional tip options', + breadcrumb: 'breadcrumb', + more: 'More', + previousSlide: 'Previous slide', + nextSlide: 'Next slide', + }, + }, + errors: { + failedToGetAccessToken: 'Failed to get access token', + invalidEnvironment: 'Invalid environment', + noPublicAccessToken: 'No public access token provided', + noSessionToken: 'No session token or ID provided', + errorCreatingSession: 'Error creating checkout session:', + orderIdRequired: 'Order ID is required', + errorTrackingEvent: 'Error tracking event', + errorInTrackingSubscriber: 'Error in tracking subscriber', + useTrackingProviderError: 'useTracking must be used within a TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect must be used within a PoyntCollectProvider', + useSquareProviderError: 'useSquare must be used within a SquareProvider', + errorProcessingPayment: 'Error processing payment', + stripeConfigMissing: 'Stripe configuration is missing. Please check your setup.', + paymentSuccessful: 'Payment successful', + paymentFailed: 'Payment failed', + paypalConfigMissing: 'PayPal configuration is missing. Please check your setup.', + stripeNotReady: 'Stripe not ready', + cardElementNotFound: 'CardElement not found', + errorProcessingCardPayment: 'Error processing card payment.', + errorProcessingExpressPayment: 'Error processing express payment.', + failedToInitializePayment: 'Failed to initialize payment.', + invalidPhoneNumber: 'invalid phone number', + }, + validation: { + phoneRequired: 'Phone number is required', + emailRequired: 'Enter an email', + emailInvalid: 'Enter a valid email', + phoneTooLong: 'Phone number too long', + invalidShippingAddress: 'Invalid shipping address', + invalidBillingAddress: 'Invalid billing address', + selectPaymentMethod: 'Select a payment method', + enterValidBillingPhone: 'Enter a valid billing phone number', + enterValidShippingPhone: 'Enter a valid shipping phone number', + enterFirstName: 'Enter a first name', + enterLastName: 'Enter a last name', + enterAddress: 'Enter an address', + enterCity: 'Enter a city', + enterZipCode: 'Enter a ZIP code', + enterZipPostalCode: 'Enter a ZIP / postal code', + selectState: 'Select a state/province', + selectCountry: 'Select a country', + enterCountry: 'Enter a country', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Server error', + SESSION_NOT_FOUND: 'Session not found', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Failed to retrieve checkout session', + CHECKOUT_SESSION_NOT_FOUND: 'Checkout session not found', + CHECKOUT_SESSION_FETCH_ERROR: 'General checkout session fetch error', + DRAFT_ORDER_NOT_FOUND: 'Order not found', + CHECKOUT_SESSION_CREATION_FAILED: 'Failed to create checkout session', + CREATED_SESSION_DATA_NOT_FOUND: 'Created session data not found', + CHECKOUT_SESSION_CREATION_ERROR: 'General checkout session creation error', + CHECKOUT_SESSION_UPDATE_FAILED: 'Failed to update checkout session', + UPDATED_SESSION_NOT_FOUND: 'Updated session not found', + CHECKOUT_SESSION_UPDATE_ERROR: 'General checkout session update error', + ORDER_API_NOT_FOUND: 'Order API data source not found', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Failed to retrieve order', + DATA_SOURCES_NOT_FOUND: 'Data sources not found', + TRANSACTION_API_NOT_FOUND: 'Transaction API data source not found', + TRANSACTION_PROCESSING_FAILED: 'Failed to process transaction', + TRANSACTION_CREATION_FAILED: 'Failed to find or create transaction', + ORDER_OPENING_FAILED: 'Failed to open order', + INVALID_FULFILLMENT_LOCATION: 'Invalid fulfillment location', + NO_VALID_PICKUP_LOCATION: 'No valid pickup location available', + DRAFT_ORDER_FETCH_FAILED: 'Failed to fetch order', + LINE_ITEMS_FETCH_FAILED: 'Failed to fetch line items', + CURRENT_ORDER_FETCH_FAILED: 'Failed to fetch current order', + DRAFT_ORDER_UPDATE_FAILED: 'Failed to update order', + DISCOUNT_APPLICATION_FAILED: 'Failed to apply coupon', + CONTEXT_UNAVAILABLE: 'Session or data sources not available', + SHIPPING_LINES_UPDATE_FAILED: 'Failed to update shipping lines', + ORDER_TOTALS_UPDATE_FAILED: 'Failed to update order totals', + ORDER_TOTAL_CALCULATION_FAILED: 'Failed to calculate order totals', + SHIPPING_METHOD_APPLICATION_FAILED: 'Failed to apply shipping method', + SKU_FETCH_FAILED: 'Failed to fetch SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Failed to calculate shipping rates', + SHIPPING_METHOD_NOT_FOUND: 'Shipping method not found', + SHIPPING_METHOD_REMOVAL_FAILED: 'Failed to remove shipping method', + SHIPPING_ADDRESS_REQUIRED: 'Shipping address required', + INVENTORY_VALIDATION_ERROR: 'Inventory validation error', + INSUFFICIENT_INVENTORY: 'Insufficient inventory', + INVALID_ORDER_STATUS: 'Invalid order status', + TRANSACTION_CREATION_ERROR: 'Transaction creation error', + TRANSACTION_PROCESSING_ERROR: 'Transaction processing error', + UNKNOWN_ERROR: 'Unknown error', + FULFILLMENT_CREATION_ERROR: 'Fulfillment creation error', + TAX_CALCULATION_ERROR: 'Tax calculation error', + ADDRESS_VERIFICATION_ERROR: 'Address verification error', + ADDRESS_MATCHES_ERROR: 'Address matches error', + SHIPPING_CONFLICT_ERROR: 'Shipping conflict error', + SHIPPING_ERROR: 'General shipping error', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Price adjustment calculation error', + ORDER_FETCH_ERROR: 'Order fetch error', + DRAFT_ORDER_UPDATE_ERROR: 'Order update error', + DISCOUNT_APPLICATION_ERROR: 'Coupon application error', + DRAFT_ORDER_OPEN_ERROR: 'Order open error', + ORDER_UPDATE_ERROR: 'Order update error', + CATALOG_FETCH_ERROR: 'Catalog fetch error', + STORE_ID_NOT_FOUND: 'Store ID not found', + ORDER_NOT_DRAFT: 'Order is not in valid status', + NO_LINE_ITEMS: 'No line items found', + BAD_USER_INPUT: 'Invalid user input', + MISSING_SHIPPING_ADDRESS: 'Shipping address is required', + MISSING_REQUIRED_FIELD: 'Required field is missing', + CATALOG_API_ERROR: 'Catalog service error', + TAX_SERVICE_UNAVAILABLE: 'Tax service is unavailable', + SHIPPING_SERVICE_UNAVAILABLE: 'Shipping service is unavailable', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Price adjustments service is unavailable', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Failed to calculate price adjustments', + SERVICE_UNAVAILABLE: 'Service is temporarily unavailable', + RATE_LIMITED: 'Too many requests, please try again later', + TIMEOUT: 'Request timed out', + INTERNAL_ERROR: 'Internal server error', + SHIPPING_POSTAL_CODE_REQUIRED: 'Shipping postal code is required', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Shipping country code is required', + SHIPPING_METHOD_REQUIRED: 'Shipping method is required', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Shipping address verification failed', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Billing address verification failed', + MISSING_SHIPPING_INFO: 'Shipping address or method failed to apply', + DEPENDENCY_ERROR: "We're unable to process your order right now. Please wait a moment and try again", + }, }; diff --git a/packages/localizations/src/esAr.ts b/packages/localizations/src/esAr.ts index d2a6890b..7475a167 100644 --- a/packages/localizations/src/esAr.ts +++ b/packages/localizations/src/esAr.ts @@ -1,323 +1,316 @@ export const esAr = { - general: { - optional: "opcional", - notes: "Notas", - quantity: "Cantidad", - free: "GRATIS", - closed: "Cerrado", - apply: "Aplicar", - checkoutDisabled: - "El checkout está deshabilitado actualmente. Pedimos disculpas por las molestias.", - }, - contact: { - title: "Contacto", - description: "", - email: "Email", - }, - pickup: { - title: "Retiro en Local", - description: - "Haremos todo lo posible para cumplir con el horario de retiro solicitado. Los horarios reales pueden variar.", - location: "Ubicación de Retiro", - date: "Fecha de Retiro", - time: "Horario Preferido de Retiro", - selectStore: "Seleccioná una ubicación de local", - selectDate: "Seleccioná una fecha", - selectTime: "Seleccioná un horario de retiro", - storeHours: "Horarios del Local", - seeDetails: "Ver detalles", - noTimeSlots: - "No hay horarios disponibles para la fecha seleccionada. Por favor seleccioná otra fecha.", - hoursDisplayed: "Horarios mostrados en tu zona horaria local.", - storeOperatesIn: "El local opera en zona horaria {timezone}.", - asap: "LO ANTES POSIBLE", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - days: { - sunday: "Domingo", - monday: "Lunes", - tuesday: "Martes", - wednesday: "Miércoles", - thursday: "Jueves", - friday: "Viernes", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envío", - shipToAddress: "Enviar a tu dirección", - localPickup: "Retiro en Local", - pickupFromStore: "Retirar en ubicación del local", - }, - tips: { - title: "Agregar propina", - noTip: "Sin Propina", - customAmount: "Monto Personalizado", - customTipAmount: "Monto de Propina Personalizado", - placeholder: "$0,00", - }, - shipping: { - title: "Envío", - description: "Dirección de envío", - method: "Método de envío", - noShippingMethodAddress: - "Ingresá tu dirección para ver los métodos de envío disponibles.", - noShippingMethods: "No se encontraron métodos de envío.", - phone: "Número de Teléfono", - country: "País", - selectCountry: "Seleccionar país", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país", - firstName: "Nombre", - lastName: "Apellido", - address1: "Dirección", - address2: "Departamento, piso, etc.", - city: "Ciudad", - region: "Provincia/Estado", - postalCode: "Código Postal", - notesPlaceholder: "Notas o instrucciones especiales", - addressSuggestion: "¿Quisiste decir", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No se proporcionó dirección de origen de envío.", - }, - billing: { - title: "Facturación", - description: "Descripción de facturación", - }, - payment: { - title: "Pago", - description: "Todos los pagos son seguros y encriptados.", - billingAddress: { - title: "Dirección de Facturación", - description: "Ingresá tu dirección de facturación.", - useShippingAddress: - "Usar dirección de envío como dirección de facturación", - }, - methods: { - creditCard: "Tarjeta de Crédito o Débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagos en efectivo", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No hay métodos de pago disponibles", - cardNumber: "Número de tarjeta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Fecha de vencimiento (MM / AA)", - securityCode: "Código de seguridad", - cvvPlaceholder: "CVV", - nameOnCard: "Nombre en la tarjeta", - payNow: "Pagar ahora", - standardShipping: "Envío Estándar", - cardDetails: "Detalles de la tarjeta", - payWithApplePay: "Pagar con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Error al inicializar el pago.", - orderTotal: "Total del Pedido", - subtotal: "Subtotal", - tax: "Impuestos", - shipping: "Envío", - discount: "Cupón", - processingPayment: "Procesando pago...", - completingOrder: "Completando pedido...", - freePayment: "Completa tu pedido gratuito", - }, - phone: { - placeholder: "(011) 1234-5678", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - discounts: { - placeholder: "Código de cupón", - enterCode: "Ingresar código de cupón", - apply: "Aplicar", - alreadyApplied: "Este código de cupón ya fue aplicado", - failedToApply: "Error al aplicar código de cupón", - enterCodeValidation: "Por favor ingresá un código de cupón", - }, - totals: { - subtotal: "Subtotal", - discount: "Descuento", - shipping: "Envío", - tip: "Propina", - estimatedTaxes: "Impuestos estimados", - totalDue: "Total a Pagar", - orderSummary: "Resumen del Pedido", - itemCount: "productos", - noItems: "Sin productos", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Dirección", - suggestions: "Sugerencias", - }, - form: { - useFormFieldError: "useFormField debe usarse dentro de ", - }, - pagination: { - ariaLabel: "paginación", - previousPageAriaLabel: "Ir a la página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir a la página siguiente", - next: "Siguiente", - morePages: "Más páginas", - }, - sidebar: { - useSidebarError: "useSidebar debe usarse dentro de un SidebarProvider.", - toggleSidebar: "Alternar Barra Lateral", - }, - accessibility: { - payWithApplePay: "Pagar con Apple Pay", - applePayLogo: "Logo de Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Error al obtener token de acceso", - invalidEnvironment: "Entorno inválido", - noPublicAccessToken: "No se proporcionó token de acceso público", - noSessionToken: "No se proporcionó token de sesión o ID", - errorCreatingSession: "Error al crear sesión de checkout:", - orderIdRequired: "Se requiere ID del pedido", - errorTrackingEvent: "Error al rastrear evento", - errorInTrackingSubscriber: "Error en suscriptor de rastreo", - useTrackingProviderError: - "useTracking debe usarse dentro de un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect debe usarse dentro de un PoyntCollectProvider", - useSquareProviderError: "useSquare debe usarse dentro de un SquareProvider", - errorProcessingPayment: "Error al procesar el pago", - stripeConfigMissing: - "Falta configuración de Stripe. Por favor verificá tu configuración.", - paymentSuccessful: "Pago exitoso", - paymentFailed: "Error en el pago", - paypalConfigMissing: - "Falta configuración de PayPal. Por favor verificá tu configuración.", - stripeNotReady: "Stripe no está listo", - cardElementNotFound: "CardElement no encontrado", - errorProcessingCardPayment: "Error al procesar pago con tarjeta.", - errorProcessingExpressPayment: "Error al procesar pago express.", - failedToInitializePayment: "Error al inicializar el pago.", - invalidPhoneNumber: "número de teléfono inválido", - }, - validation: { - phoneRequired: "Se requiere número de teléfono", - emailRequired: "Ingresá un email", - emailInvalid: "Ingresá un email válido", - phoneTooLong: "Número de teléfono demasiado largo", - invalidShippingAddress: "Dirección de envío inválida", - invalidBillingAddress: "Dirección de facturación inválida", - selectPaymentMethod: "Seleccioná un método de pago", - enterValidBillingPhone: - "Ingresá un número de teléfono de facturación válido", - enterValidShippingPhone: "Ingresá un número de teléfono de envío válido", - enterFirstName: "Ingresá un nombre", - enterLastName: "Ingresá un apellido", - enterAddress: "Ingresá una dirección", - enterCity: "Ingresá una ciudad", - enterZipCode: "Ingresá un código postal", - enterZipPostalCode: "Ingresá un código postal", - selectState: "Seleccioná una provincia/región", - selectCountry: "Seleccioná un país", - enterCountry: "Ingresá un país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error del servidor", - SESSION_NOT_FOUND: "Sesión no encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Error al recuperar sesión de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesión de checkout no encontrada", - CHECKOUT_SESSION_FETCH_ERROR: "Error general al obtener sesión de checkout", - DRAFT_ORDER_NOT_FOUND: "Borrador de pedido no encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "Error al crear sesión de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Datos de sesión creada no encontrados", - CHECKOUT_SESSION_CREATION_ERROR: - "Error general al crear sesión de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Error al actualizar sesión de checkout", - UPDATED_SESSION_NOT_FOUND: "Sesión actualizada no encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: - "Error general al actualizar sesión de checkout", - ORDER_API_NOT_FOUND: "Fuente de datos de API de pedidos no encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "Error al recuperar borrador de pedido", - DATA_SOURCES_NOT_FOUND: "Fuentes de datos no encontradas", - TRANSACTION_API_NOT_FOUND: - "Fuente de datos de API de transacciones no encontrada", - TRANSACTION_PROCESSING_FAILED: "Error al procesar transacción", - TRANSACTION_CREATION_FAILED: "Error al encontrar o crear transacción", - ORDER_OPENING_FAILED: "Error al abrir pedido", - INVALID_FULFILLMENT_LOCATION: "Ubicación de cumplimiento inválida", - NO_VALID_PICKUP_LOCATION: "No hay ubicación de retiro válida disponible", - DRAFT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido", - LINE_ITEMS_FETCH_FAILED: "Error al obtener elementos del pedido", - CURRENT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido actual", - DRAFT_ORDER_UPDATE_FAILED: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_FAILED: "Error al aplicar cupón", - CONTEXT_UNAVAILABLE: "Sesión o fuentes de datos no disponibles", - SHIPPING_LINES_UPDATE_FAILED: "Error al actualizar líneas de envío", - ORDER_TOTALS_UPDATE_FAILED: "Error al actualizar totales del pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "Error al aplicar método de envío", - SKU_FETCH_FAILED: "Error al obtener SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Error al calcular tarifas de envío", - SHIPPING_METHOD_NOT_FOUND: "Método de envío no encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "Error al eliminar método de envío", - SHIPPING_ADDRESS_REQUIRED: "Se requiere dirección de envío", - INVENTORY_VALIDATION_ERROR: "Error de validación de inventario", - INSUFFICIENT_INVENTORY: "Inventario insuficiente", - INVALID_ORDER_STATUS: "Estado de pedido inválido", - TRANSACTION_CREATION_ERROR: "Error de creación de transacción", - TRANSACTION_PROCESSING_ERROR: "Error de procesamiento de transacción", - UNKNOWN_ERROR: "Error desconocido", - FULFILLMENT_CREATION_ERROR: "Error de creación de cumplimiento", - TAX_CALCULATION_ERROR: "Error de cálculo de impuestos", - ADDRESS_VERIFICATION_ERROR: "Error de verificación de dirección", - ADDRESS_MATCHES_ERROR: "Error de coincidencias de dirección", - SHIPPING_CONFLICT_ERROR: "Error de conflicto de envío", - SHIPPING_ERROR: "Error general de envío", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error de cálculo de ajuste de precio", - ORDER_FETCH_ERROR: "Error al obtener pedido", - DRAFT_ORDER_UPDATE_ERROR: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_ERROR: "Error de aplicación de cupón", - DRAFT_ORDER_OPEN_ERROR: "Error al abrir borrador de pedido", - ORDER_UPDATE_ERROR: "Error al actualizar pedido", - CATALOG_FETCH_ERROR: "Error al obtener catálogo", - STORE_ID_NOT_FOUND: "ID de tienda no encontrado", - ORDER_NOT_DRAFT: "El pedido no está en estado de borrador", - NO_LINE_ITEMS: "No se encontraron artículos", - BAD_USER_INPUT: "Entrada de usuario inválida", - MISSING_SHIPPING_ADDRESS: "Se requiere dirección de envío", - MISSING_REQUIRED_FIELD: "Falta campo obligatorio", - CATALOG_API_ERROR: "Error de servicio de catálogo", - TAX_SERVICE_UNAVAILABLE: "Servicio de impuestos no disponible", - SHIPPING_SERVICE_UNAVAILABLE: "Servicio de envío no disponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servicio de ajustes de precios no disponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Error al calcular ajustes de precios", - SERVICE_UNAVAILABLE: "Servicio temporalmente no disponible", - RATE_LIMITED: "Demasiadas solicitudes, por favor intentá más tarde", - TIMEOUT: "Tiempo de espera agotado", - INTERNAL_ERROR: "Error interno del servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Se requiere código postal de envío", - SHIPPING_COUNTRY_CODE_REQUIRED: "Se requiere código de país de envío", - SHIPPING_METHOD_REQUIRED: "Se requiere método de envío", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de envío", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de facturación", - }, + general: { + optional: 'opcional', + notes: 'Notas', + quantity: 'Cantidad', + free: 'GRATIS', + closed: 'Cerrado', + apply: 'Aplicar', + checkoutDisabled: 'El checkout está deshabilitado actualmente. Pedimos disculpas por las molestias.', + }, + contact: { + title: 'Contacto', + description: '', + email: 'Email', + }, + pickup: { + title: 'Retiro en Local', + description: 'Haremos todo lo posible para cumplir con el horario de retiro solicitado. Los horarios reales pueden variar.', + location: 'Ubicación de Retiro', + date: 'Fecha de Retiro', + time: 'Horario Preferido de Retiro', + selectStore: 'Seleccioná una ubicación de local', + selectDate: 'Seleccioná una fecha', + selectTime: 'Seleccioná un horario de retiro', + storeHours: 'Horarios del Local', + seeDetails: 'Ver detalles', + noTimeSlots: 'No hay horarios disponibles para la fecha seleccionada. Por favor seleccioná otra fecha.', + hoursDisplayed: 'Horarios mostrados en tu zona horaria local.', + storeOperatesIn: 'El local opera en zona horaria {timezone}.', + asap: 'LO ANTES POSIBLE', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + days: { + sunday: 'Domingo', + monday: 'Lunes', + tuesday: 'Martes', + wednesday: 'Miércoles', + thursday: 'Jueves', + friday: 'Viernes', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envío', + shipToAddress: 'Enviar a tu dirección', + localPickup: 'Retiro en Local', + pickupFromStore: 'Retirar en ubicación del local', + }, + tips: { + title: 'Agregar propina', + noTip: 'Sin Propina', + customAmount: 'Monto Personalizado', + customTipAmount: 'Monto de Propina Personalizado', + placeholder: '$0,00', + }, + shipping: { + title: 'Envío', + description: 'Dirección de envío', + method: 'Método de envío', + noShippingMethodAddress: 'Ingresá tu dirección para ver los métodos de envío disponibles.', + noShippingMethods: 'No se encontraron métodos de envío.', + phone: 'Número de Teléfono', + country: 'País', + selectCountry: 'Seleccionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país', + firstName: 'Nombre', + lastName: 'Apellido', + address1: 'Dirección', + address2: 'Departamento, piso, etc.', + city: 'Ciudad', + region: 'Provincia/Estado', + postalCode: 'Código Postal', + notesPlaceholder: 'Notas o instrucciones especiales', + addressSuggestion: '¿Quisiste decir', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No se proporcionó dirección de origen de envío.', + }, + billing: { + title: 'Facturación', + description: 'Descripción de facturación', + }, + payment: { + title: 'Pago', + description: 'Todos los pagos son seguros y encriptados.', + billingAddress: { + title: 'Dirección de Facturación', + description: 'Ingresá tu dirección de facturación.', + useShippingAddress: 'Usar dirección de envío como dirección de facturación', + }, + methods: { + creditCard: 'Tarjeta de Crédito o Débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagos en efectivo', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No hay métodos de pago disponibles', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Fecha de vencimiento (MM / AA)', + securityCode: 'Código de seguridad', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nombre en la tarjeta', + payNow: 'Pagar ahora', + standardShipping: 'Envío Estándar', + cardDetails: 'Detalles de la tarjeta', + payWithApplePay: 'Pagar con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Error al inicializar el pago.', + orderTotal: 'Total del Pedido', + subtotal: 'Subtotal', + tax: 'Impuestos', + shipping: 'Envío', + discount: 'Cupón', + processingPayment: 'Procesando pago...', + completingOrder: 'Completando pedido...', + completeOrder: 'Completar tu pedido', + freePayment: 'Completa tu pedido gratuito', + }, + phone: { + placeholder: '(011) 1234-5678', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + discounts: { + placeholder: 'Código de cupón', + enterCode: 'Ingresar código de cupón', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupón ya fue aplicado', + failedToApply: 'Error al aplicar código de cupón', + enterCodeValidation: 'Por favor ingresá un código de cupón', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Descuento', + shipping: 'Envío', + tip: 'Propina', + estimatedTaxes: 'Impuestos estimados', + totalDue: 'Total a Pagar', + orderSummary: 'Resumen del Pedido', + itemCount: 'productos', + noItems: 'Sin productos', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Dirección', + suggestions: 'Sugerencias', + }, + form: { + useFormFieldError: 'useFormField debe usarse dentro de ', + }, + pagination: { + ariaLabel: 'paginación', + previousPageAriaLabel: 'Ir a la página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir a la página siguiente', + next: 'Siguiente', + morePages: 'Más páginas', + }, + sidebar: { + useSidebarError: 'useSidebar debe usarse dentro de un SidebarProvider.', + toggleSidebar: 'Alternar Barra Lateral', + }, + accessibility: { + payWithApplePay: 'Pagar con Apple Pay', + applePayLogo: 'Logo de Apple Pay', + close: 'Cerrar', + additionalTipOptions: 'Opciones de propina adicionales', + breadcrumb: 'ruta de navegación', + more: 'Más', + previousSlide: 'Diapositiva anterior', + nextSlide: 'Siguiente diapositiva', + }, + }, + errors: { + failedToGetAccessToken: 'Error al obtener token de acceso', + invalidEnvironment: 'Entorno inválido', + noPublicAccessToken: 'No se proporcionó token de acceso público', + noSessionToken: 'No se proporcionó token de sesión o ID', + errorCreatingSession: 'Error al crear sesión de checkout:', + orderIdRequired: 'Se requiere ID del pedido', + errorTrackingEvent: 'Error al rastrear evento', + errorInTrackingSubscriber: 'Error en suscriptor de rastreo', + useTrackingProviderError: 'useTracking debe usarse dentro de un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect debe usarse dentro de un PoyntCollectProvider', + useSquareProviderError: 'useSquare debe usarse dentro de un SquareProvider', + errorProcessingPayment: 'Error al procesar el pago', + stripeConfigMissing: 'Falta configuración de Stripe. Por favor verificá tu configuración.', + paymentSuccessful: 'Pago exitoso', + paymentFailed: 'Error en el pago', + paypalConfigMissing: 'Falta configuración de PayPal. Por favor verificá tu configuración.', + stripeNotReady: 'Stripe no está listo', + cardElementNotFound: 'CardElement no encontrado', + errorProcessingCardPayment: 'Error al procesar pago con tarjeta.', + errorProcessingExpressPayment: 'Error al procesar pago express.', + failedToInitializePayment: 'Error al inicializar el pago.', + invalidPhoneNumber: 'número de teléfono inválido', + }, + validation: { + phoneRequired: 'Se requiere número de teléfono', + emailRequired: 'Ingresá un email', + emailInvalid: 'Ingresá un email válido', + phoneTooLong: 'Número de teléfono demasiado largo', + invalidShippingAddress: 'Dirección de envío inválida', + invalidBillingAddress: 'Dirección de facturación inválida', + selectPaymentMethod: 'Seleccioná un método de pago', + enterValidBillingPhone: 'Ingresá un número de teléfono de facturación válido', + enterValidShippingPhone: 'Ingresá un número de teléfono de envío válido', + enterFirstName: 'Ingresá un nombre', + enterLastName: 'Ingresá un apellido', + enterAddress: 'Ingresá una dirección', + enterCity: 'Ingresá una ciudad', + enterZipCode: 'Ingresá un código postal', + enterZipPostalCode: 'Ingresá un código postal', + selectState: 'Seleccioná una provincia/región', + selectCountry: 'Seleccioná un país', + enterCountry: 'Ingresá un país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error del servidor', + SESSION_NOT_FOUND: 'Sesión no encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Error al recuperar sesión de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesión de checkout no encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Error general al obtener sesión de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido no encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'Error al crear sesión de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Datos de sesión creada no encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Error general al crear sesión de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Error al actualizar sesión de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesión actualizada no encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error general al actualizar sesión de checkout', + ORDER_API_NOT_FOUND: 'Fuente de datos de API de pedidos no encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Error al recuperar pedido', + DATA_SOURCES_NOT_FOUND: 'Fuentes de datos no encontradas', + TRANSACTION_API_NOT_FOUND: 'Fuente de datos de API de transacciones no encontrada', + TRANSACTION_PROCESSING_FAILED: 'Error al procesar transacción', + TRANSACTION_CREATION_FAILED: 'Error al encontrar o crear transacción', + ORDER_OPENING_FAILED: 'Error al abrir pedido', + INVALID_FULFILLMENT_LOCATION: 'Ubicación de cumplimiento inválida', + NO_VALID_PICKUP_LOCATION: 'No hay ubicación de retiro válida disponible', + DRAFT_ORDER_FETCH_FAILED: 'Error al obtener pedido', + LINE_ITEMS_FETCH_FAILED: 'Error al obtener elementos del pedido', + CURRENT_ORDER_FETCH_FAILED: 'Error al obtener pedido actual', + DRAFT_ORDER_UPDATE_FAILED: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_FAILED: 'Error al aplicar cupón', + CONTEXT_UNAVAILABLE: 'Sesión o fuentes de datos no disponibles', + SHIPPING_LINES_UPDATE_FAILED: 'Error al actualizar líneas de envío', + ORDER_TOTALS_UPDATE_FAILED: 'Error al actualizar totales del pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'Error al calcular totales del pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'Error al aplicar método de envío', + SKU_FETCH_FAILED: 'Error al obtener SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Error al calcular tarifas de envío', + SHIPPING_METHOD_NOT_FOUND: 'Método de envío no encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'Error al eliminar método de envío', + SHIPPING_ADDRESS_REQUIRED: 'Se requiere dirección de envío', + INVENTORY_VALIDATION_ERROR: 'Error de validación de inventario', + INSUFFICIENT_INVENTORY: 'Inventario insuficiente', + INVALID_ORDER_STATUS: 'Estado de pedido inválido', + TRANSACTION_CREATION_ERROR: 'Error de creación de transacción', + TRANSACTION_PROCESSING_ERROR: 'Error de procesamiento de transacción', + UNKNOWN_ERROR: 'Error desconocido', + FULFILLMENT_CREATION_ERROR: 'Error de creación de cumplimiento', + TAX_CALCULATION_ERROR: 'Error de cálculo de impuestos', + ADDRESS_VERIFICATION_ERROR: 'Error de verificación de dirección', + ADDRESS_MATCHES_ERROR: 'Error de coincidencias de dirección', + SHIPPING_CONFLICT_ERROR: 'Error de conflicto de envío', + SHIPPING_ERROR: 'Error general de envío', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error de cálculo de ajuste de precio', + ORDER_FETCH_ERROR: 'Error al obtener pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_ERROR: 'Error de aplicación de cupón', + DRAFT_ORDER_OPEN_ERROR: 'Error al abrir pedido', + ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + CATALOG_FETCH_ERROR: 'Error al obtener catálogo', + STORE_ID_NOT_FOUND: 'ID de tienda no encontrado', + ORDER_NOT_DRAFT: 'El pedido no está en estado válido', + NO_LINE_ITEMS: 'No se encontraron artículos', + BAD_USER_INPUT: 'Entrada de usuario inválida', + MISSING_SHIPPING_ADDRESS: 'Se requiere dirección de envío', + MISSING_REQUIRED_FIELD: 'Falta campo obligatorio', + CATALOG_API_ERROR: 'Error de servicio de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Servicio de impuestos no disponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Servicio de envío no disponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servicio de ajustes de precios no disponible', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Error al calcular ajustes de precios', + SERVICE_UNAVAILABLE: 'Servicio temporalmente no disponible', + RATE_LIMITED: 'Demasiadas solicitudes, por favor intentá más tarde', + TIMEOUT: 'Tiempo de espera agotado', + INTERNAL_ERROR: 'Error interno del servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Se requiere código postal de envío', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Se requiere código de país de envío', + SHIPPING_METHOD_REQUIRED: 'Se requiere método de envío', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de envío', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de facturación', + MISSING_SHIPPING_INFO: 'No se pudo aplicar la dirección o método de envío', + DEPENDENCY_ERROR: 'No podemos procesar su pedido en este momento. Espere un momento e inténtelo de nuevo', + }, }; diff --git a/packages/localizations/src/esCl.ts b/packages/localizations/src/esCl.ts index 9eee881c..f5f0debd 100644 --- a/packages/localizations/src/esCl.ts +++ b/packages/localizations/src/esCl.ts @@ -1,325 +1,317 @@ export const esCl = { - general: { - optional: "opcional", - notes: "Notas", - quantity: "Cantidad", - free: "GRATIS", - closed: "Cerrado", - apply: "Aplicar", - checkoutDisabled: - "El checkout está actualmente deshabilitado. Pedimos disculpas por las molestias.", - }, - contact: { - title: "Contacto", - description: "", - email: "Correo electrónico", - }, - pickup: { - title: "Retiro en Tienda", - description: - "Haremos todos los esfuerzos para cumplir con el horario de retiro solicitado. Los horarios de retiro pueden variar.", - location: "Ubicación de Retiro", - date: "Fecha de Retiro", - time: "Horario Preferido de Retiro", - selectStore: "Selecciona una ubicación de tienda", - selectDate: "Selecciona una fecha", - selectTime: "Selecciona un horario de retiro", - storeHours: "Horarios de la Tienda", - seeDetails: "Ver detalles", - noTimeSlots: - "No hay horarios disponibles para la fecha seleccionada. Por favor selecciona otra fecha.", - hoursDisplayed: "Horarios mostrados en tu zona horaria local.", - storeOperatesIn: "La tienda opera en zona horaria {timezone}.", - asap: "LO ANTES POSIBLE", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - days: { - sunday: "Domingo", - monday: "Lunes", - tuesday: "Martes", - wednesday: "Miércoles", - thursday: "Jueves", - friday: "Viernes", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envío", - shipToAddress: "Enviar a tu dirección", - localPickup: "Retiro en Tienda", - pickupFromStore: "Retirar en ubicación de tienda", - }, - tips: { - title: "Agregar propina", - noTip: "Sin Propina", - customAmount: "Monto Personalizado", - customTipAmount: "Monto de Propina Personalizado", - placeholder: "$0.00", - }, - shipping: { - title: "Envío", - description: "Dirección de envío", - method: "Método de envío", - noShippingMethodAddress: - "Ingresa tu dirección para ver los métodos de envío disponibles.", - noShippingMethods: "No se encontraron métodos de envío.", - phone: "Número de Teléfono", - country: "País", - selectCountry: "Seleccionar país", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país", - firstName: "Nombre", - lastName: "Apellido", - address1: "Dirección", - address2: "Departamento, oficina, etc.", - city: "Ciudad", - region: "Región", - postalCode: "Código Postal", - notesPlaceholder: "Notas o instrucciones especiales", - addressSuggestion: "¿Quisiste decir", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No se proporcionó dirección de origen de envío.", - }, - billing: { - title: "Facturación", - description: "Descripción de facturación", - }, - payment: { - title: "Pago", - description: "Todos los pagos son seguros y encriptados.", - billingAddress: { - title: "Dirección de Facturación", - description: "Ingresa tu dirección de facturación.", - useShippingAddress: - "Usar dirección de envío como dirección de facturación", - }, - methods: { - creditCard: "Tarjeta de Crédito o Débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagos offline", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No hay métodos de pago disponibles", - cardNumber: "Número de tarjeta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Fecha de vencimiento (MM / AA)", - securityCode: "Código de seguridad", - cvvPlaceholder: "CVV", - nameOnCard: "Nombre en la tarjeta", - payNow: "Pagar ahora", - standardShipping: "Envío Estándar", - cardDetails: "Detalles de la tarjeta", - payWithApplePay: "Pagar con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Error al inicializar el pago.", - orderTotal: "Total del Pedido", - subtotal: "Subtotal", - tax: "Impuesto", - shipping: "Envío", - discount: "Cupón", - processingPayment: "Procesando pago...", - completingOrder: "Completando pedido...", - freePayment: "Completa tu pedido gratuito", - }, - phone: { - placeholder: "+56 9 1234 5678", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - discounts: { - placeholder: "Código de cupón", - enterCode: "Ingresa código de cupón", - apply: "Aplicar", - alreadyApplied: "Este código de cupón ya ha sido aplicado", - failedToApply: "Error al aplicar código de cupón", - enterCodeValidation: "Por favor ingresa un código de cupón", - }, - totals: { - subtotal: "Subtotal", - discount: "Descuento", - shipping: "Envío", - tip: "Propina", - estimatedTaxes: "Impuestos estimados", - totalDue: "Total a Pagar", - orderSummary: "Resumen del Pedido", - itemCount: "artículos", - noItems: "Sin artículos", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Dirección", - suggestions: "Sugerencias", - }, - form: { - useFormFieldError: "useFormField debe ser usado dentro de ", - }, - pagination: { - ariaLabel: "paginación", - previousPageAriaLabel: "Ir a la página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir a la página siguiente", - next: "Siguiente", - morePages: "Más páginas", - }, - sidebar: { - useSidebarError: - "useSidebar debe ser usado dentro de un SidebarProvider.", - toggleSidebar: "Alternar Barra Lateral", - }, - accessibility: { - payWithApplePay: "Pagar con Apple Pay", - applePayLogo: "Logo de Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Error al obtener token de acceso", - invalidEnvironment: "Ambiente inválido", - noPublicAccessToken: "No se proporcionó token de acceso público", - noSessionToken: "No se proporcionó token de sesión o ID", - errorCreatingSession: "Error al crear sesión de checkout:", - orderIdRequired: "Se requiere ID de pedido", - errorTrackingEvent: "Error al rastrear evento", - errorInTrackingSubscriber: "Error en suscriptor de rastreo", - useTrackingProviderError: - "useTracking debe ser usado dentro de un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect debe ser usado dentro de un PoyntCollectProvider", - useSquareProviderError: - "useSquare debe ser usado dentro de un SquareProvider", - errorProcessingPayment: "Error al procesar pago", - stripeConfigMissing: - "Falta configuración de Stripe. Por favor revisa tu configuración.", - paymentSuccessful: "Pago exitoso", - paymentFailed: "Pago falló", - paypalConfigMissing: - "Falta configuración de PayPal. Por favor revisa tu configuración.", - stripeNotReady: "Stripe no está listo", - cardElementNotFound: "CardElement no encontrado", - errorProcessingCardPayment: "Error al procesar pago con tarjeta.", - errorProcessingExpressPayment: "Error al procesar pago express.", - failedToInitializePayment: "Error al inicializar pago.", - invalidPhoneNumber: "número de teléfono inválido", - }, - validation: { - phoneRequired: "Se requiere número de teléfono", - emailRequired: "Ingresa un correo electrónico", - emailInvalid: "Ingresa un correo electrónico válido", - phoneTooLong: "Número de teléfono muy largo", - invalidShippingAddress: "Dirección de envío inválida", - invalidBillingAddress: "Dirección de facturación inválida", - selectPaymentMethod: "Selecciona un método de pago", - enterValidBillingPhone: - "Ingresa un número de teléfono de facturación válido", - enterValidShippingPhone: "Ingresa un número de teléfono de envío válido", - enterFirstName: "Ingresa un nombre", - enterLastName: "Ingresa un apellido", - enterAddress: "Ingresa una dirección", - enterCity: "Ingresa una ciudad", - enterZipCode: "Ingresa un código postal", - enterZipPostalCode: "Ingresa un código postal", - selectState: "Selecciona una región/provincia", - selectCountry: "Selecciona un país", - enterCountry: "Ingresa un país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error del servidor", - SESSION_NOT_FOUND: "Sesión no encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Error al recuperar sesión de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesión de checkout no encontrada", - CHECKOUT_SESSION_FETCH_ERROR: "Error general al obtener sesión de checkout", - DRAFT_ORDER_NOT_FOUND: "Borrador de pedido no encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "Error al crear sesión de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Datos de sesión creada no encontrados", - CHECKOUT_SESSION_CREATION_ERROR: - "Error general al crear sesión de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Error al actualizar sesión de checkout", - UPDATED_SESSION_NOT_FOUND: "Sesión actualizada no encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: - "Error general al actualizar sesión de checkout", - ORDER_API_NOT_FOUND: "Fuente de datos de API de pedido no encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "Error al recuperar borrador de pedido", - DATA_SOURCES_NOT_FOUND: "Fuentes de datos no encontradas", - TRANSACTION_API_NOT_FOUND: - "Fuente de datos de API de transacción no encontrada", - TRANSACTION_PROCESSING_FAILED: "Error al procesar transacción", - TRANSACTION_CREATION_FAILED: "Error al encontrar o crear transacción", - ORDER_OPENING_FAILED: "Error al abrir pedido", - INVALID_FULFILLMENT_LOCATION: "Ubicación de cumplimiento inválida", - NO_VALID_PICKUP_LOCATION: "No hay ubicación de retiro válida disponible", - DRAFT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido", - LINE_ITEMS_FETCH_FAILED: "Error al obtener artículos de línea", - CURRENT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido actual", - DRAFT_ORDER_UPDATE_FAILED: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_FAILED: "Error al aplicar cupón", - CONTEXT_UNAVAILABLE: "Sesión o fuentes de datos no disponibles", - SHIPPING_LINES_UPDATE_FAILED: "Error al actualizar líneas de envío", - ORDER_TOTALS_UPDATE_FAILED: "Error al actualizar totales de pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "Error al aplicar método de envío", - SKU_FETCH_FAILED: "Error al obtener SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Error al calcular tarifas de envío", - SHIPPING_METHOD_NOT_FOUND: "Método de envío no encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "Error al eliminar método de envío", - SHIPPING_ADDRESS_REQUIRED: "Se requiere dirección de envío", - INVENTORY_VALIDATION_ERROR: "Error de validación de inventario", - INSUFFICIENT_INVENTORY: "Inventario insuficiente", - INVALID_ORDER_STATUS: "Estado de pedido inválido", - TRANSACTION_CREATION_ERROR: "Error de creación de transacción", - TRANSACTION_PROCESSING_ERROR: "Error de procesamiento de transacción", - UNKNOWN_ERROR: "Error desconocido", - FULFILLMENT_CREATION_ERROR: "Error de creación de cumplimiento", - TAX_CALCULATION_ERROR: "Error de cálculo de impuesto", - ADDRESS_VERIFICATION_ERROR: "Error de verificación de dirección", - ADDRESS_MATCHES_ERROR: "Error de coincidencias de dirección", - SHIPPING_CONFLICT_ERROR: "Error de conflicto de envío", - SHIPPING_ERROR: "Error general de envío", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error de cálculo de ajuste de precio", - ORDER_FETCH_ERROR: "Error al obtener pedido", - DRAFT_ORDER_UPDATE_ERROR: "Error de actualización de borrador de pedido", - DISCOUNT_APPLICATION_ERROR: "Error de aplicación de cupón", - DRAFT_ORDER_OPEN_ERROR: "Error de apertura de borrador de pedido", - ORDER_UPDATE_ERROR: "Error de actualización de pedido", - CATALOG_FETCH_ERROR: "Error al obtener catálogo", - STORE_ID_NOT_FOUND: "ID de tienda no encontrado", - ORDER_NOT_DRAFT: "El pedido no está en estado de borrador", - NO_LINE_ITEMS: "No se encontraron artículos", - BAD_USER_INPUT: "Entrada de usuario inválida", - MISSING_SHIPPING_ADDRESS: "Se requiere dirección de envío", - MISSING_REQUIRED_FIELD: "Falta campo obligatorio", - CATALOG_API_ERROR: "Error de servicio de catálogo", - TAX_SERVICE_UNAVAILABLE: "Servicio de impuestos no disponible", - SHIPPING_SERVICE_UNAVAILABLE: "Servicio de envío no disponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servicio de ajustes de precios no disponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Error al calcular ajustes de precios", - SERVICE_UNAVAILABLE: "Servicio temporalmente no disponible", - RATE_LIMITED: "Demasiadas solicitudes, por favor inténtelo más tarde", - TIMEOUT: "Tiempo de espera agotado", - INTERNAL_ERROR: "Error interno del servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Se requiere código postal de envío", - SHIPPING_COUNTRY_CODE_REQUIRED: "Se requiere código de país de envío", - SHIPPING_METHOD_REQUIRED: "Se requiere método de envío", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de envío", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de facturación", - }, + general: { + optional: 'opcional', + notes: 'Notas', + quantity: 'Cantidad', + free: 'GRATIS', + closed: 'Cerrado', + apply: 'Aplicar', + checkoutDisabled: 'El checkout está actualmente deshabilitado. Pedimos disculpas por las molestias.', + }, + contact: { + title: 'Contacto', + description: '', + email: 'Correo electrónico', + }, + pickup: { + title: 'Retiro en Tienda', + description: + 'Haremos todos los esfuerzos para cumplir con el horario de retiro solicitado. Los horarios de retiro pueden variar.', + location: 'Ubicación de Retiro', + date: 'Fecha de Retiro', + time: 'Horario Preferido de Retiro', + selectStore: 'Selecciona una ubicación de tienda', + selectDate: 'Selecciona una fecha', + selectTime: 'Selecciona un horario de retiro', + storeHours: 'Horarios de la Tienda', + seeDetails: 'Ver detalles', + noTimeSlots: 'No hay horarios disponibles para la fecha seleccionada. Por favor selecciona otra fecha.', + hoursDisplayed: 'Horarios mostrados en tu zona horaria local.', + storeOperatesIn: 'La tienda opera en zona horaria {timezone}.', + asap: 'LO ANTES POSIBLE', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + days: { + sunday: 'Domingo', + monday: 'Lunes', + tuesday: 'Martes', + wednesday: 'Miércoles', + thursday: 'Jueves', + friday: 'Viernes', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envío', + shipToAddress: 'Enviar a tu dirección', + localPickup: 'Retiro en Tienda', + pickupFromStore: 'Retirar en ubicación de tienda', + }, + tips: { + title: 'Agregar propina', + noTip: 'Sin Propina', + customAmount: 'Monto Personalizado', + customTipAmount: 'Monto de Propina Personalizado', + placeholder: '$0.00', + }, + shipping: { + title: 'Envío', + description: 'Dirección de envío', + method: 'Método de envío', + noShippingMethodAddress: 'Ingresa tu dirección para ver los métodos de envío disponibles.', + noShippingMethods: 'No se encontraron métodos de envío.', + phone: 'Número de Teléfono', + country: 'País', + selectCountry: 'Seleccionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país', + firstName: 'Nombre', + lastName: 'Apellido', + address1: 'Dirección', + address2: 'Departamento, oficina, etc.', + city: 'Ciudad', + region: 'Región', + postalCode: 'Código Postal', + notesPlaceholder: 'Notas o instrucciones especiales', + addressSuggestion: '¿Quisiste decir', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No se proporcionó dirección de origen de envío.', + }, + billing: { + title: 'Facturación', + description: 'Descripción de facturación', + }, + payment: { + title: 'Pago', + description: 'Todos los pagos son seguros y encriptados.', + billingAddress: { + title: 'Dirección de Facturación', + description: 'Ingresa tu dirección de facturación.', + useShippingAddress: 'Usar dirección de envío como dirección de facturación', + }, + methods: { + creditCard: 'Tarjeta de Crédito o Débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagos offline', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No hay métodos de pago disponibles', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Fecha de vencimiento (MM / AA)', + securityCode: 'Código de seguridad', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nombre en la tarjeta', + payNow: 'Pagar ahora', + standardShipping: 'Envío Estándar', + cardDetails: 'Detalles de la tarjeta', + payWithApplePay: 'Pagar con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Error al inicializar el pago.', + orderTotal: 'Total del Pedido', + subtotal: 'Subtotal', + tax: 'Impuesto', + shipping: 'Envío', + discount: 'Cupón', + processingPayment: 'Procesando pago...', + completingOrder: 'Completando pedido...', + completeOrder: 'Completar tu pedido', + freePayment: 'Completa tu pedido gratuito', + }, + phone: { + placeholder: '+56 9 1234 5678', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + discounts: { + placeholder: 'Código de cupón', + enterCode: 'Ingresa código de cupón', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupón ya ha sido aplicado', + failedToApply: 'Error al aplicar código de cupón', + enterCodeValidation: 'Por favor ingresa un código de cupón', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Descuento', + shipping: 'Envío', + tip: 'Propina', + estimatedTaxes: 'Impuestos estimados', + totalDue: 'Total a Pagar', + orderSummary: 'Resumen del Pedido', + itemCount: 'artículos', + noItems: 'Sin artículos', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Dirección', + suggestions: 'Sugerencias', + }, + form: { + useFormFieldError: 'useFormField debe ser usado dentro de ', + }, + pagination: { + ariaLabel: 'paginación', + previousPageAriaLabel: 'Ir a la página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir a la página siguiente', + next: 'Siguiente', + morePages: 'Más páginas', + }, + sidebar: { + useSidebarError: 'useSidebar debe ser usado dentro de un SidebarProvider.', + toggleSidebar: 'Alternar Barra Lateral', + }, + accessibility: { + payWithApplePay: 'Pagar con Apple Pay', + applePayLogo: 'Logo de Apple Pay', + close: 'Cerrar', + additionalTipOptions: 'Opciones de propina adicionales', + breadcrumb: 'ruta de navegación', + more: 'Más', + previousSlide: 'Diapositiva anterior', + nextSlide: 'Siguiente diapositiva', + }, + }, + errors: { + failedToGetAccessToken: 'Error al obtener token de acceso', + invalidEnvironment: 'Ambiente inválido', + noPublicAccessToken: 'No se proporcionó token de acceso público', + noSessionToken: 'No se proporcionó token de sesión o ID', + errorCreatingSession: 'Error al crear sesión de checkout:', + orderIdRequired: 'Se requiere ID de pedido', + errorTrackingEvent: 'Error al rastrear evento', + errorInTrackingSubscriber: 'Error en suscriptor de rastreo', + useTrackingProviderError: 'useTracking debe ser usado dentro de un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect debe ser usado dentro de un PoyntCollectProvider', + useSquareProviderError: 'useSquare debe ser usado dentro de un SquareProvider', + errorProcessingPayment: 'Error al procesar pago', + stripeConfigMissing: 'Falta configuración de Stripe. Por favor revisa tu configuración.', + paymentSuccessful: 'Pago exitoso', + paymentFailed: 'Pago falló', + paypalConfigMissing: 'Falta configuración de PayPal. Por favor revisa tu configuración.', + stripeNotReady: 'Stripe no está listo', + cardElementNotFound: 'CardElement no encontrado', + errorProcessingCardPayment: 'Error al procesar pago con tarjeta.', + errorProcessingExpressPayment: 'Error al procesar pago express.', + failedToInitializePayment: 'Error al inicializar pago.', + invalidPhoneNumber: 'número de teléfono inválido', + }, + validation: { + phoneRequired: 'Se requiere número de teléfono', + emailRequired: 'Ingresa un correo electrónico', + emailInvalid: 'Ingresa un correo electrónico válido', + phoneTooLong: 'Número de teléfono muy largo', + invalidShippingAddress: 'Dirección de envío inválida', + invalidBillingAddress: 'Dirección de facturación inválida', + selectPaymentMethod: 'Selecciona un método de pago', + enterValidBillingPhone: 'Ingresa un número de teléfono de facturación válido', + enterValidShippingPhone: 'Ingresa un número de teléfono de envío válido', + enterFirstName: 'Ingresa un nombre', + enterLastName: 'Ingresa un apellido', + enterAddress: 'Ingresa una dirección', + enterCity: 'Ingresa una ciudad', + enterZipCode: 'Ingresa un código postal', + enterZipPostalCode: 'Ingresa un código postal', + selectState: 'Selecciona una región/provincia', + selectCountry: 'Selecciona un país', + enterCountry: 'Ingresa un país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error del servidor', + SESSION_NOT_FOUND: 'Sesión no encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Error al recuperar sesión de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesión de checkout no encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Error general al obtener sesión de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido no encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'Error al crear sesión de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Datos de sesión creada no encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Error general al crear sesión de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Error al actualizar sesión de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesión actualizada no encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error general al actualizar sesión de checkout', + ORDER_API_NOT_FOUND: 'Fuente de datos de API de pedido no encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Error al recuperar pedido', + DATA_SOURCES_NOT_FOUND: 'Fuentes de datos no encontradas', + TRANSACTION_API_NOT_FOUND: 'Fuente de datos de API de transacción no encontrada', + TRANSACTION_PROCESSING_FAILED: 'Error al procesar transacción', + TRANSACTION_CREATION_FAILED: 'Error al encontrar o crear transacción', + ORDER_OPENING_FAILED: 'Error al abrir pedido', + INVALID_FULFILLMENT_LOCATION: 'Ubicación de cumplimiento inválida', + NO_VALID_PICKUP_LOCATION: 'No hay ubicación de retiro válida disponible', + DRAFT_ORDER_FETCH_FAILED: 'Error al obtener pedido', + LINE_ITEMS_FETCH_FAILED: 'Error al obtener artículos de línea', + CURRENT_ORDER_FETCH_FAILED: 'Error al obtener pedido actual', + DRAFT_ORDER_UPDATE_FAILED: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_FAILED: 'Error al aplicar cupón', + CONTEXT_UNAVAILABLE: 'Sesión o fuentes de datos no disponibles', + SHIPPING_LINES_UPDATE_FAILED: 'Error al actualizar líneas de envío', + ORDER_TOTALS_UPDATE_FAILED: 'Error al actualizar totales de pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'Error al calcular totales de pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'Error al aplicar método de envío', + SKU_FETCH_FAILED: 'Error al obtener SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Error al calcular tarifas de envío', + SHIPPING_METHOD_NOT_FOUND: 'Método de envío no encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'Error al eliminar método de envío', + SHIPPING_ADDRESS_REQUIRED: 'Se requiere dirección de envío', + INVENTORY_VALIDATION_ERROR: 'Error de validación de inventario', + INSUFFICIENT_INVENTORY: 'Inventario insuficiente', + INVALID_ORDER_STATUS: 'Estado de pedido inválido', + TRANSACTION_CREATION_ERROR: 'Error de creación de transacción', + TRANSACTION_PROCESSING_ERROR: 'Error de procesamiento de transacción', + UNKNOWN_ERROR: 'Error desconocido', + FULFILLMENT_CREATION_ERROR: 'Error de creación de cumplimiento', + TAX_CALCULATION_ERROR: 'Error de cálculo de impuesto', + ADDRESS_VERIFICATION_ERROR: 'Error de verificación de dirección', + ADDRESS_MATCHES_ERROR: 'Error de coincidencias de dirección', + SHIPPING_CONFLICT_ERROR: 'Error de conflicto de envío', + SHIPPING_ERROR: 'Error general de envío', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error de cálculo de ajuste de precio', + ORDER_FETCH_ERROR: 'Error al obtener pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Error de actualización de pedido', + DISCOUNT_APPLICATION_ERROR: 'Error de aplicación de cupón', + DRAFT_ORDER_OPEN_ERROR: 'Error de apertura de pedido', + ORDER_UPDATE_ERROR: 'Error de actualización de pedido', + CATALOG_FETCH_ERROR: 'Error al obtener catálogo', + STORE_ID_NOT_FOUND: 'ID de tienda no encontrado', + ORDER_NOT_DRAFT: 'El pedido no está en estado válido', + NO_LINE_ITEMS: 'No se encontraron artículos', + BAD_USER_INPUT: 'Entrada de usuario inválida', + MISSING_SHIPPING_ADDRESS: 'Se requiere dirección de envío', + MISSING_REQUIRED_FIELD: 'Falta campo obligatorio', + CATALOG_API_ERROR: 'Error de servicio de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Servicio de impuestos no disponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Servicio de envío no disponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servicio de ajustes de precios no disponible', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Error al calcular ajustes de precios', + SERVICE_UNAVAILABLE: 'Servicio temporalmente no disponible', + RATE_LIMITED: 'Demasiadas solicitudes, por favor inténtelo más tarde', + TIMEOUT: 'Tiempo de espera agotado', + INTERNAL_ERROR: 'Error interno del servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Se requiere código postal de envío', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Se requiere código de país de envío', + SHIPPING_METHOD_REQUIRED: 'Se requiere método de envío', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de envío', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de facturación', + MISSING_SHIPPING_INFO: 'No se pudo aplicar la dirección o método de envío', + DEPENDENCY_ERROR: 'No podemos procesar su pedido en este momento. Espere un momento e inténtelo de nuevo', + }, }; diff --git a/packages/localizations/src/esCo.ts b/packages/localizations/src/esCo.ts index ed642a41..cc88b3ae 100644 --- a/packages/localizations/src/esCo.ts +++ b/packages/localizations/src/esCo.ts @@ -1,323 +1,317 @@ export const esCo = { - general: { - optional: "opcional", - notes: "Notas", - quantity: "Cantidad", - free: "GRATIS", - closed: "Cerrado", - apply: "Aplicar", - checkoutDisabled: - "El checkout está deshabilitado actualmente. Pedimos disculpas por las molestias.", - }, - contact: { - title: "Contacto", - description: "", - email: "Correo electrónico", - }, - pickup: { - title: "Recogida en tienda", - description: - "Haremos todo lo posible para cumplir con la hora de recogida esperada. Las horas reales de recogida pueden variar.", - location: "Ubicación de recogida", - date: "Fecha de recogida", - time: "Hora preferida de recogida", - selectStore: "Selecciona una ubicación de tienda", - selectDate: "Selecciona una fecha", - selectTime: "Selecciona una hora de recogida", - storeHours: "Horarios de la tienda", - seeDetails: "Ver detalles", - noTimeSlots: - "No hay horarios disponibles para la fecha seleccionada. Por favor selecciona otra fecha.", - hoursDisplayed: "Horarios mostrados en tu zona horaria local.", - storeOperatesIn: "La tienda opera en zona horaria {timezone}.", - asap: "LO MÁS PRONTO POSIBLE", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - days: { - sunday: "Domingo", - monday: "Lunes", - tuesday: "Martes", - wednesday: "Miércoles", - thursday: "Jueves", - friday: "Viernes", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envío", - shipToAddress: "Enviar a tu dirección", - localPickup: "Recogida en tienda", - pickupFromStore: "Recoger en ubicación de la tienda", - }, - tips: { - title: "Agregar propina", - noTip: "Sin propina", - customAmount: "Monto personalizado", - customTipAmount: "Monto de propina personalizado", - placeholder: "$0.00", - }, - shipping: { - title: "Envío", - description: "Dirección de envío", - method: "Método de envío", - noShippingMethodAddress: - "Ingresa tu dirección para ver los métodos de envío disponibles.", - noShippingMethods: "No se encontraron métodos de envío.", - phone: "Número de teléfono", - country: "País", - selectCountry: "Seleccionar país", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país", - firstName: "Nombre", - lastName: "Apellido", - address1: "Dirección", - address2: "Apartamento, oficina, etc.", - city: "Ciudad", - region: "Departamento/Estado", - postalCode: "Código postal", - notesPlaceholder: "Notas o instrucciones especiales", - addressSuggestion: "¿Quisiste decir", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No se proporcionó dirección de origen de envío.", - }, - billing: { - title: "Facturación", - description: "Descripción de facturación", - }, - payment: { - title: "Pago", - description: "Todos los pagos son seguros y encriptados.", - billingAddress: { - title: "Dirección de facturación", - description: "Ingresa tu dirección de facturación.", - useShippingAddress: - "Usar dirección de envío como dirección de facturación", - }, - methods: { - creditCard: "Tarjeta de crédito o débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagos sin conexión", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No hay métodos de pago disponibles", - cardNumber: "Número de tarjeta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Fecha de vencimiento (MM / AA)", - securityCode: "Código de seguridad", - cvvPlaceholder: "CVV", - nameOnCard: "Nombre en la tarjeta", - payNow: "Pagar ahora", - standardShipping: "Envío estándar", - cardDetails: "Detalles de la tarjeta", - payWithApplePay: "Pagar con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Error al inicializar el pago.", - orderTotal: "Total del pedido", - subtotal: "Subtotal", - tax: "Impuestos", - shipping: "Envío", - discount: "Cupón", - processingPayment: "Procesando pago...", - completingOrder: "Completando pedido...", - freePayment: "Completa tu pedido gratuito", - }, - phone: { - placeholder: "(057) 300 123 4567", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - discounts: { - placeholder: "Código de cupón", - enterCode: "Ingresa código de cupón", - apply: "Aplicar", - alreadyApplied: "Este código de cupón ya fue aplicado", - failedToApply: "Error al aplicar código de cupón", - enterCodeValidation: "Por favor ingresa un código de cupón", - }, - totals: { - subtotal: "Subtotal", - discount: "Descuento", - shipping: "Envío", - tip: "Propina", - estimatedTaxes: "Impuestos estimados", - totalDue: "Total a pagar", - orderSummary: "Resumen del pedido", - itemCount: "artículos", - noItems: "Sin artículos", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Dirección", - suggestions: "Sugerencias", - }, - form: { - useFormFieldError: "useFormField debe usarse dentro de ", - }, - pagination: { - ariaLabel: "paginación", - previousPageAriaLabel: "Ir a la página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir a la página siguiente", - next: "Siguiente", - morePages: "Más páginas", - }, - sidebar: { - useSidebarError: "useSidebar debe usarse dentro de un SidebarProvider.", - toggleSidebar: "Alternar barra lateral", - }, - accessibility: { - payWithApplePay: "Pagar con Apple Pay", - applePayLogo: "Logo de Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Error al obtener token de acceso", - invalidEnvironment: "Entorno inválido", - noPublicAccessToken: "No se proporcionó token de acceso público", - noSessionToken: "No se proporcionó token de sesión o cédula", - errorCreatingSession: "Error al crear sesión de checkout:", - orderIdRequired: "Se requiere cédula del pedido", - errorTrackingEvent: "Error al rastrear evento", - errorInTrackingSubscriber: "Error en suscriptor de rastreo", - useTrackingProviderError: - "useTracking debe usarse dentro de un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect debe usarse dentro de un PoyntCollectProvider", - useSquareProviderError: "useSquare debe usarse dentro de un SquareProvider", - errorProcessingPayment: "Error al procesar el pago", - stripeConfigMissing: - "Falta configuración de Stripe. Por favor verifica tu configuración.", - paymentSuccessful: "Pago exitoso", - paymentFailed: "Error en el pago", - paypalConfigMissing: - "Falta configuración de PayPal. Por favor verifica tu configuración.", - stripeNotReady: "Stripe no está listo", - cardElementNotFound: "CardElement no encontrado", - errorProcessingCardPayment: "Error al procesar pago con tarjeta.", - errorProcessingExpressPayment: "Error al procesar pago express.", - failedToInitializePayment: "Error al inicializar el pago.", - invalidPhoneNumber: "número de teléfono inválido", - }, - validation: { - phoneRequired: "Se requiere número de teléfono", - emailRequired: "Ingresa un correo electrónico", - emailInvalid: "Ingresa un correo electrónico válido", - phoneTooLong: "Número de teléfono demasiado largo", - invalidShippingAddress: "Dirección de envío inválida", - invalidBillingAddress: "Dirección de facturación inválida", - selectPaymentMethod: "Selecciona un método de pago", - enterValidBillingPhone: - "Ingresa un número de teléfono de facturación válido", - enterValidShippingPhone: "Ingresa un número de teléfono de envío válido", - enterFirstName: "Ingresa un nombre", - enterLastName: "Ingresa un apellido", - enterAddress: "Ingresa una dirección", - enterCity: "Ingresa una ciudad", - enterZipCode: "Ingresa un código postal", - enterZipPostalCode: "Ingresa un código postal", - selectState: "Selecciona un departamento/región", - selectCountry: "Selecciona un país", - enterCountry: "Ingresa un país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error del servidor", - SESSION_NOT_FOUND: "Sesión no encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Error al recuperar sesión de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesión de checkout no encontrada", - CHECKOUT_SESSION_FETCH_ERROR: "Error general al obtener sesión de checkout", - DRAFT_ORDER_NOT_FOUND: "Borrador de pedido no encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "Error al crear sesión de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Datos de sesión creada no encontrados", - CHECKOUT_SESSION_CREATION_ERROR: - "Error general al crear sesión de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Error al actualizar sesión de checkout", - UPDATED_SESSION_NOT_FOUND: "Sesión actualizada no encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: - "Error general al actualizar sesión de checkout", - ORDER_API_NOT_FOUND: "Fuente de datos de API de pedidos no encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "Error al recuperar borrador de pedido", - DATA_SOURCES_NOT_FOUND: "Fuentes de datos no encontradas", - TRANSACTION_API_NOT_FOUND: - "Fuente de datos de API de transacciones no encontrada", - TRANSACTION_PROCESSING_FAILED: "Error al procesar transacción", - TRANSACTION_CREATION_FAILED: "Error al encontrar o crear transacción", - ORDER_OPENING_FAILED: "Error al abrir pedido", - INVALID_FULFILLMENT_LOCATION: "Ubicación de cumplimiento inválida", - NO_VALID_PICKUP_LOCATION: "No hay ubicación de recogida válida disponible", - DRAFT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido", - LINE_ITEMS_FETCH_FAILED: "Error al obtener elementos del pedido", - CURRENT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido actual", - DRAFT_ORDER_UPDATE_FAILED: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_FAILED: "Error al aplicar cupón", - CONTEXT_UNAVAILABLE: "Sesión o fuentes de datos no disponibles", - SHIPPING_LINES_UPDATE_FAILED: "Error al actualizar líneas de envío", - ORDER_TOTALS_UPDATE_FAILED: "Error al actualizar totales del pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "Error al aplicar método de envío", - SKU_FETCH_FAILED: "Error al obtener SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Error al calcular tarifas de envío", - SHIPPING_METHOD_NOT_FOUND: "Método de envío no encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "Error al eliminar método de envío", - SHIPPING_ADDRESS_REQUIRED: "Se requiere dirección de envío", - INVENTORY_VALIDATION_ERROR: "Error de validación de inventario", - INSUFFICIENT_INVENTORY: "Inventario insuficiente", - INVALID_ORDER_STATUS: "Estado de pedido inválido", - TRANSACTION_CREATION_ERROR: "Error de creación de transacción", - TRANSACTION_PROCESSING_ERROR: "Error de procesamiento de transacción", - UNKNOWN_ERROR: "Error desconocido", - FULFILLMENT_CREATION_ERROR: "Error de creación de cumplimiento", - TAX_CALCULATION_ERROR: "Error de cálculo de impuestos", - ADDRESS_VERIFICATION_ERROR: "Error de verificación de dirección", - ADDRESS_MATCHES_ERROR: "Error de coincidencias de dirección", - SHIPPING_CONFLICT_ERROR: "Error de conflicto de envío", - SHIPPING_ERROR: "Error general de envío", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error de cálculo de ajuste de precio", - ORDER_FETCH_ERROR: "Error al obtener pedido", - DRAFT_ORDER_UPDATE_ERROR: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_ERROR: "Error de aplicación de cupón", - DRAFT_ORDER_OPEN_ERROR: "Error al abrir borrador de pedido", - ORDER_UPDATE_ERROR: "Error al actualizar pedido", - CATALOG_FETCH_ERROR: "Error al obtener catálogo", - STORE_ID_NOT_FOUND: "ID de tienda no encontrado", - ORDER_NOT_DRAFT: "El pedido no está en estado de borrador", - NO_LINE_ITEMS: "No se encontraron artículos", - BAD_USER_INPUT: "Entrada de usuario inválida", - MISSING_SHIPPING_ADDRESS: "Se requiere dirección de envío", - MISSING_REQUIRED_FIELD: "Falta campo obligatorio", - CATALOG_API_ERROR: "Error de servicio de catálogo", - TAX_SERVICE_UNAVAILABLE: "Servicio de impuestos no disponible", - SHIPPING_SERVICE_UNAVAILABLE: "Servicio de envío no disponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servicio de ajustes de precios no disponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Error al calcular ajustes de precios", - SERVICE_UNAVAILABLE: "Servicio temporalmente no disponible", - RATE_LIMITED: "Demasiadas solicitudes, por favor inténtelo más tarde", - TIMEOUT: "Tiempo de espera agotado", - INTERNAL_ERROR: "Error interno del servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Se requiere código postal de envío", - SHIPPING_COUNTRY_CODE_REQUIRED: "Se requiere código de país de envío", - SHIPPING_METHOD_REQUIRED: "Se requiere método de envío", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de envío", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de facturación", - }, + general: { + optional: 'opcional', + notes: 'Notas', + quantity: 'Cantidad', + free: 'GRATIS', + closed: 'Cerrado', + apply: 'Aplicar', + checkoutDisabled: 'El checkout está deshabilitado actualmente. Pedimos disculpas por las molestias.', + }, + contact: { + title: 'Contacto', + description: '', + email: 'Correo electrónico', + }, + pickup: { + title: 'Recogida en tienda', + description: + 'Haremos todo lo posible para cumplir con la hora de recogida esperada. Las horas reales de recogida pueden variar.', + location: 'Ubicación de recogida', + date: 'Fecha de recogida', + time: 'Hora preferida de recogida', + selectStore: 'Selecciona una ubicación de tienda', + selectDate: 'Selecciona una fecha', + selectTime: 'Selecciona una hora de recogida', + storeHours: 'Horarios de la tienda', + seeDetails: 'Ver detalles', + noTimeSlots: 'No hay horarios disponibles para la fecha seleccionada. Por favor selecciona otra fecha.', + hoursDisplayed: 'Horarios mostrados en tu zona horaria local.', + storeOperatesIn: 'La tienda opera en zona horaria {timezone}.', + asap: 'LO MÁS PRONTO POSIBLE', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + days: { + sunday: 'Domingo', + monday: 'Lunes', + tuesday: 'Martes', + wednesday: 'Miércoles', + thursday: 'Jueves', + friday: 'Viernes', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envío', + shipToAddress: 'Enviar a tu dirección', + localPickup: 'Recogida en tienda', + pickupFromStore: 'Recoger en ubicación de la tienda', + }, + tips: { + title: 'Agregar propina', + noTip: 'Sin propina', + customAmount: 'Monto personalizado', + customTipAmount: 'Monto de propina personalizado', + placeholder: '$0.00', + }, + shipping: { + title: 'Envío', + description: 'Dirección de envío', + method: 'Método de envío', + noShippingMethodAddress: 'Ingresa tu dirección para ver los métodos de envío disponibles.', + noShippingMethods: 'No se encontraron métodos de envío.', + phone: 'Número de teléfono', + country: 'País', + selectCountry: 'Seleccionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país', + firstName: 'Nombre', + lastName: 'Apellido', + address1: 'Dirección', + address2: 'Apartamento, oficina, etc.', + city: 'Ciudad', + region: 'Departamento/Estado', + postalCode: 'Código postal', + notesPlaceholder: 'Notas o instrucciones especiales', + addressSuggestion: '¿Quisiste decir', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No se proporcionó dirección de origen de envío.', + }, + billing: { + title: 'Facturación', + description: 'Descripción de facturación', + }, + payment: { + title: 'Pago', + description: 'Todos los pagos son seguros y encriptados.', + billingAddress: { + title: 'Dirección de facturación', + description: 'Ingresa tu dirección de facturación.', + useShippingAddress: 'Usar dirección de envío como dirección de facturación', + }, + methods: { + creditCard: 'Tarjeta de crédito o débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagos sin conexión', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No hay métodos de pago disponibles', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Fecha de vencimiento (MM / AA)', + securityCode: 'Código de seguridad', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nombre en la tarjeta', + payNow: 'Pagar ahora', + standardShipping: 'Envío estándar', + cardDetails: 'Detalles de la tarjeta', + payWithApplePay: 'Pagar con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Error al inicializar el pago.', + orderTotal: 'Total del pedido', + subtotal: 'Subtotal', + tax: 'Impuestos', + shipping: 'Envío', + discount: 'Cupón', + processingPayment: 'Procesando pago...', + completingOrder: 'Completando pedido...', + completeOrder: 'Completar tu pedido', + freePayment: 'Completa tu pedido gratuito', + }, + phone: { + placeholder: '(057) 300 123 4567', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + discounts: { + placeholder: 'Código de cupón', + enterCode: 'Ingresa código de cupón', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupón ya fue aplicado', + failedToApply: 'Error al aplicar código de cupón', + enterCodeValidation: 'Por favor ingresa un código de cupón', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Descuento', + shipping: 'Envío', + tip: 'Propina', + estimatedTaxes: 'Impuestos estimados', + totalDue: 'Total a pagar', + orderSummary: 'Resumen del pedido', + itemCount: 'artículos', + noItems: 'Sin artículos', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Dirección', + suggestions: 'Sugerencias', + }, + form: { + useFormFieldError: 'useFormField debe usarse dentro de ', + }, + pagination: { + ariaLabel: 'paginación', + previousPageAriaLabel: 'Ir a la página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir a la página siguiente', + next: 'Siguiente', + morePages: 'Más páginas', + }, + sidebar: { + useSidebarError: 'useSidebar debe usarse dentro de un SidebarProvider.', + toggleSidebar: 'Alternar barra lateral', + }, + accessibility: { + payWithApplePay: 'Pagar con Apple Pay', + applePayLogo: 'Logo de Apple Pay', + close: 'Cerrar', + additionalTipOptions: 'Opciones de propina adicionales', + breadcrumb: 'ruta de navegación', + more: 'Más', + previousSlide: 'Diapositiva anterior', + nextSlide: 'Siguiente diapositiva', + }, + }, + errors: { + failedToGetAccessToken: 'Error al obtener token de acceso', + invalidEnvironment: 'Entorno inválido', + noPublicAccessToken: 'No se proporcionó token de acceso público', + noSessionToken: 'No se proporcionó token de sesión o cédula', + errorCreatingSession: 'Error al crear sesión de checkout:', + orderIdRequired: 'Se requiere cédula del pedido', + errorTrackingEvent: 'Error al rastrear evento', + errorInTrackingSubscriber: 'Error en suscriptor de rastreo', + useTrackingProviderError: 'useTracking debe usarse dentro de un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect debe usarse dentro de un PoyntCollectProvider', + useSquareProviderError: 'useSquare debe usarse dentro de un SquareProvider', + errorProcessingPayment: 'Error al procesar el pago', + stripeConfigMissing: 'Falta configuración de Stripe. Por favor verifica tu configuración.', + paymentSuccessful: 'Pago exitoso', + paymentFailed: 'Error en el pago', + paypalConfigMissing: 'Falta configuración de PayPal. Por favor verifica tu configuración.', + stripeNotReady: 'Stripe no está listo', + cardElementNotFound: 'CardElement no encontrado', + errorProcessingCardPayment: 'Error al procesar pago con tarjeta.', + errorProcessingExpressPayment: 'Error al procesar pago express.', + failedToInitializePayment: 'Error al inicializar el pago.', + invalidPhoneNumber: 'número de teléfono inválido', + }, + validation: { + phoneRequired: 'Se requiere número de teléfono', + emailRequired: 'Ingresa un correo electrónico', + emailInvalid: 'Ingresa un correo electrónico válido', + phoneTooLong: 'Número de teléfono demasiado largo', + invalidShippingAddress: 'Dirección de envío inválida', + invalidBillingAddress: 'Dirección de facturación inválida', + selectPaymentMethod: 'Selecciona un método de pago', + enterValidBillingPhone: 'Ingresa un número de teléfono de facturación válido', + enterValidShippingPhone: 'Ingresa un número de teléfono de envío válido', + enterFirstName: 'Ingresa un nombre', + enterLastName: 'Ingresa un apellido', + enterAddress: 'Ingresa una dirección', + enterCity: 'Ingresa una ciudad', + enterZipCode: 'Ingresa un código postal', + enterZipPostalCode: 'Ingresa un código postal', + selectState: 'Selecciona un departamento/región', + selectCountry: 'Selecciona un país', + enterCountry: 'Ingresa un país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error del servidor', + SESSION_NOT_FOUND: 'Sesión no encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Error al recuperar sesión de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesión de checkout no encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Error general al obtener sesión de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido no encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'Error al crear sesión de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Datos de sesión creada no encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Error general al crear sesión de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Error al actualizar sesión de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesión actualizada no encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error general al actualizar sesión de checkout', + ORDER_API_NOT_FOUND: 'Fuente de datos de API de pedidos no encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Error al recuperar pedido', + DATA_SOURCES_NOT_FOUND: 'Fuentes de datos no encontradas', + TRANSACTION_API_NOT_FOUND: 'Fuente de datos de API de transacciones no encontrada', + TRANSACTION_PROCESSING_FAILED: 'Error al procesar transacción', + TRANSACTION_CREATION_FAILED: 'Error al encontrar o crear transacción', + ORDER_OPENING_FAILED: 'Error al abrir pedido', + INVALID_FULFILLMENT_LOCATION: 'Ubicación de cumplimiento inválida', + NO_VALID_PICKUP_LOCATION: 'No hay ubicación de recogida válida disponible', + DRAFT_ORDER_FETCH_FAILED: 'Error al obtener pedido', + LINE_ITEMS_FETCH_FAILED: 'Error al obtener elementos del pedido', + CURRENT_ORDER_FETCH_FAILED: 'Error al obtener pedido actual', + DRAFT_ORDER_UPDATE_FAILED: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_FAILED: 'Error al aplicar cupón', + CONTEXT_UNAVAILABLE: 'Sesión o fuentes de datos no disponibles', + SHIPPING_LINES_UPDATE_FAILED: 'Error al actualizar líneas de envío', + ORDER_TOTALS_UPDATE_FAILED: 'Error al actualizar totales del pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'Error al calcular totales del pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'Error al aplicar método de envío', + SKU_FETCH_FAILED: 'Error al obtener SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Error al calcular tarifas de envío', + SHIPPING_METHOD_NOT_FOUND: 'Método de envío no encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'Error al eliminar método de envío', + SHIPPING_ADDRESS_REQUIRED: 'Se requiere dirección de envío', + INVENTORY_VALIDATION_ERROR: 'Error de validación de inventario', + INSUFFICIENT_INVENTORY: 'Inventario insuficiente', + INVALID_ORDER_STATUS: 'Estado de pedido inválido', + TRANSACTION_CREATION_ERROR: 'Error de creación de transacción', + TRANSACTION_PROCESSING_ERROR: 'Error de procesamiento de transacción', + UNKNOWN_ERROR: 'Error desconocido', + FULFILLMENT_CREATION_ERROR: 'Error de creación de cumplimiento', + TAX_CALCULATION_ERROR: 'Error de cálculo de impuestos', + ADDRESS_VERIFICATION_ERROR: 'Error de verificación de dirección', + ADDRESS_MATCHES_ERROR: 'Error de coincidencias de dirección', + SHIPPING_CONFLICT_ERROR: 'Error de conflicto de envío', + SHIPPING_ERROR: 'Error general de envío', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error de cálculo de ajuste de precio', + ORDER_FETCH_ERROR: 'Error al obtener pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_ERROR: 'Error de aplicación de cupón', + DRAFT_ORDER_OPEN_ERROR: 'Error al abrir pedido', + ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + CATALOG_FETCH_ERROR: 'Error al obtener catálogo', + STORE_ID_NOT_FOUND: 'ID de tienda no encontrado', + ORDER_NOT_DRAFT: 'El pedido no está en estado válido', + NO_LINE_ITEMS: 'No se encontraron artículos', + BAD_USER_INPUT: 'Entrada de usuario inválida', + MISSING_SHIPPING_ADDRESS: 'Se requiere dirección de envío', + MISSING_REQUIRED_FIELD: 'Falta campo obligatorio', + CATALOG_API_ERROR: 'Error de servicio de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Servicio de impuestos no disponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Servicio de envío no disponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servicio de ajustes de precios no disponible', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Error al calcular ajustes de precios', + SERVICE_UNAVAILABLE: 'Servicio temporalmente no disponible', + RATE_LIMITED: 'Demasiadas solicitudes, por favor inténtelo más tarde', + TIMEOUT: 'Tiempo de espera agotado', + INTERNAL_ERROR: 'Error interno del servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Se requiere código postal de envío', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Se requiere código de país de envío', + SHIPPING_METHOD_REQUIRED: 'Se requiere método de envío', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de envío', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de facturación', + MISSING_SHIPPING_INFO: 'No se pudo aplicar la dirección o método de envío', + DEPENDENCY_ERROR: 'No podemos procesar su pedido en este momento. Espere un momento e inténtelo de nuevo', + }, }; diff --git a/packages/localizations/src/esEs.ts b/packages/localizations/src/esEs.ts index 0b7baf40..53d5636b 100644 --- a/packages/localizations/src/esEs.ts +++ b/packages/localizations/src/esEs.ts @@ -1,328 +1,317 @@ export const esEs = { - general: { - optional: "opcional", - notes: "Notas", - quantity: "Cantidad", - free: "GRATIS", - closed: "Cerrado", - apply: "Aplicar", - checkoutDisabled: - "El checkout está deshabilitado actualmente. Pedimos disculpas por las molestias.", - }, - contact: { - title: "Contacto", - description: "", - email: "Correo electrónico", - }, - pickup: { - title: "Recogida local", - description: - "Haremos todo lo posible para cumplir con su hora de recogida esperada. Los horarios reales de recogida pueden variar.", - location: "Ubicación de recogida", - date: "Fecha de recogida", - time: "Hora de recogida preferida", - selectStore: "Selecciona una ubicación de tienda", - selectDate: "Selecciona una fecha", - selectTime: "Selecciona una hora de recogida", - storeHours: "Horario de la tienda", - seeDetails: "Ver detalles", - noTimeSlots: - "No hay horarios disponibles para la fecha seleccionada. Por favor selecciona otra fecha.", - hoursDisplayed: "Horarios mostrados en tu zona horaria local.", - storeOperatesIn: "La tienda opera en la zona horaria {timezone}.", - asap: "Lo antes posible", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - days: { - sunday: "Domingo", - monday: "Lunes", - tuesday: "Martes", - wednesday: "Miércoles", - thursday: "Jueves", - friday: "Viernes", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envío", - shipToAddress: "Enviar a tu dirección", - localPickup: "Recogida local", - pickupFromStore: "Recoger de la ubicación de la tienda", - }, - tips: { - title: "Añadir propina", - noTip: "Sin propina", - customAmount: "Cantidad personalizada", - customTipAmount: "Cantidad de propina personalizada", - placeholder: "$0.00", - }, - shipping: { - title: "Envío", - description: "Dirección de envío", - method: "Método de envío", - noShippingMethodAddress: - "Introduce tu dirección para ver los métodos de envío disponibles.", - noShippingMethods: "No se encontraron métodos de envío.", - phone: "Número de teléfono", - country: "País", - selectCountry: "Seleccionar país", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país", - firstName: "Nombre", - lastName: "Apellido", - address1: "Dirección", - address2: "Apartamento, suite, etc.", - city: "Ciudad", - region: "Estado/Provincia", - postalCode: "Código postal", - notesPlaceholder: "Notas o instrucciones especiales", - addressSuggestion: "¿Querías decir", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No se proporcionó dirección de origen de envío.", - }, - billing: { - title: "Facturación", - description: "Descripción de facturación", - }, - payment: { - title: "Pago", - description: "Todos los pagos son seguros y están encriptados.", - billingAddress: { - title: "Dirección de facturación", - description: "Introduce tu dirección de facturación.", - useShippingAddress: - "Usar dirección de envío como dirección de facturación", - }, - methods: { - creditCard: "Tarjeta de crédito o débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagos sin conexión", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No hay métodos de pago disponibles", - cardNumber: "Número de tarjeta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Fecha de vencimiento (MM / AA)", - securityCode: "Código de seguridad", - cvvPlaceholder: "CVV", - nameOnCard: "Nombre en la tarjeta", - payNow: "Pagar ahora", - standardShipping: "Envío estándar", - cardDetails: "Detalles de la tarjeta", - payWithApplePay: "Pagar con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Error al inicializar el pago.", - orderTotal: "Total del pedido", - subtotal: "Subtotal", - tax: "Impuestos", - shipping: "Envío", - discount: "Cupón", - processingPayment: "Procesando pago...", - completingOrder: "Completando pedido...", - freePayment: "Completa tu pedido gratuito", - }, - phone: { - placeholder: "(201) 555-1234", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - discounts: { - placeholder: "Código de cupón", - enterCode: "Introduce código de cupón", - apply: "Aplicar", - alreadyApplied: "Este código de cupón ya ha sido aplicado", - failedToApply: "Error al aplicar el código de cupón", - enterCodeValidation: "Por favor introduce un código de cupón", - }, - totals: { - subtotal: "Subtotal", - discount: "Descuento", - shipping: "Envío", - tip: "Propina", - estimatedTaxes: "Impuestos estimados", - totalDue: "Total a pagar", - orderSummary: "Resumen del pedido", - itemCount: "artículos", - noItems: "Sin artículos", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Dirección", - suggestions: "Sugerencias", - }, - form: { - useFormFieldError: "useFormField debe usarse dentro de ", - }, - pagination: { - ariaLabel: "paginación", - previousPageAriaLabel: "Ir a la página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir a la siguiente página", - next: "Siguiente", - morePages: "Más páginas", - }, - sidebar: { - useSidebarError: "useSidebar debe usarse dentro de un SidebarProvider.", - toggleSidebar: "Alternar barra lateral", - }, - accessibility: { - payWithApplePay: "Pagar con Apple Pay", - applePayLogo: "Logo de Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Error al obtener el token de acceso", - invalidEnvironment: "Entorno inválido", - noPublicAccessToken: "No se proporcionó token de acceso público", - noSessionToken: "No se proporcionó token o ID de sesión", - errorCreatingSession: "Error al crear la sesión de checkout:", - orderIdRequired: "Se requiere ID de pedido", - errorTrackingEvent: "Error al rastrear evento", - errorInTrackingSubscriber: "Error en el suscriptor de rastreo", - useTrackingProviderError: - "useTracking debe usarse dentro de un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect debe usarse dentro de un PoyntCollectProvider", - useSquareProviderError: "useSquare debe usarse dentro de un SquareProvider", - errorProcessingPayment: "Error al procesar el pago", - stripeConfigMissing: - "Falta la configuración de Stripe. Por favor verifica tu configuración.", - paymentSuccessful: "Pago exitoso", - paymentFailed: "Pago fallido", - paypalConfigMissing: - "Falta la configuración de PayPal. Por favor verifica tu configuración.", - stripeNotReady: "Stripe no está listo", - cardElementNotFound: "Elemento de tarjeta no encontrado", - errorProcessingCardPayment: "Error al procesar el pago con tarjeta.", - errorProcessingExpressPayment: "Error al procesar el pago exprés.", - failedToInitializePayment: "Error al inicializar el pago.", - invalidPhoneNumber: "número de teléfono inválido", - }, - validation: { - phoneRequired: "Se requiere número de teléfono", - emailRequired: "Introduce un correo electrónico", - emailInvalid: "Introduce un correo electrónico válido", - phoneTooLong: "Número de teléfono demasiado largo", - invalidShippingAddress: "Dirección de envío inválida", - invalidBillingAddress: "Dirección de facturación inválida", - selectPaymentMethod: "Selecciona un método de pago", - enterValidBillingPhone: - "Introduce un número de teléfono de facturación válido", - enterValidShippingPhone: "Introduce un número de teléfono de envío válido", - enterFirstName: "Introduce un nombre", - enterLastName: "Introduce un apellido", - enterAddress: "Introduce una dirección", - enterCity: "Introduce una ciudad", - enterZipCode: "Introduce un código postal", - enterZipPostalCode: "Introduce un código ZIP / postal", - selectState: "Selecciona un estado/provincia", - selectCountry: "Selecciona un país", - enterCountry: "Introduce un país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error del servidor", - SESSION_NOT_FOUND: "Sesión no encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: - "No se pudo recuperar la sesión de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesión de checkout no encontrada", - CHECKOUT_SESSION_FETCH_ERROR: - "Error general al obtener la sesión de checkout", - DRAFT_ORDER_NOT_FOUND: "Borrador de pedido no encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "No se pudo crear la sesión de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Datos de la sesión creada no encontrados", - CHECKOUT_SESSION_CREATION_ERROR: - "Error general al crear la sesión de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: - "No se pudo actualizar la sesión de checkout", - UPDATED_SESSION_NOT_FOUND: "Sesión actualizada no encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: - "Error general al actualizar la sesión de checkout", - ORDER_API_NOT_FOUND: "Fuente de datos de la API de pedidos no encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "No se pudo recuperar el borrador de pedido", - DATA_SOURCES_NOT_FOUND: "Fuentes de datos no encontradas", - TRANSACTION_API_NOT_FOUND: - "Fuente de datos de la API de transacciones no encontrada", - TRANSACTION_PROCESSING_FAILED: "No se pudo procesar la transacción", - TRANSACTION_CREATION_FAILED: "No se pudo encontrar o crear la transacción", - ORDER_OPENING_FAILED: "No se pudo abrir el pedido", - INVALID_FULFILLMENT_LOCATION: "Ubicación de cumplimiento inválida", - NO_VALID_PICKUP_LOCATION: "No hay ubicación de recogida válida disponible", - DRAFT_ORDER_FETCH_FAILED: "No se pudo obtener el borrador de pedido", - LINE_ITEMS_FETCH_FAILED: "No se pudieron obtener los artículos", - CURRENT_ORDER_FETCH_FAILED: - "No se pudo obtener el borrador de pedido actual", - DRAFT_ORDER_UPDATE_FAILED: "No se pudo actualizar el borrador de pedido", - DISCOUNT_APPLICATION_FAILED: "No se pudo aplicar el cupón", - CONTEXT_UNAVAILABLE: "Sesión o fuentes de datos no disponibles", - SHIPPING_LINES_UPDATE_FAILED: "No se pudo actualizar las líneas de envío", - ORDER_TOTALS_UPDATE_FAILED: "No se pudo actualizar los totales del pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "No se pudo aplicar el método de envío", - SKU_FETCH_FAILED: "No se pudieron obtener los SKUs", - SHIPPING_RATES_CALCULATION_FAILED: - "No se pudieron calcular las tarifas de envío", - SHIPPING_METHOD_NOT_FOUND: "Método de envío no encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "No se pudo eliminar el método de envío", - SHIPPING_ADDRESS_REQUIRED: "Se requiere dirección de envío", - INVENTORY_VALIDATION_ERROR: "Error de validación de inventario", - INSUFFICIENT_INVENTORY: "Inventario insuficiente", - INVALID_ORDER_STATUS: "Estado de pedido inválido", - TRANSACTION_CREATION_ERROR: "Error al crear la transacción", - TRANSACTION_PROCESSING_ERROR: "Error al procesar la transacción", - UNKNOWN_ERROR: "Error desconocido", - FULFILLMENT_CREATION_ERROR: "Error al crear el cumplimiento", - TAX_CALCULATION_ERROR: "Error al calcular los impuestos", - ADDRESS_VERIFICATION_ERROR: "Error al verificar la dirección", - ADDRESS_MATCHES_ERROR: "Error en la coincidencia de direcciones", - SHIPPING_CONFLICT_ERROR: "Error de conflicto de envío", - SHIPPING_ERROR: "Error general de envío", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error al calcular el ajuste de precio", - ORDER_FETCH_ERROR: "Error al obtener el pedido", - DRAFT_ORDER_UPDATE_ERROR: "Error al actualizar el borrador de pedido", - DISCOUNT_APPLICATION_ERROR: "Error al aplicar el cupón", - DRAFT_ORDER_OPEN_ERROR: "Error al abrir el borrador de pedido", - ORDER_UPDATE_ERROR: "Error al actualizar el pedido", - CATALOG_FETCH_ERROR: "Error al obtener el catálogo", - STORE_ID_NOT_FOUND: "ID de tienda no encontrado", - ORDER_NOT_DRAFT: "El pedido no está en estado borrador", - NO_LINE_ITEMS: "No se encontraron artículos", - BAD_USER_INPUT: "Entrada de usuario inválida", - MISSING_SHIPPING_ADDRESS: "Se requiere dirección de envío", - MISSING_REQUIRED_FIELD: "Falta un campo requerido", - CATALOG_API_ERROR: "Error del servicio de catálogo", - TAX_SERVICE_UNAVAILABLE: "Servicio de impuestos no disponible", - SHIPPING_SERVICE_UNAVAILABLE: "Servicio de envío no disponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servicio de ajustes de precio no disponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "No se pudieron calcular los ajustes de precio", - SERVICE_UNAVAILABLE: "Servicio temporalmente no disponible", - RATE_LIMITED: "Demasiadas solicitudes, intente nuevamente más tarde", - TIMEOUT: "Tiempo de espera agotado", - INTERNAL_ERROR: "Error interno del servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Se requiere código postal de envío", - SHIPPING_COUNTRY_CODE_REQUIRED: "Se requiere código de país de envío", - SHIPPING_METHOD_REQUIRED: "Se requiere método de envío", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de envío", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de facturación", - }, + general: { + optional: 'opcional', + notes: 'Notas', + quantity: 'Cantidad', + free: 'GRATIS', + closed: 'Cerrado', + apply: 'Aplicar', + checkoutDisabled: 'El checkout está deshabilitado actualmente. Pedimos disculpas por las molestias.', + }, + contact: { + title: 'Contacto', + description: '', + email: 'Correo electrónico', + }, + pickup: { + title: 'Recogida local', + description: + 'Haremos todo lo posible para cumplir con su hora de recogida esperada. Los horarios reales de recogida pueden variar.', + location: 'Ubicación de recogida', + date: 'Fecha de recogida', + time: 'Hora de recogida preferida', + selectStore: 'Selecciona una ubicación de tienda', + selectDate: 'Selecciona una fecha', + selectTime: 'Selecciona una hora de recogida', + storeHours: 'Horario de la tienda', + seeDetails: 'Ver detalles', + noTimeSlots: 'No hay horarios disponibles para la fecha seleccionada. Por favor selecciona otra fecha.', + hoursDisplayed: 'Horarios mostrados en tu zona horaria local.', + storeOperatesIn: 'La tienda opera en la zona horaria {timezone}.', + asap: 'Lo antes posible', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + days: { + sunday: 'Domingo', + monday: 'Lunes', + tuesday: 'Martes', + wednesday: 'Miércoles', + thursday: 'Jueves', + friday: 'Viernes', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envío', + shipToAddress: 'Enviar a tu dirección', + localPickup: 'Recogida local', + pickupFromStore: 'Recoger de la ubicación de la tienda', + }, + tips: { + title: 'Añadir propina', + noTip: 'Sin propina', + customAmount: 'Cantidad personalizada', + customTipAmount: 'Cantidad de propina personalizada', + placeholder: '$0.00', + }, + shipping: { + title: 'Envío', + description: 'Dirección de envío', + method: 'Método de envío', + noShippingMethodAddress: 'Introduce tu dirección para ver los métodos de envío disponibles.', + noShippingMethods: 'No se encontraron métodos de envío.', + phone: 'Número de teléfono', + country: 'País', + selectCountry: 'Seleccionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país', + firstName: 'Nombre', + lastName: 'Apellido', + address1: 'Dirección', + address2: 'Apartamento, suite, etc.', + city: 'Ciudad', + region: 'Estado/Provincia', + postalCode: 'Código postal', + notesPlaceholder: 'Notas o instrucciones especiales', + addressSuggestion: '¿Querías decir', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No se proporcionó dirección de origen de envío.', + }, + billing: { + title: 'Facturación', + description: 'Descripción de facturación', + }, + payment: { + title: 'Pago', + description: 'Todos los pagos son seguros y están encriptados.', + billingAddress: { + title: 'Dirección de facturación', + description: 'Introduce tu dirección de facturación.', + useShippingAddress: 'Usar dirección de envío como dirección de facturación', + }, + methods: { + creditCard: 'Tarjeta de crédito o débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagos sin conexión', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No hay métodos de pago disponibles', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Fecha de vencimiento (MM / AA)', + securityCode: 'Código de seguridad', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nombre en la tarjeta', + payNow: 'Pagar ahora', + standardShipping: 'Envío estándar', + cardDetails: 'Detalles de la tarjeta', + payWithApplePay: 'Pagar con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Error al inicializar el pago.', + orderTotal: 'Total del pedido', + subtotal: 'Subtotal', + tax: 'Impuestos', + shipping: 'Envío', + discount: 'Cupón', + processingPayment: 'Procesando pago...', + completingOrder: 'Completando pedido...', + completeOrder: 'Completar tu pedido', + freePayment: 'Completa tu pedido gratuito', + }, + phone: { + placeholder: '(201) 555-1234', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + discounts: { + placeholder: 'Código de cupón', + enterCode: 'Introduce código de cupón', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupón ya ha sido aplicado', + failedToApply: 'Error al aplicar el código de cupón', + enterCodeValidation: 'Por favor introduce un código de cupón', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Descuento', + shipping: 'Envío', + tip: 'Propina', + estimatedTaxes: 'Impuestos estimados', + totalDue: 'Total a pagar', + orderSummary: 'Resumen del pedido', + itemCount: 'artículos', + noItems: 'Sin artículos', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Dirección', + suggestions: 'Sugerencias', + }, + form: { + useFormFieldError: 'useFormField debe usarse dentro de ', + }, + pagination: { + ariaLabel: 'paginación', + previousPageAriaLabel: 'Ir a la página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir a la siguiente página', + next: 'Siguiente', + morePages: 'Más páginas', + }, + sidebar: { + useSidebarError: 'useSidebar debe usarse dentro de un SidebarProvider.', + toggleSidebar: 'Alternar barra lateral', + }, + accessibility: { + payWithApplePay: 'Pagar con Apple Pay', + applePayLogo: 'Logo de Apple Pay', + close: 'Cerrar', + additionalTipOptions: 'Opciones de propina adicionales', + breadcrumb: 'ruta de navegación', + more: 'Más', + previousSlide: 'Diapositiva anterior', + nextSlide: 'Siguiente diapositiva', + }, + }, + errors: { + failedToGetAccessToken: 'Error al obtener el token de acceso', + invalidEnvironment: 'Entorno inválido', + noPublicAccessToken: 'No se proporcionó token de acceso público', + noSessionToken: 'No se proporcionó token o ID de sesión', + errorCreatingSession: 'Error al crear la sesión de checkout:', + orderIdRequired: 'Se requiere ID de pedido', + errorTrackingEvent: 'Error al rastrear evento', + errorInTrackingSubscriber: 'Error en el suscriptor de rastreo', + useTrackingProviderError: 'useTracking debe usarse dentro de un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect debe usarse dentro de un PoyntCollectProvider', + useSquareProviderError: 'useSquare debe usarse dentro de un SquareProvider', + errorProcessingPayment: 'Error al procesar el pago', + stripeConfigMissing: 'Falta la configuración de Stripe. Por favor verifica tu configuración.', + paymentSuccessful: 'Pago exitoso', + paymentFailed: 'Pago fallido', + paypalConfigMissing: 'Falta la configuración de PayPal. Por favor verifica tu configuración.', + stripeNotReady: 'Stripe no está listo', + cardElementNotFound: 'Elemento de tarjeta no encontrado', + errorProcessingCardPayment: 'Error al procesar el pago con tarjeta.', + errorProcessingExpressPayment: 'Error al procesar el pago exprés.', + failedToInitializePayment: 'Error al inicializar el pago.', + invalidPhoneNumber: 'número de teléfono inválido', + }, + validation: { + phoneRequired: 'Se requiere número de teléfono', + emailRequired: 'Introduce un correo electrónico', + emailInvalid: 'Introduce un correo electrónico válido', + phoneTooLong: 'Número de teléfono demasiado largo', + invalidShippingAddress: 'Dirección de envío inválida', + invalidBillingAddress: 'Dirección de facturación inválida', + selectPaymentMethod: 'Selecciona un método de pago', + enterValidBillingPhone: 'Introduce un número de teléfono de facturación válido', + enterValidShippingPhone: 'Introduce un número de teléfono de envío válido', + enterFirstName: 'Introduce un nombre', + enterLastName: 'Introduce un apellido', + enterAddress: 'Introduce una dirección', + enterCity: 'Introduce una ciudad', + enterZipCode: 'Introduce un código postal', + enterZipPostalCode: 'Introduce un código ZIP / postal', + selectState: 'Selecciona un estado/provincia', + selectCountry: 'Selecciona un país', + enterCountry: 'Introduce un país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error del servidor', + SESSION_NOT_FOUND: 'Sesión no encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'No se pudo recuperar la sesión de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesión de checkout no encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Error general al obtener la sesión de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido no encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'No se pudo crear la sesión de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Datos de la sesión creada no encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Error general al crear la sesión de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'No se pudo actualizar la sesión de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesión actualizada no encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error general al actualizar la sesión de checkout', + ORDER_API_NOT_FOUND: 'Fuente de datos de la API de pedidos no encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'No se pudo recuperar el pedido', + DATA_SOURCES_NOT_FOUND: 'Fuentes de datos no encontradas', + TRANSACTION_API_NOT_FOUND: 'Fuente de datos de la API de transacciones no encontrada', + TRANSACTION_PROCESSING_FAILED: 'No se pudo procesar la transacción', + TRANSACTION_CREATION_FAILED: 'No se pudo encontrar o crear la transacción', + ORDER_OPENING_FAILED: 'No se pudo abrir el pedido', + INVALID_FULFILLMENT_LOCATION: 'Ubicación de cumplimiento inválida', + NO_VALID_PICKUP_LOCATION: 'No hay ubicación de recogida válida disponible', + DRAFT_ORDER_FETCH_FAILED: 'No se pudo obtener el pedido', + LINE_ITEMS_FETCH_FAILED: 'No se pudieron obtener los artículos', + CURRENT_ORDER_FETCH_FAILED: 'No se pudo obtener el pedido actual', + DRAFT_ORDER_UPDATE_FAILED: 'No se pudo actualizar el pedido', + DISCOUNT_APPLICATION_FAILED: 'No se pudo aplicar el cupón', + CONTEXT_UNAVAILABLE: 'Sesión o fuentes de datos no disponibles', + SHIPPING_LINES_UPDATE_FAILED: 'No se pudo actualizar las líneas de envío', + ORDER_TOTALS_UPDATE_FAILED: 'No se pudo actualizar los totales del pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'No se pudo calcular los totales del pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'No se pudo aplicar el método de envío', + SKU_FETCH_FAILED: 'No se pudieron obtener los SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'No se pudieron calcular las tarifas de envío', + SHIPPING_METHOD_NOT_FOUND: 'Método de envío no encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'No se pudo eliminar el método de envío', + SHIPPING_ADDRESS_REQUIRED: 'Se requiere dirección de envío', + INVENTORY_VALIDATION_ERROR: 'Error de validación de inventario', + INSUFFICIENT_INVENTORY: 'Inventario insuficiente', + INVALID_ORDER_STATUS: 'Estado de pedido inválido', + TRANSACTION_CREATION_ERROR: 'Error al crear la transacción', + TRANSACTION_PROCESSING_ERROR: 'Error al procesar la transacción', + UNKNOWN_ERROR: 'Error desconocido', + FULFILLMENT_CREATION_ERROR: 'Error al crear el cumplimiento', + TAX_CALCULATION_ERROR: 'Error al calcular los impuestos', + ADDRESS_VERIFICATION_ERROR: 'Error al verificar la dirección', + ADDRESS_MATCHES_ERROR: 'Error en la coincidencia de direcciones', + SHIPPING_CONFLICT_ERROR: 'Error de conflicto de envío', + SHIPPING_ERROR: 'Error general de envío', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error al calcular el ajuste de precio', + ORDER_FETCH_ERROR: 'Error al obtener el pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Error al actualizar el pedido', + DISCOUNT_APPLICATION_ERROR: 'Error al aplicar el cupón', + DRAFT_ORDER_OPEN_ERROR: 'Error al abrir el pedido', + ORDER_UPDATE_ERROR: 'Error al actualizar el pedido', + CATALOG_FETCH_ERROR: 'Error al obtener el catálogo', + STORE_ID_NOT_FOUND: 'ID de tienda no encontrado', + ORDER_NOT_DRAFT: 'El pedido no está en estado válido', + NO_LINE_ITEMS: 'No se encontraron artículos', + BAD_USER_INPUT: 'Entrada de usuario inválida', + MISSING_SHIPPING_ADDRESS: 'Se requiere dirección de envío', + MISSING_REQUIRED_FIELD: 'Falta un campo requerido', + CATALOG_API_ERROR: 'Error del servicio de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Servicio de impuestos no disponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Servicio de envío no disponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servicio de ajustes de precio no disponible', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'No se pudieron calcular los ajustes de precio', + SERVICE_UNAVAILABLE: 'Servicio temporalmente no disponible', + RATE_LIMITED: 'Demasiadas solicitudes, intente nuevamente más tarde', + TIMEOUT: 'Tiempo de espera agotado', + INTERNAL_ERROR: 'Error interno del servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Se requiere código postal de envío', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Se requiere código de país de envío', + SHIPPING_METHOD_REQUIRED: 'Se requiere método de envío', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de envío', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de facturación', + MISSING_SHIPPING_INFO: 'No se pudo aplicar la dirección o método de envío', + DEPENDENCY_ERROR: 'No podemos procesar su pedido en este momento. Espere un momento e inténtelo de nuevo', + }, }; diff --git a/packages/localizations/src/esMx.ts b/packages/localizations/src/esMx.ts index a509c999..f4518dd8 100644 --- a/packages/localizations/src/esMx.ts +++ b/packages/localizations/src/esMx.ts @@ -1,324 +1,316 @@ export const esMx = { - general: { - optional: "opcional", - notes: "Notas", - quantity: "Cantidad", - free: "GRATIS", - closed: "Cerrado", - apply: "Aplicar", - checkoutDisabled: - "El checkout está deshabilitado temporalmente. Disculpe las molestias.", - }, - contact: { - title: "Contacto", - description: "", - email: "Correo electrónico", - }, - pickup: { - title: "Recolección en Tienda", - description: - "Haremos nuestro mejor esfuerzo para cumplir con su horario de recolección. Los horarios reales pueden variar.", - location: "Ubicación de Recolección", - date: "Fecha de Recolección", - time: "Horario Preferido de Recolección", - selectStore: "Seleccione una ubicación de tienda", - selectDate: "Seleccione una fecha", - selectTime: "Seleccione un horario de recolección", - storeHours: "Horarios de la Tienda", - seeDetails: "Ver detalles", - noTimeSlots: - "No hay horarios disponibles para la fecha seleccionada. Por favor seleccione otra fecha.", - hoursDisplayed: "Horarios mostrados en su zona horaria local.", - storeOperatesIn: "La tienda opera en zona horaria {timezone}.", - asap: "LO MÁS PRONTO POSIBLE", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - days: { - sunday: "Domingo", - monday: "Lunes", - tuesday: "Martes", - wednesday: "Miércoles", - thursday: "Jueves", - friday: "Viernes", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envío", - shipToAddress: "Enviar a su dirección", - localPickup: "Recolección en Tienda", - pickupFromStore: "Recoger en ubicación de tienda", - }, - tips: { - title: "Agregar propina", - noTip: "Sin Propina", - customAmount: "Cantidad Personalizada", - customTipAmount: "Cantidad de Propina Personalizada", - placeholder: "$0.00", - }, - shipping: { - title: "Envío", - description: "Dirección de envío", - method: "Método de envío", - noShippingMethodAddress: - "Ingrese su dirección para ver los métodos de envío disponibles.", - noShippingMethods: "No se encontraron métodos de envío.", - phone: "Número de Teléfono", - country: "País", - selectCountry: "Seleccionar país", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país", - firstName: "Nombre", - lastName: "Apellidos", - address1: "Dirección", - address2: "Departamento, suite, etc.", - city: "Ciudad", - region: "Estado/Provincia", - postalCode: "Código Postal", - notesPlaceholder: "Notas o instrucciones especiales", - addressSuggestion: "¿Quiso decir", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No se proporcionó dirección de origen de envío.", - }, - billing: { - title: "Facturación", - description: "Descripción de facturación", - }, - payment: { - title: "Pago", - description: "Todos los pagos son seguros y cifrados.", - billingAddress: { - title: "Dirección de Facturación", - description: "Ingrese su dirección de facturación.", - useShippingAddress: - "Usar dirección de envío como dirección de facturación", - }, - methods: { - creditCard: "Tarjeta de Crédito o Débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagos fuera de línea", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No hay métodos de pago disponibles", - cardNumber: "Número de tarjeta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Fecha de vencimiento (MM / AA)", - securityCode: "Código de seguridad", - cvvPlaceholder: "CVV", - nameOnCard: "Nombre en la tarjeta", - payNow: "Pagar ahora", - standardShipping: "Envío Estándar", - cardDetails: "Detalles de la tarjeta", - payWithApplePay: "Pagar con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Error al inicializar el pago.", - orderTotal: "Total del Pedido", - subtotal: "Subtotal", - tax: "Impuestos", - shipping: "Envío", - discount: "Cupón", - processingPayment: "Procesando pago...", - completingOrder: "Completando pedido...", - freePayment: "Completa tu pedido gratuito", - }, - phone: { - placeholder: "(55) 1234-5678", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - discounts: { - placeholder: "Código de cupón", - enterCode: "Ingresar código de cupón", - apply: "Aplicar", - alreadyApplied: "Este código de cupón ya ha sido aplicado", - failedToApply: "Error al aplicar código de cupón", - enterCodeValidation: "Por favor ingrese un código de cupón", - }, - totals: { - subtotal: "Subtotal", - discount: "Descuento", - shipping: "Envío", - tip: "Propina", - estimatedTaxes: "Impuestos estimados", - totalDue: "Total a Pagar", - orderSummary: "Resumen del Pedido", - itemCount: "artículos", - noItems: "Sin artículos", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Dirección", - suggestions: "Sugerencias", - }, - form: { - useFormFieldError: "useFormField debe usarse dentro de ", - }, - pagination: { - ariaLabel: "paginación", - previousPageAriaLabel: "Ir a la página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir a la página siguiente", - next: "Siguiente", - morePages: "Más páginas", - }, - sidebar: { - useSidebarError: "useSidebar debe usarse dentro de un SidebarProvider.", - toggleSidebar: "Alternar Barra Lateral", - }, - accessibility: { - payWithApplePay: "Pagar con Apple Pay", - applePayLogo: "Logo de Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Error al obtener token de acceso", - invalidEnvironment: "Entorno inválido", - noPublicAccessToken: "No se proporcionó token de acceso público", - noSessionToken: "No se proporcionó token de sesión o ID", - errorCreatingSession: "Error al crear sesión de checkout:", - orderIdRequired: "Se requiere ID del pedido", - errorTrackingEvent: "Error al rastrear evento", - errorInTrackingSubscriber: "Error en suscriptor de seguimiento", - useTrackingProviderError: - "useTracking debe usarse dentro de un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect debe usarse dentro de un PoyntCollectProvider", - useSquareProviderError: "useSquare debe usarse dentro de un SquareProvider", - errorProcessingPayment: "Error al procesar el pago", - stripeConfigMissing: - "Falta configuración de Stripe. Por favor verifique su configuración.", - paymentSuccessful: "Pago exitoso", - paymentFailed: "Error en el pago", - paypalConfigMissing: - "Falta configuración de PayPal. Por favor verifique su configuración.", - stripeNotReady: "Stripe no está listo", - cardElementNotFound: "CardElement no encontrado", - errorProcessingCardPayment: "Error al procesar pago con tarjeta.", - errorProcessingExpressPayment: "Error al procesar pago express.", - failedToInitializePayment: "Error al inicializar el pago.", - invalidPhoneNumber: "número de teléfono inválido", - }, - validation: { - phoneRequired: "Se requiere número de teléfono", - emailRequired: "Ingrese un correo electrónico", - emailInvalid: "Ingrese un correo electrónico válido", - phoneTooLong: "Número de teléfono demasiado largo", - invalidShippingAddress: "Dirección de envío inválida", - invalidBillingAddress: "Dirección de facturación inválida", - selectPaymentMethod: "Seleccione un método de pago", - enterValidBillingPhone: - "Ingrese un número de teléfono de facturación válido", - enterValidShippingPhone: "Ingrese un número de teléfono de envío válido", - enterFirstName: "Ingrese un nombre", - enterLastName: "Ingrese apellidos", - enterAddress: "Ingrese una dirección", - enterCity: "Ingrese una ciudad", - enterZipCode: "Ingrese un código postal", - enterZipPostalCode: "Ingrese un código postal", - selectState: "Seleccione un estado/provincia", - selectCountry: "Seleccione un país", - enterCountry: "Ingrese un país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error del servidor", - SESSION_NOT_FOUND: "Sesión no encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Error al recuperar sesión de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesión de checkout no encontrada", - CHECKOUT_SESSION_FETCH_ERROR: "Error general al obtener sesión de checkout", - DRAFT_ORDER_NOT_FOUND: "Borrador de pedido no encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "Error al crear sesión de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Datos de sesión creada no encontrados", - CHECKOUT_SESSION_CREATION_ERROR: - "Error general al crear sesión de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Error al actualizar sesión de checkout", - UPDATED_SESSION_NOT_FOUND: "Sesión actualizada no encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: - "Error general al actualizar sesión de checkout", - ORDER_API_NOT_FOUND: "Fuente de datos de API de pedidos no encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "Error al recuperar borrador de pedido", - DATA_SOURCES_NOT_FOUND: "Fuentes de datos no encontradas", - TRANSACTION_API_NOT_FOUND: - "Fuente de datos de API de transacciones no encontrada", - TRANSACTION_PROCESSING_FAILED: "Error al procesar transacción", - TRANSACTION_CREATION_FAILED: "Error al encontrar o crear transacción", - ORDER_OPENING_FAILED: "Error al abrir pedido", - INVALID_FULFILLMENT_LOCATION: "Ubicación de cumplimiento inválida", - NO_VALID_PICKUP_LOCATION: - "No hay ubicación de recolección válida disponible", - DRAFT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido", - LINE_ITEMS_FETCH_FAILED: "Error al obtener elementos del pedido", - CURRENT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido actual", - DRAFT_ORDER_UPDATE_FAILED: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_FAILED: "Error al aplicar cupón", - CONTEXT_UNAVAILABLE: "Sesión o fuentes de datos no disponibles", - SHIPPING_LINES_UPDATE_FAILED: "Error al actualizar líneas de envío", - ORDER_TOTALS_UPDATE_FAILED: "Error al actualizar totales del pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "Error al aplicar método de envío", - SKU_FETCH_FAILED: "Error al obtener SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Error al calcular tarifas de envío", - SHIPPING_METHOD_NOT_FOUND: "Método de envío no encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "Error al eliminar método de envío", - SHIPPING_ADDRESS_REQUIRED: "Se requiere dirección de envío", - INVENTORY_VALIDATION_ERROR: "Error de validación de inventario", - INSUFFICIENT_INVENTORY: "Inventario insuficiente", - INVALID_ORDER_STATUS: "Estado de pedido inválido", - TRANSACTION_CREATION_ERROR: "Error de creación de transacción", - TRANSACTION_PROCESSING_ERROR: "Error de procesamiento de transacción", - UNKNOWN_ERROR: "Error desconocido", - FULFILLMENT_CREATION_ERROR: "Error de creación de cumplimiento", - TAX_CALCULATION_ERROR: "Error de cálculo de impuestos", - ADDRESS_VERIFICATION_ERROR: "Error de verificación de dirección", - ADDRESS_MATCHES_ERROR: "Error de coincidencias de dirección", - SHIPPING_CONFLICT_ERROR: "Error de conflicto de envío", - SHIPPING_ERROR: "Error general de envío", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error de cálculo de ajuste de precio", - ORDER_FETCH_ERROR: "Error al obtener pedido", - DRAFT_ORDER_UPDATE_ERROR: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_ERROR: "Error de aplicación de cupón", - DRAFT_ORDER_OPEN_ERROR: "Error al abrir borrador de pedido", - ORDER_UPDATE_ERROR: "Error al actualizar pedido", - CATALOG_FETCH_ERROR: "Error al obtener catálogo", - STORE_ID_NOT_FOUND: "ID de tienda no encontrado", - ORDER_NOT_DRAFT: "El pedido no está en estado de borrador", - NO_LINE_ITEMS: "No se encontraron artículos", - BAD_USER_INPUT: "Entrada de usuario inválida", - MISSING_SHIPPING_ADDRESS: "Se requiere dirección de envío", - MISSING_REQUIRED_FIELD: "Falta campo obligatorio", - CATALOG_API_ERROR: "Error de servicio de catálogo", - TAX_SERVICE_UNAVAILABLE: "Servicio de impuestos no disponible", - SHIPPING_SERVICE_UNAVAILABLE: "Servicio de envío no disponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servicio de ajustes de precios no disponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Error al calcular ajustes de precios", - SERVICE_UNAVAILABLE: "Servicio temporalmente no disponible", - RATE_LIMITED: "Demasiadas solicitudes, por favor inténtelo más tarde", - TIMEOUT: "Tiempo de espera agotado", - INTERNAL_ERROR: "Error interno del servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Se requiere código postal de envío", - SHIPPING_COUNTRY_CODE_REQUIRED: "Se requiere código de país de envío", - SHIPPING_METHOD_REQUIRED: "Se requiere método de envío", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de envío", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de facturación", - }, + general: { + optional: 'opcional', + notes: 'Notas', + quantity: 'Cantidad', + free: 'GRATIS', + closed: 'Cerrado', + apply: 'Aplicar', + checkoutDisabled: 'El checkout está deshabilitado temporalmente. Disculpe las molestias.', + }, + contact: { + title: 'Contacto', + description: '', + email: 'Correo electrónico', + }, + pickup: { + title: 'Recolección en Tienda', + description: 'Haremos nuestro mejor esfuerzo para cumplir con su horario de recolección. Los horarios reales pueden variar.', + location: 'Ubicación de Recolección', + date: 'Fecha de Recolección', + time: 'Horario Preferido de Recolección', + selectStore: 'Seleccione una ubicación de tienda', + selectDate: 'Seleccione una fecha', + selectTime: 'Seleccione un horario de recolección', + storeHours: 'Horarios de la Tienda', + seeDetails: 'Ver detalles', + noTimeSlots: 'No hay horarios disponibles para la fecha seleccionada. Por favor seleccione otra fecha.', + hoursDisplayed: 'Horarios mostrados en su zona horaria local.', + storeOperatesIn: 'La tienda opera en zona horaria {timezone}.', + asap: 'LO MÁS PRONTO POSIBLE', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + days: { + sunday: 'Domingo', + monday: 'Lunes', + tuesday: 'Martes', + wednesday: 'Miércoles', + thursday: 'Jueves', + friday: 'Viernes', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envío', + shipToAddress: 'Enviar a su dirección', + localPickup: 'Recolección en Tienda', + pickupFromStore: 'Recoger en ubicación de tienda', + }, + tips: { + title: 'Agregar propina', + noTip: 'Sin Propina', + customAmount: 'Cantidad Personalizada', + customTipAmount: 'Cantidad de Propina Personalizada', + placeholder: '$0.00', + }, + shipping: { + title: 'Envío', + description: 'Dirección de envío', + method: 'Método de envío', + noShippingMethodAddress: 'Ingrese su dirección para ver los métodos de envío disponibles.', + noShippingMethods: 'No se encontraron métodos de envío.', + phone: 'Número de Teléfono', + country: 'País', + selectCountry: 'Seleccionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país', + firstName: 'Nombre', + lastName: 'Apellidos', + address1: 'Dirección', + address2: 'Departamento, suite, etc.', + city: 'Ciudad', + region: 'Estado/Provincia', + postalCode: 'Código Postal', + notesPlaceholder: 'Notas o instrucciones especiales', + addressSuggestion: '¿Quiso decir', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No se proporcionó dirección de origen de envío.', + }, + billing: { + title: 'Facturación', + description: 'Descripción de facturación', + }, + payment: { + title: 'Pago', + description: 'Todos los pagos son seguros y cifrados.', + billingAddress: { + title: 'Dirección de Facturación', + description: 'Ingrese su dirección de facturación.', + useShippingAddress: 'Usar dirección de envío como dirección de facturación', + }, + methods: { + creditCard: 'Tarjeta de Crédito o Débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagos fuera de línea', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No hay métodos de pago disponibles', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Fecha de vencimiento (MM / AA)', + securityCode: 'Código de seguridad', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nombre en la tarjeta', + payNow: 'Pagar ahora', + standardShipping: 'Envío Estándar', + cardDetails: 'Detalles de la tarjeta', + payWithApplePay: 'Pagar con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Error al inicializar el pago.', + orderTotal: 'Total del Pedido', + subtotal: 'Subtotal', + tax: 'Impuestos', + shipping: 'Envío', + discount: 'Cupón', + processingPayment: 'Procesando pago...', + completingOrder: 'Completando pedido...', + completeOrder: 'Completar tu pedido', + freePayment: 'Completa tu pedido gratuito', + }, + phone: { + placeholder: '(55) 1234-5678', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + discounts: { + placeholder: 'Código de cupón', + enterCode: 'Ingresar código de cupón', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupón ya ha sido aplicado', + failedToApply: 'Error al aplicar código de cupón', + enterCodeValidation: 'Por favor ingrese un código de cupón', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Descuento', + shipping: 'Envío', + tip: 'Propina', + estimatedTaxes: 'Impuestos estimados', + totalDue: 'Total a Pagar', + orderSummary: 'Resumen del Pedido', + itemCount: 'artículos', + noItems: 'Sin artículos', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Dirección', + suggestions: 'Sugerencias', + }, + form: { + useFormFieldError: 'useFormField debe usarse dentro de ', + }, + pagination: { + ariaLabel: 'paginación', + previousPageAriaLabel: 'Ir a la página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir a la página siguiente', + next: 'Siguiente', + morePages: 'Más páginas', + }, + sidebar: { + useSidebarError: 'useSidebar debe usarse dentro de un SidebarProvider.', + toggleSidebar: 'Alternar Barra Lateral', + }, + accessibility: { + payWithApplePay: 'Pagar con Apple Pay', + applePayLogo: 'Logo de Apple Pay', + close: 'Cerrar', + additionalTipOptions: 'Opciones de propina adicionales', + breadcrumb: 'ruta de navegación', + more: 'Más', + previousSlide: 'Diapositiva anterior', + nextSlide: 'Siguiente diapositiva', + }, + }, + errors: { + failedToGetAccessToken: 'Error al obtener token de acceso', + invalidEnvironment: 'Entorno inválido', + noPublicAccessToken: 'No se proporcionó token de acceso público', + noSessionToken: 'No se proporcionó token de sesión o ID', + errorCreatingSession: 'Error al crear sesión de checkout:', + orderIdRequired: 'Se requiere ID del pedido', + errorTrackingEvent: 'Error al rastrear evento', + errorInTrackingSubscriber: 'Error en suscriptor de seguimiento', + useTrackingProviderError: 'useTracking debe usarse dentro de un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect debe usarse dentro de un PoyntCollectProvider', + useSquareProviderError: 'useSquare debe usarse dentro de un SquareProvider', + errorProcessingPayment: 'Error al procesar el pago', + stripeConfigMissing: 'Falta configuración de Stripe. Por favor verifique su configuración.', + paymentSuccessful: 'Pago exitoso', + paymentFailed: 'Error en el pago', + paypalConfigMissing: 'Falta configuración de PayPal. Por favor verifique su configuración.', + stripeNotReady: 'Stripe no está listo', + cardElementNotFound: 'CardElement no encontrado', + errorProcessingCardPayment: 'Error al procesar pago con tarjeta.', + errorProcessingExpressPayment: 'Error al procesar pago express.', + failedToInitializePayment: 'Error al inicializar el pago.', + invalidPhoneNumber: 'número de teléfono inválido', + }, + validation: { + phoneRequired: 'Se requiere número de teléfono', + emailRequired: 'Ingrese un correo electrónico', + emailInvalid: 'Ingrese un correo electrónico válido', + phoneTooLong: 'Número de teléfono demasiado largo', + invalidShippingAddress: 'Dirección de envío inválida', + invalidBillingAddress: 'Dirección de facturación inválida', + selectPaymentMethod: 'Seleccione un método de pago', + enterValidBillingPhone: 'Ingrese un número de teléfono de facturación válido', + enterValidShippingPhone: 'Ingrese un número de teléfono de envío válido', + enterFirstName: 'Ingrese un nombre', + enterLastName: 'Ingrese apellidos', + enterAddress: 'Ingrese una dirección', + enterCity: 'Ingrese una ciudad', + enterZipCode: 'Ingrese un código postal', + enterZipPostalCode: 'Ingrese un código postal', + selectState: 'Seleccione un estado/provincia', + selectCountry: 'Seleccione un país', + enterCountry: 'Ingrese un país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error del servidor', + SESSION_NOT_FOUND: 'Sesión no encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Error al recuperar sesión de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesión de checkout no encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Error general al obtener sesión de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido no encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'Error al crear sesión de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Datos de sesión creada no encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Error general al crear sesión de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Error al actualizar sesión de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesión actualizada no encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error general al actualizar sesión de checkout', + ORDER_API_NOT_FOUND: 'Fuente de datos de API de pedidos no encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Error al recuperar pedido', + DATA_SOURCES_NOT_FOUND: 'Fuentes de datos no encontradas', + TRANSACTION_API_NOT_FOUND: 'Fuente de datos de API de transacciones no encontrada', + TRANSACTION_PROCESSING_FAILED: 'Error al procesar transacción', + TRANSACTION_CREATION_FAILED: 'Error al encontrar o crear transacción', + ORDER_OPENING_FAILED: 'Error al abrir pedido', + INVALID_FULFILLMENT_LOCATION: 'Ubicación de cumplimiento inválida', + NO_VALID_PICKUP_LOCATION: 'No hay ubicación de recolección válida disponible', + DRAFT_ORDER_FETCH_FAILED: 'Error al obtener pedido', + LINE_ITEMS_FETCH_FAILED: 'Error al obtener elementos del pedido', + CURRENT_ORDER_FETCH_FAILED: 'Error al obtener pedido actual', + DRAFT_ORDER_UPDATE_FAILED: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_FAILED: 'Error al aplicar cupón', + CONTEXT_UNAVAILABLE: 'Sesión o fuentes de datos no disponibles', + SHIPPING_LINES_UPDATE_FAILED: 'Error al actualizar líneas de envío', + ORDER_TOTALS_UPDATE_FAILED: 'Error al actualizar totales del pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'Error al calcular totales del pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'Error al aplicar método de envío', + SKU_FETCH_FAILED: 'Error al obtener SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Error al calcular tarifas de envío', + SHIPPING_METHOD_NOT_FOUND: 'Método de envío no encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'Error al eliminar método de envío', + SHIPPING_ADDRESS_REQUIRED: 'Se requiere dirección de envío', + INVENTORY_VALIDATION_ERROR: 'Error de validación de inventario', + INSUFFICIENT_INVENTORY: 'Inventario insuficiente', + INVALID_ORDER_STATUS: 'Estado de pedido inválido', + TRANSACTION_CREATION_ERROR: 'Error de creación de transacción', + TRANSACTION_PROCESSING_ERROR: 'Error de procesamiento de transacción', + UNKNOWN_ERROR: 'Error desconocido', + FULFILLMENT_CREATION_ERROR: 'Error de creación de cumplimiento', + TAX_CALCULATION_ERROR: 'Error de cálculo de impuestos', + ADDRESS_VERIFICATION_ERROR: 'Error de verificación de dirección', + ADDRESS_MATCHES_ERROR: 'Error de coincidencias de dirección', + SHIPPING_CONFLICT_ERROR: 'Error de conflicto de envío', + SHIPPING_ERROR: 'Error general de envío', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error de cálculo de ajuste de precio', + ORDER_FETCH_ERROR: 'Error al obtener pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_ERROR: 'Error de aplicación de cupón', + DRAFT_ORDER_OPEN_ERROR: 'Error al abrir pedido', + ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + CATALOG_FETCH_ERROR: 'Error al obtener catálogo', + STORE_ID_NOT_FOUND: 'ID de tienda no encontrado', + ORDER_NOT_DRAFT: 'El pedido no está en estado válido', + NO_LINE_ITEMS: 'No se encontraron artículos', + BAD_USER_INPUT: 'Entrada de usuario inválida', + MISSING_SHIPPING_ADDRESS: 'Se requiere dirección de envío', + MISSING_REQUIRED_FIELD: 'Falta campo obligatorio', + CATALOG_API_ERROR: 'Error de servicio de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Servicio de impuestos no disponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Servicio de envío no disponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servicio de ajustes de precios no disponible', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Error al calcular ajustes de precios', + SERVICE_UNAVAILABLE: 'Servicio temporalmente no disponible', + RATE_LIMITED: 'Demasiadas solicitudes, por favor inténtelo más tarde', + TIMEOUT: 'Tiempo de espera agotado', + INTERNAL_ERROR: 'Error interno del servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Se requiere código postal de envío', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Se requiere código de país de envío', + SHIPPING_METHOD_REQUIRED: 'Se requiere método de envío', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de envío', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de facturación', + MISSING_SHIPPING_INFO: 'No se pudo aplicar la dirección o método de envío', + DEPENDENCY_ERROR: 'No podemos procesar su pedido en este momento. Espere un momento e inténtelo de nuevo', + }, }; diff --git a/packages/localizations/src/esPe.ts b/packages/localizations/src/esPe.ts index 13f401e6..c65ee56a 100644 --- a/packages/localizations/src/esPe.ts +++ b/packages/localizations/src/esPe.ts @@ -1,323 +1,316 @@ export const esPe = { - general: { - optional: "opcional", - notes: "Notas", - quantity: "Cantidad", - free: "GRATIS", - closed: "Cerrado", - apply: "Aplicar", - checkoutDisabled: - "El checkout está deshabilitado actualmente. Disculpe las molestias.", - }, - contact: { - title: "Contacto", - description: "", - email: "Correo electrónico", - }, - pickup: { - title: "Recojo en Tienda", - description: - "Haremos todo lo posible para cumplir con el horario de recojo solicitado. Los horarios reales pueden variar.", - location: "Ubicación de Recojo", - date: "Fecha de Recojo", - time: "Horario Preferido de Recojo", - selectStore: "Seleccione una ubicación de tienda", - selectDate: "Seleccione una fecha", - selectTime: "Seleccione un horario de recojo", - storeHours: "Horarios de la Tienda", - seeDetails: "Ver detalles", - noTimeSlots: - "No hay horarios disponibles para la fecha seleccionada. Por favor seleccione otra fecha.", - hoursDisplayed: "Horarios mostrados en su zona horaria local.", - storeOperatesIn: "La tienda opera en zona horaria {timezone}.", - asap: "LO MÁS PRONTO POSIBLE", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - days: { - sunday: "Domingo", - monday: "Lunes", - tuesday: "Martes", - wednesday: "Miércoles", - thursday: "Jueves", - friday: "Viernes", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envío", - shipToAddress: "Enviar a su dirección", - localPickup: "Recojo en Tienda", - pickupFromStore: "Recoger en ubicación de la tienda", - }, - tips: { - title: "Agregar propina", - noTip: "Sin Propina", - customAmount: "Monto Personalizado", - customTipAmount: "Monto de Propina Personalizado", - placeholder: "S/ 0.00", - }, - shipping: { - title: "Envío", - description: "Dirección de envío", - method: "Método de envío", - noShippingMethodAddress: - "Ingrese su dirección para ver los métodos de envío disponibles.", - noShippingMethods: "No se encontraron métodos de envío.", - phone: "Número de Teléfono", - country: "País", - selectCountry: "Seleccionar país", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país", - firstName: "Nombres", - lastName: "Apellidos", - address1: "Dirección", - address2: "Departamento, piso, etc.", - city: "Ciudad", - region: "Departamento/Región", - postalCode: "Código Postal", - notesPlaceholder: "Notas o instrucciones especiales", - addressSuggestion: "¿Quiso decir", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No se proporcionó dirección de origen de envío.", - }, - billing: { - title: "Facturación", - description: "Descripción de facturación", - }, - payment: { - title: "Pago", - description: "Todos los pagos son seguros y encriptados.", - billingAddress: { - title: "Dirección de Facturación", - description: "Ingrese su dirección de facturación.", - useShippingAddress: - "Usar dirección de envío como dirección de facturación", - }, - methods: { - creditCard: "Tarjeta de Crédito o Débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagos en efectivo", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No hay métodos de pago disponibles", - cardNumber: "Número de tarjeta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Fecha de vencimiento (MM / AA)", - securityCode: "Código de seguridad", - cvvPlaceholder: "CVV", - nameOnCard: "Nombre en la tarjeta", - payNow: "Pagar ahora", - standardShipping: "Envío Estándar", - cardDetails: "Detalles de la tarjeta", - payWithApplePay: "Pagar con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Error al inicializar el pago.", - orderTotal: "Total del Pedido", - subtotal: "Subtotal", - tax: "Impuestos", - shipping: "Envío", - discount: "Cupón", - processingPayment: "Procesando pago...", - completingOrder: "Completando pedido...", - freePayment: "Completa tu pedido gratuito", - }, - phone: { - placeholder: "(01) 234-5678", - searchCountry: "Buscar país...", - noCountryFound: "No se encontró el país.", - }, - discounts: { - placeholder: "Código de cupón", - enterCode: "Ingresar código de cupón", - apply: "Aplicar", - alreadyApplied: "Este código de cupón ya fue aplicado", - failedToApply: "Error al aplicar código de cupón", - enterCodeValidation: "Por favor ingrese un código de cupón", - }, - totals: { - subtotal: "Subtotal", - discount: "Descuento", - shipping: "Envío", - tip: "Propina", - estimatedTaxes: "Impuestos estimados", - totalDue: "Total a Pagar", - orderSummary: "Resumen del Pedido", - itemCount: "productos", - noItems: "Sin productos", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Dirección", - suggestions: "Sugerencias", - }, - form: { - useFormFieldError: "useFormField debe usarse dentro de ", - }, - pagination: { - ariaLabel: "paginación", - previousPageAriaLabel: "Ir a la página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir a la página siguiente", - next: "Siguiente", - morePages: "Más páginas", - }, - sidebar: { - useSidebarError: "useSidebar debe usarse dentro de un SidebarProvider.", - toggleSidebar: "Alternar Barra Lateral", - }, - accessibility: { - payWithApplePay: "Pagar con Apple Pay", - applePayLogo: "Logo de Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Error al obtener token de acceso", - invalidEnvironment: "Entorno inválido", - noPublicAccessToken: "No se proporcionó token de acceso público", - noSessionToken: "No se proporcionó token de sesión o ID", - errorCreatingSession: "Error al crear sesión de checkout:", - orderIdRequired: "Se requiere ID del pedido", - errorTrackingEvent: "Error al rastrear evento", - errorInTrackingSubscriber: "Error en suscriptor de rastreo", - useTrackingProviderError: - "useTracking debe usarse dentro de un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect debe usarse dentro de un PoyntCollectProvider", - useSquareProviderError: "useSquare debe usarse dentro de un SquareProvider", - errorProcessingPayment: "Error al procesar el pago", - stripeConfigMissing: - "Falta configuración de Stripe. Por favor verifique su configuración.", - paymentSuccessful: "Pago exitoso", - paymentFailed: "Error en el pago", - paypalConfigMissing: - "Falta configuración de PayPal. Por favor verifique su configuración.", - stripeNotReady: "Stripe no está listo", - cardElementNotFound: "CardElement no encontrado", - errorProcessingCardPayment: "Error al procesar pago con tarjeta.", - errorProcessingExpressPayment: "Error al procesar pago express.", - failedToInitializePayment: "Error al inicializar el pago.", - invalidPhoneNumber: "número de teléfono inválido", - }, - validation: { - phoneRequired: "Se requiere número de teléfono", - emailRequired: "Ingrese un correo electrónico", - emailInvalid: "Ingrese un correo electrónico válido", - phoneTooLong: "Número de teléfono demasiado largo", - invalidShippingAddress: "Dirección de envío inválida", - invalidBillingAddress: "Dirección de facturación inválida", - selectPaymentMethod: "Seleccione un método de pago", - enterValidBillingPhone: - "Ingrese un número de teléfono de facturación válido", - enterValidShippingPhone: "Ingrese un número de teléfono de envío válido", - enterFirstName: "Ingrese sus nombres", - enterLastName: "Ingrese sus apellidos", - enterAddress: "Ingrese una dirección", - enterCity: "Ingrese una ciudad", - enterZipCode: "Ingrese un código postal", - enterZipPostalCode: "Ingrese un código postal", - selectState: "Seleccione un departamento/región", - selectCountry: "Seleccione un país", - enterCountry: "Ingrese un país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error del servidor", - SESSION_NOT_FOUND: "Sesión no encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Error al recuperar sesión de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesión de checkout no encontrada", - CHECKOUT_SESSION_FETCH_ERROR: "Error general al obtener sesión de checkout", - DRAFT_ORDER_NOT_FOUND: "Borrador de pedido no encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "Error al crear sesión de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Datos de sesión creada no encontrados", - CHECKOUT_SESSION_CREATION_ERROR: - "Error general al crear sesión de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Error al actualizar sesión de checkout", - UPDATED_SESSION_NOT_FOUND: "Sesión actualizada no encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: - "Error general al actualizar sesión de checkout", - ORDER_API_NOT_FOUND: "Fuente de datos de API de pedidos no encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "Error al recuperar borrador de pedido", - DATA_SOURCES_NOT_FOUND: "Fuentes de datos no encontradas", - TRANSACTION_API_NOT_FOUND: - "Fuente de datos de API de transacciones no encontrada", - TRANSACTION_PROCESSING_FAILED: "Error al procesar transacción", - TRANSACTION_CREATION_FAILED: "Error al encontrar o crear transacción", - ORDER_OPENING_FAILED: "Error al abrir pedido", - INVALID_FULFILLMENT_LOCATION: "Ubicación de cumplimiento inválida", - NO_VALID_PICKUP_LOCATION: "No hay ubicación de recojo válida disponible", - DRAFT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido", - LINE_ITEMS_FETCH_FAILED: "Error al obtener elementos del pedido", - CURRENT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido actual", - DRAFT_ORDER_UPDATE_FAILED: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_FAILED: "Error al aplicar cupón", - CONTEXT_UNAVAILABLE: "Sesión o fuentes de datos no disponibles", - SHIPPING_LINES_UPDATE_FAILED: "Error al actualizar líneas de envío", - ORDER_TOTALS_UPDATE_FAILED: "Error al actualizar totales del pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "Error al aplicar método de envío", - SKU_FETCH_FAILED: "Error al obtener SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Error al calcular tarifas de envío", - SHIPPING_METHOD_NOT_FOUND: "Método de envío no encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "Error al eliminar método de envío", - SHIPPING_ADDRESS_REQUIRED: "Se requiere dirección de envío", - INVENTORY_VALIDATION_ERROR: "Error de validación de inventario", - INSUFFICIENT_INVENTORY: "Inventario insuficiente", - INVALID_ORDER_STATUS: "Estado de pedido inválido", - TRANSACTION_CREATION_ERROR: "Error de creación de transacción", - TRANSACTION_PROCESSING_ERROR: "Error de procesamiento de transacción", - UNKNOWN_ERROR: "Error desconocido", - FULFILLMENT_CREATION_ERROR: "Error de creación de cumplimiento", - TAX_CALCULATION_ERROR: "Error de cálculo de impuestos", - ADDRESS_VERIFICATION_ERROR: "Error de verificación de dirección", - ADDRESS_MATCHES_ERROR: "Error de coincidencias de dirección", - SHIPPING_CONFLICT_ERROR: "Error de conflicto de envío", - SHIPPING_ERROR: "Error general de envío", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error de cálculo de ajuste de precio", - ORDER_FETCH_ERROR: "Error al obtener pedido", - DRAFT_ORDER_UPDATE_ERROR: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_ERROR: "Error de aplicación de cupón", - DRAFT_ORDER_OPEN_ERROR: "Error al abrir borrador de pedido", - ORDER_UPDATE_ERROR: "Error al actualizar pedido", - CATALOG_FETCH_ERROR: "Error al obtener catálogo", - STORE_ID_NOT_FOUND: "ID de tienda no encontrado", - ORDER_NOT_DRAFT: "El pedido no está en estado de borrador", - NO_LINE_ITEMS: "No se encontraron artículos", - BAD_USER_INPUT: "Entrada de usuario inválida", - MISSING_SHIPPING_ADDRESS: "Se requiere dirección de envío", - MISSING_REQUIRED_FIELD: "Falta campo obligatorio", - CATALOG_API_ERROR: "Error de servicio de catálogo", - TAX_SERVICE_UNAVAILABLE: "Servicio de impuestos no disponible", - SHIPPING_SERVICE_UNAVAILABLE: "Servicio de envío no disponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servicio de ajustes de precios no disponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Error al calcular ajustes de precios", - SERVICE_UNAVAILABLE: "Servicio temporalmente no disponible", - RATE_LIMITED: "Demasiadas solicitudes, por favor inténtelo más tarde", - TIMEOUT: "Tiempo de espera agotado", - INTERNAL_ERROR: "Error interno del servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Se requiere código postal de envío", - SHIPPING_COUNTRY_CODE_REQUIRED: "Se requiere código de país de envío", - SHIPPING_METHOD_REQUIRED: "Se requiere método de envío", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de envío", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de facturación", - }, + general: { + optional: 'opcional', + notes: 'Notas', + quantity: 'Cantidad', + free: 'GRATIS', + closed: 'Cerrado', + apply: 'Aplicar', + checkoutDisabled: 'El checkout está deshabilitado actualmente. Disculpe las molestias.', + }, + contact: { + title: 'Contacto', + description: '', + email: 'Correo electrónico', + }, + pickup: { + title: 'Recojo en Tienda', + description: 'Haremos todo lo posible para cumplir con el horario de recojo solicitado. Los horarios reales pueden variar.', + location: 'Ubicación de Recojo', + date: 'Fecha de Recojo', + time: 'Horario Preferido de Recojo', + selectStore: 'Seleccione una ubicación de tienda', + selectDate: 'Seleccione una fecha', + selectTime: 'Seleccione un horario de recojo', + storeHours: 'Horarios de la Tienda', + seeDetails: 'Ver detalles', + noTimeSlots: 'No hay horarios disponibles para la fecha seleccionada. Por favor seleccione otra fecha.', + hoursDisplayed: 'Horarios mostrados en su zona horaria local.', + storeOperatesIn: 'La tienda opera en zona horaria {timezone}.', + asap: 'LO MÁS PRONTO POSIBLE', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + days: { + sunday: 'Domingo', + monday: 'Lunes', + tuesday: 'Martes', + wednesday: 'Miércoles', + thursday: 'Jueves', + friday: 'Viernes', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envío', + shipToAddress: 'Enviar a su dirección', + localPickup: 'Recojo en Tienda', + pickupFromStore: 'Recoger en ubicación de la tienda', + }, + tips: { + title: 'Agregar propina', + noTip: 'Sin Propina', + customAmount: 'Monto Personalizado', + customTipAmount: 'Monto de Propina Personalizado', + placeholder: 'S/ 0.00', + }, + shipping: { + title: 'Envío', + description: 'Dirección de envío', + method: 'Método de envío', + noShippingMethodAddress: 'Ingrese su dirección para ver los métodos de envío disponibles.', + noShippingMethods: 'No se encontraron métodos de envío.', + phone: 'Número de Teléfono', + country: 'País', + selectCountry: 'Seleccionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país', + firstName: 'Nombres', + lastName: 'Apellidos', + address1: 'Dirección', + address2: 'Departamento, piso, etc.', + city: 'Ciudad', + region: 'Departamento/Región', + postalCode: 'Código Postal', + notesPlaceholder: 'Notas o instrucciones especiales', + addressSuggestion: '¿Quiso decir', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No se proporcionó dirección de origen de envío.', + }, + billing: { + title: 'Facturación', + description: 'Descripción de facturación', + }, + payment: { + title: 'Pago', + description: 'Todos los pagos son seguros y encriptados.', + billingAddress: { + title: 'Dirección de Facturación', + description: 'Ingrese su dirección de facturación.', + useShippingAddress: 'Usar dirección de envío como dirección de facturación', + }, + methods: { + creditCard: 'Tarjeta de Crédito o Débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagos en efectivo', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No hay métodos de pago disponibles', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Fecha de vencimiento (MM / AA)', + securityCode: 'Código de seguridad', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nombre en la tarjeta', + payNow: 'Pagar ahora', + standardShipping: 'Envío Estándar', + cardDetails: 'Detalles de la tarjeta', + payWithApplePay: 'Pagar con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Error al inicializar el pago.', + orderTotal: 'Total del Pedido', + subtotal: 'Subtotal', + tax: 'Impuestos', + shipping: 'Envío', + discount: 'Cupón', + processingPayment: 'Procesando pago...', + completingOrder: 'Completando pedido...', + completeOrder: 'Completar tu pedido', + freePayment: 'Completa tu pedido gratuito', + }, + phone: { + placeholder: '(01) 234-5678', + searchCountry: 'Buscar país...', + noCountryFound: 'No se encontró el país.', + }, + discounts: { + placeholder: 'Código de cupón', + enterCode: 'Ingresar código de cupón', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupón ya fue aplicado', + failedToApply: 'Error al aplicar código de cupón', + enterCodeValidation: 'Por favor ingrese un código de cupón', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Descuento', + shipping: 'Envío', + tip: 'Propina', + estimatedTaxes: 'Impuestos estimados', + totalDue: 'Total a Pagar', + orderSummary: 'Resumen del Pedido', + itemCount: 'productos', + noItems: 'Sin productos', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Dirección', + suggestions: 'Sugerencias', + }, + form: { + useFormFieldError: 'useFormField debe usarse dentro de ', + }, + pagination: { + ariaLabel: 'paginación', + previousPageAriaLabel: 'Ir a la página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir a la página siguiente', + next: 'Siguiente', + morePages: 'Más páginas', + }, + sidebar: { + useSidebarError: 'useSidebar debe usarse dentro de un SidebarProvider.', + toggleSidebar: 'Alternar Barra Lateral', + }, + accessibility: { + payWithApplePay: 'Pagar con Apple Pay', + applePayLogo: 'Logo de Apple Pay', + close: 'Cerrar', + additionalTipOptions: 'Opciones de propina adicionales', + breadcrumb: 'ruta de navegación', + more: 'Más', + previousSlide: 'Diapositiva anterior', + nextSlide: 'Siguiente diapositiva', + }, + }, + errors: { + failedToGetAccessToken: 'Error al obtener token de acceso', + invalidEnvironment: 'Entorno inválido', + noPublicAccessToken: 'No se proporcionó token de acceso público', + noSessionToken: 'No se proporcionó token de sesión o ID', + errorCreatingSession: 'Error al crear sesión de checkout:', + orderIdRequired: 'Se requiere ID del pedido', + errorTrackingEvent: 'Error al rastrear evento', + errorInTrackingSubscriber: 'Error en suscriptor de rastreo', + useTrackingProviderError: 'useTracking debe usarse dentro de un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect debe usarse dentro de un PoyntCollectProvider', + useSquareProviderError: 'useSquare debe usarse dentro de un SquareProvider', + errorProcessingPayment: 'Error al procesar el pago', + stripeConfigMissing: 'Falta configuración de Stripe. Por favor verifique su configuración.', + paymentSuccessful: 'Pago exitoso', + paymentFailed: 'Error en el pago', + paypalConfigMissing: 'Falta configuración de PayPal. Por favor verifique su configuración.', + stripeNotReady: 'Stripe no está listo', + cardElementNotFound: 'CardElement no encontrado', + errorProcessingCardPayment: 'Error al procesar pago con tarjeta.', + errorProcessingExpressPayment: 'Error al procesar pago express.', + failedToInitializePayment: 'Error al inicializar el pago.', + invalidPhoneNumber: 'número de teléfono inválido', + }, + validation: { + phoneRequired: 'Se requiere número de teléfono', + emailRequired: 'Ingrese un correo electrónico', + emailInvalid: 'Ingrese un correo electrónico válido', + phoneTooLong: 'Número de teléfono demasiado largo', + invalidShippingAddress: 'Dirección de envío inválida', + invalidBillingAddress: 'Dirección de facturación inválida', + selectPaymentMethod: 'Seleccione un método de pago', + enterValidBillingPhone: 'Ingrese un número de teléfono de facturación válido', + enterValidShippingPhone: 'Ingrese un número de teléfono de envío válido', + enterFirstName: 'Ingrese sus nombres', + enterLastName: 'Ingrese sus apellidos', + enterAddress: 'Ingrese una dirección', + enterCity: 'Ingrese una ciudad', + enterZipCode: 'Ingrese un código postal', + enterZipPostalCode: 'Ingrese un código postal', + selectState: 'Seleccione un departamento/región', + selectCountry: 'Seleccione un país', + enterCountry: 'Ingrese un país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error del servidor', + SESSION_NOT_FOUND: 'Sesión no encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Error al recuperar sesión de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesión de checkout no encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Error general al obtener sesión de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido no encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'Error al crear sesión de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Datos de sesión creada no encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Error general al crear sesión de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Error al actualizar sesión de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesión actualizada no encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error general al actualizar sesión de checkout', + ORDER_API_NOT_FOUND: 'Fuente de datos de API de pedidos no encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Error al recuperar pedido', + DATA_SOURCES_NOT_FOUND: 'Fuentes de datos no encontradas', + TRANSACTION_API_NOT_FOUND: 'Fuente de datos de API de transacciones no encontrada', + TRANSACTION_PROCESSING_FAILED: 'Error al procesar transacción', + TRANSACTION_CREATION_FAILED: 'Error al encontrar o crear transacción', + ORDER_OPENING_FAILED: 'Error al abrir pedido', + INVALID_FULFILLMENT_LOCATION: 'Ubicación de cumplimiento inválida', + NO_VALID_PICKUP_LOCATION: 'No hay ubicación de recojo válida disponible', + DRAFT_ORDER_FETCH_FAILED: 'Error al obtener pedido', + LINE_ITEMS_FETCH_FAILED: 'Error al obtener elementos del pedido', + CURRENT_ORDER_FETCH_FAILED: 'Error al obtener pedido actual', + DRAFT_ORDER_UPDATE_FAILED: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_FAILED: 'Error al aplicar cupón', + CONTEXT_UNAVAILABLE: 'Sesión o fuentes de datos no disponibles', + SHIPPING_LINES_UPDATE_FAILED: 'Error al actualizar líneas de envío', + ORDER_TOTALS_UPDATE_FAILED: 'Error al actualizar totales del pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'Error al calcular totales del pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'Error al aplicar método de envío', + SKU_FETCH_FAILED: 'Error al obtener SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Error al calcular tarifas de envío', + SHIPPING_METHOD_NOT_FOUND: 'Método de envío no encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'Error al eliminar método de envío', + SHIPPING_ADDRESS_REQUIRED: 'Se requiere dirección de envío', + INVENTORY_VALIDATION_ERROR: 'Error de validación de inventario', + INSUFFICIENT_INVENTORY: 'Inventario insuficiente', + INVALID_ORDER_STATUS: 'Estado de pedido inválido', + TRANSACTION_CREATION_ERROR: 'Error de creación de transacción', + TRANSACTION_PROCESSING_ERROR: 'Error de procesamiento de transacción', + UNKNOWN_ERROR: 'Error desconocido', + FULFILLMENT_CREATION_ERROR: 'Error de creación de cumplimiento', + TAX_CALCULATION_ERROR: 'Error de cálculo de impuestos', + ADDRESS_VERIFICATION_ERROR: 'Error de verificación de dirección', + ADDRESS_MATCHES_ERROR: 'Error de coincidencias de dirección', + SHIPPING_CONFLICT_ERROR: 'Error de conflicto de envío', + SHIPPING_ERROR: 'Error general de envío', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error de cálculo de ajuste de precio', + ORDER_FETCH_ERROR: 'Error al obtener pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_ERROR: 'Error de aplicación de cupón', + DRAFT_ORDER_OPEN_ERROR: 'Error al abrir pedido', + ORDER_UPDATE_ERROR: 'Error al actualizar pedido', + CATALOG_FETCH_ERROR: 'Error al obtener catálogo', + STORE_ID_NOT_FOUND: 'ID de tienda no encontrado', + ORDER_NOT_DRAFT: 'El pedido no está en estado válido', + NO_LINE_ITEMS: 'No se encontraron artículos', + BAD_USER_INPUT: 'Entrada de usuario inválida', + MISSING_SHIPPING_ADDRESS: 'Se requiere dirección de envío', + MISSING_REQUIRED_FIELD: 'Falta campo obligatorio', + CATALOG_API_ERROR: 'Error de servicio de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Servicio de impuestos no disponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Servicio de envío no disponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servicio de ajustes de precios no disponible', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Error al calcular ajustes de precios', + SERVICE_UNAVAILABLE: 'Servicio temporalmente no disponible', + RATE_LIMITED: 'Demasiadas solicitudes, por favor inténtelo más tarde', + TIMEOUT: 'Tiempo de espera agotado', + INTERNAL_ERROR: 'Error interno del servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Se requiere código postal de envío', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Se requiere código de país de envío', + SHIPPING_METHOD_REQUIRED: 'Se requiere método de envío', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de envío', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de facturación', + MISSING_SHIPPING_INFO: 'No se pudo aplicar la dirección o método de envío', + DEPENDENCY_ERROR: 'No podemos procesar su pedido en este momento. Espere un momento e inténtelo de nuevo', + }, }; diff --git a/packages/localizations/src/esUs.ts b/packages/localizations/src/esUs.ts index 783c8c4d..51cb7d97 100644 --- a/packages/localizations/src/esUs.ts +++ b/packages/localizations/src/esUs.ts @@ -1,323 +1,316 @@ export const esUs = { - general: { - optional: "opcional", - notes: "Notas", - quantity: "Cantidad", - free: "GRATIS", - closed: "Cerrado", - apply: "Aplicar", - checkoutDisabled: - "El checkout está deshabilitado temporalmente. Disculpe las molestias.", - }, - contact: { - title: "Contacto", - description: "", - email: "Email", - }, - pickup: { - title: "Recogida Local", - description: - "Haremos todo lo posible para cumplir con su hora de recogida esperada. Los horarios reales pueden variar.", - location: "Ubicación de Recogida", - date: "Fecha de Recogida", - time: "Hora Preferida de Recogida", - selectStore: "Seleccionar una tienda", - selectDate: "Seleccionar una fecha", - selectTime: "Seleccionar una hora de recogida", - storeHours: "Horarios de la Tienda", - seeDetails: "Ver detalles", - noTimeSlots: - "No hay horarios disponibles para la fecha seleccionada. Por favor seleccione otra fecha.", - hoursDisplayed: "Horarios mostrados en su zona horaria local.", - storeOperatesIn: "La tienda opera en la zona horaria {timezone}.", - asap: "Lo antes posible", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "País no encontrado.", - }, - days: { - sunday: "Domingo", - monday: "Lunes", - tuesday: "Martes", - wednesday: "Miércoles", - thursday: "Jueves", - friday: "Viernes", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envío", - shipToAddress: "Enviar a su dirección", - localPickup: "Recogida Local", - pickupFromStore: "Recoger en la tienda", - }, - tips: { - title: "Agregar propina", - noTip: "Sin Propina", - customAmount: "Cantidad Personalizada", - customTipAmount: "Cantidad de Propina Personalizada", - placeholder: "$0.00", - }, - shipping: { - title: "Envío", - description: "Dirección de envío", - method: "Método de envío", - noShippingMethodAddress: - "Ingrese su dirección para ver los métodos de envío disponibles.", - noShippingMethods: "No se encontraron métodos de envío.", - phone: "Número de Teléfono", - country: "País", - selectCountry: "Seleccionar país", - searchCountry: "Buscar país...", - noCountryFound: "País no encontrado", - firstName: "Nombre", - lastName: "Apellido", - address1: "Dirección", - address2: "Apartamento, suite, etc.", - city: "Ciudad", - region: "Estado/Provincia", - postalCode: "Código Postal", - notesPlaceholder: "Notas o instrucciones especiales", - addressSuggestion: "¿Quiso decir", - addressSuggestionEnd: "?", - noShippingOriginAddress: "No se proporcionó dirección de origen de envío.", - }, - billing: { - title: "Facturación", - description: "Descripción de facturación", - }, - payment: { - title: "Pago", - description: "Todos los pagos son seguros y encriptados.", - billingAddress: { - title: "Dirección de Facturación", - description: "Ingrese su dirección de facturación.", - useShippingAddress: - "Usar la dirección de envío como dirección de facturación", - }, - methods: { - creditCard: "Tarjeta de Crédito o Débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagos offline", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "No hay métodos de pago disponibles", - cardNumber: "Número de tarjeta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Fecha de vencimiento (MM / AA)", - securityCode: "Código de seguridad", - cvvPlaceholder: "CVV", - nameOnCard: "Nombre en la tarjeta", - payNow: "Pagar ahora", - standardShipping: "Envío Estándar", - cardDetails: "Detalles de la tarjeta", - payWithApplePay: "Pagar con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Error al inicializar el pago.", - orderTotal: "Total del Pedido", - subtotal: "Subtotal", - tax: "Impuesto", - shipping: "Envío", - discount: "Cupón", - processingPayment: "Procesando pago...", - completingOrder: "Completando pedido...", - freePayment: "Completa tu pedido gratuito", - }, - phone: { - placeholder: "(201) 555-1234", - searchCountry: "Buscar país...", - noCountryFound: "País no encontrado.", - }, - discounts: { - placeholder: "Código de cupón", - enterCode: "Ingresar código de cupón", - apply: "Aplicar", - alreadyApplied: "Este código de cupón ya ha sido aplicado", - failedToApply: "Error al aplicar el código de cupón", - enterCodeValidation: "Por favor ingrese un código de cupón", - }, - totals: { - subtotal: "Subtotal", - discount: "Descuento", - shipping: "Envío", - tip: "Propina", - estimatedTaxes: "Impuestos estimados", - totalDue: "Total a Pagar", - orderSummary: "Resumen del Pedido", - itemCount: "artículos", - noItems: "Sin artículos", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Dirección", - suggestions: "Sugerencias", - }, - form: { - useFormFieldError: "useFormField debe usarse dentro de ", - }, - pagination: { - ariaLabel: "paginación", - previousPageAriaLabel: "Ir a la página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir a la página siguiente", - next: "Siguiente", - morePages: "Más páginas", - }, - sidebar: { - useSidebarError: "useSidebar debe usarse dentro de un SidebarProvider.", - toggleSidebar: "Alternar Sidebar", - }, - accessibility: { - payWithApplePay: "Pagar con Apple Pay", - applePayLogo: "Logo de Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Error al obtener el token de acceso", - invalidEnvironment: "Ambiente inválido", - noPublicAccessToken: "No se proporcionó token de acceso público", - noSessionToken: "No se proporcionó token de sesión o ID", - errorCreatingSession: "Error al crear sesión de checkout:", - orderIdRequired: "ID del pedido es requerido", - errorTrackingEvent: "Error al rastrear evento", - errorInTrackingSubscriber: "Error en el suscriptor de rastreo", - useTrackingProviderError: - "useTracking debe usarse dentro de un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect debe usarse dentro de un PoyntCollectProvider", - useSquareProviderError: "useSquare debe usarse dentro de un SquareProvider", - errorProcessingPayment: "Error al procesar el pago", - stripeConfigMissing: - "La configuración de Stripe está faltando. Por favor verifique su configuración.", - paymentSuccessful: "Pago exitoso", - paymentFailed: "Pago falló", - paypalConfigMissing: - "La configuración de PayPal está faltando. Por favor verifique su configuración.", - stripeNotReady: "Stripe no está listo", - cardElementNotFound: "CardElement no encontrado", - errorProcessingCardPayment: "Error al procesar pago con tarjeta.", - errorProcessingExpressPayment: "Error al procesar pago express.", - failedToInitializePayment: "Error al inicializar el pago.", - invalidPhoneNumber: "número de teléfono inválido", - }, - validation: { - phoneRequired: "Número de teléfono es requerido", - emailRequired: "Ingrese un email", - emailInvalid: "Ingrese un email válido", - phoneTooLong: "Número de teléfono muy largo", - invalidShippingAddress: "Dirección de envío inválida", - invalidBillingAddress: "Dirección de facturación inválida", - selectPaymentMethod: "Seleccione un método de pago", - enterValidBillingPhone: - "Ingrese un número de teléfono de facturación válido", - enterValidShippingPhone: "Ingrese un número de teléfono de envío válido", - enterFirstName: "Ingrese un nombre", - enterLastName: "Ingrese un apellido", - enterAddress: "Ingrese una dirección", - enterCity: "Ingrese una ciudad", - enterZipCode: "Ingrese un ZIP code", - enterZipPostalCode: "Ingrese un ZIP / código postal", - selectState: "Seleccione un estado/provincia", - selectCountry: "Seleccione un país", - enterCountry: "Ingrese un país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error del servidor", - SESSION_NOT_FOUND: "Sesión no encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Error al recuperar sesión de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesión de checkout no encontrada", - CHECKOUT_SESSION_FETCH_ERROR: "Error general al obtener sesión de checkout", - DRAFT_ORDER_NOT_FOUND: "Borrador de pedido no encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "Error al crear sesión de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Datos de sesión creada no encontrados", - CHECKOUT_SESSION_CREATION_ERROR: - "Error general al crear sesión de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Error al actualizar sesión de checkout", - UPDATED_SESSION_NOT_FOUND: "Sesión actualizada no encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: - "Error general al actualizar sesión de checkout", - ORDER_API_NOT_FOUND: "Fuente de datos de Order API no encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "Error al recuperar borrador de pedido", - DATA_SOURCES_NOT_FOUND: "Fuentes de datos no encontradas", - TRANSACTION_API_NOT_FOUND: - "Fuente de datos de Transaction API no encontrada", - TRANSACTION_PROCESSING_FAILED: "Error al procesar transacción", - TRANSACTION_CREATION_FAILED: "Error al encontrar o crear transacción", - ORDER_OPENING_FAILED: "Error al abrir pedido", - INVALID_FULFILLMENT_LOCATION: "Ubicación de cumplimiento inválida", - NO_VALID_PICKUP_LOCATION: "No hay ubicación de recogida válida disponible", - DRAFT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido", - LINE_ITEMS_FETCH_FAILED: "Error al obtener artículos de línea", - CURRENT_ORDER_FETCH_FAILED: "Error al obtener borrador de pedido actual", - DRAFT_ORDER_UPDATE_FAILED: "Error al actualizar borrador de pedido", - DISCOUNT_APPLICATION_FAILED: "Error al aplicar cupón", - CONTEXT_UNAVAILABLE: "Sesión o fuentes de datos no disponibles", - SHIPPING_LINES_UPDATE_FAILED: "Error al actualizar líneas de envío", - ORDER_TOTALS_UPDATE_FAILED: "Error al actualizar totales del pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "Error al aplicar método de envío", - SKU_FETCH_FAILED: "Error al obtener SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Error al calcular tarifas de envío", - SHIPPING_METHOD_NOT_FOUND: "Método de envío no encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "Error al remover método de envío", - SHIPPING_ADDRESS_REQUIRED: "Dirección de envío requerida", - INVENTORY_VALIDATION_ERROR: "Error de validación de inventario", - INSUFFICIENT_INVENTORY: "Inventario insuficiente", - INVALID_ORDER_STATUS: "Estado de pedido inválido", - TRANSACTION_CREATION_ERROR: "Error de creación de transacción", - TRANSACTION_PROCESSING_ERROR: "Error de procesamiento de transacción", - UNKNOWN_ERROR: "Error desconocido", - FULFILLMENT_CREATION_ERROR: "Error de creación de cumplimiento", - TAX_CALCULATION_ERROR: "Error de cálculo de impuestos", - ADDRESS_VERIFICATION_ERROR: "Error de verificación de dirección", - ADDRESS_MATCHES_ERROR: "Error de coincidencias de dirección", - SHIPPING_CONFLICT_ERROR: "Error de conflicto de envío", - SHIPPING_ERROR: "Error general de envío", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error de cálculo de ajuste de precio", - ORDER_FETCH_ERROR: "Error al obtener pedido", - DRAFT_ORDER_UPDATE_ERROR: "Error de actualización de borrador de pedido", - DISCOUNT_APPLICATION_ERROR: "Error de aplicación de cupón", - DRAFT_ORDER_OPEN_ERROR: "Error al abrir borrador de pedido", - ORDER_UPDATE_ERROR: "Error de actualización de pedido", - CATALOG_FETCH_ERROR: "Error al obtener catálogo", - STORE_ID_NOT_FOUND: "ID de tienda no encontrado", - ORDER_NOT_DRAFT: "El pedido no está en estado de borrador", - NO_LINE_ITEMS: "No se encontraron artículos", - BAD_USER_INPUT: "Entrada de usuario inválida", - MISSING_SHIPPING_ADDRESS: "Se requiere dirección de envío", - MISSING_REQUIRED_FIELD: "Falta campo obligatorio", - CATALOG_API_ERROR: "Error de servicio de catálogo", - TAX_SERVICE_UNAVAILABLE: "Servicio de impuestos no disponible", - SHIPPING_SERVICE_UNAVAILABLE: "Servicio de envío no disponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servicio de ajustes de precios no disponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Error al calcular ajustes de precios", - SERVICE_UNAVAILABLE: "Servicio temporalmente no disponible", - RATE_LIMITED: "Demasiadas solicitudes, por favor inténtelo más tarde", - TIMEOUT: "Tiempo de espera agotado", - INTERNAL_ERROR: "Error interno del servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Se requiere código postal de envío", - SHIPPING_COUNTRY_CODE_REQUIRED: "Se requiere código de país de envío", - SHIPPING_METHOD_REQUIRED: "Se requiere método de envío", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de envío", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falló la verificación de dirección de facturación", - }, + general: { + optional: 'opcional', + notes: 'Notas', + quantity: 'Cantidad', + free: 'GRATIS', + closed: 'Cerrado', + apply: 'Aplicar', + checkoutDisabled: 'El checkout está deshabilitado temporalmente. Disculpe las molestias.', + }, + contact: { + title: 'Contacto', + description: '', + email: 'Email', + }, + pickup: { + title: 'Recogida Local', + description: 'Haremos todo lo posible para cumplir con su hora de recogida esperada. Los horarios reales pueden variar.', + location: 'Ubicación de Recogida', + date: 'Fecha de Recogida', + time: 'Hora Preferida de Recogida', + selectStore: 'Seleccionar una tienda', + selectDate: 'Seleccionar una fecha', + selectTime: 'Seleccionar una hora de recogida', + storeHours: 'Horarios de la Tienda', + seeDetails: 'Ver detalles', + noTimeSlots: 'No hay horarios disponibles para la fecha seleccionada. Por favor seleccione otra fecha.', + hoursDisplayed: 'Horarios mostrados en su zona horaria local.', + storeOperatesIn: 'La tienda opera en la zona horaria {timezone}.', + asap: 'Lo antes posible', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'País no encontrado.', + }, + days: { + sunday: 'Domingo', + monday: 'Lunes', + tuesday: 'Martes', + wednesday: 'Miércoles', + thursday: 'Jueves', + friday: 'Viernes', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envío', + shipToAddress: 'Enviar a su dirección', + localPickup: 'Recogida Local', + pickupFromStore: 'Recoger en la tienda', + }, + tips: { + title: 'Agregar propina', + noTip: 'Sin Propina', + customAmount: 'Cantidad Personalizada', + customTipAmount: 'Cantidad de Propina Personalizada', + placeholder: '$0.00', + }, + shipping: { + title: 'Envío', + description: 'Dirección de envío', + method: 'Método de envío', + noShippingMethodAddress: 'Ingrese su dirección para ver los métodos de envío disponibles.', + noShippingMethods: 'No se encontraron métodos de envío.', + phone: 'Número de Teléfono', + country: 'País', + selectCountry: 'Seleccionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'País no encontrado', + firstName: 'Nombre', + lastName: 'Apellido', + address1: 'Dirección', + address2: 'Apartamento, suite, etc.', + city: 'Ciudad', + region: 'Estado/Provincia', + postalCode: 'Código Postal', + notesPlaceholder: 'Notas o instrucciones especiales', + addressSuggestion: '¿Quiso decir', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'No se proporcionó dirección de origen de envío.', + }, + billing: { + title: 'Facturación', + description: 'Descripción de facturación', + }, + payment: { + title: 'Pago', + description: 'Todos los pagos son seguros y encriptados.', + billingAddress: { + title: 'Dirección de Facturación', + description: 'Ingrese su dirección de facturación.', + useShippingAddress: 'Usar la dirección de envío como dirección de facturación', + }, + methods: { + creditCard: 'Tarjeta de Crédito o Débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagos offline', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'No hay métodos de pago disponibles', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Fecha de vencimiento (MM / AA)', + securityCode: 'Código de seguridad', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nombre en la tarjeta', + payNow: 'Pagar ahora', + standardShipping: 'Envío Estándar', + cardDetails: 'Detalles de la tarjeta', + payWithApplePay: 'Pagar con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Error al inicializar el pago.', + orderTotal: 'Total del Pedido', + subtotal: 'Subtotal', + tax: 'Impuesto', + shipping: 'Envío', + discount: 'Cupón', + processingPayment: 'Procesando pago...', + completingOrder: 'Completando pedido...', + completeOrder: 'Completar tu pedido', + freePayment: 'Completa tu pedido gratuito', + }, + phone: { + placeholder: '(201) 555-1234', + searchCountry: 'Buscar país...', + noCountryFound: 'País no encontrado.', + }, + discounts: { + placeholder: 'Código de cupón', + enterCode: 'Ingresar código de cupón', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupón ya ha sido aplicado', + failedToApply: 'Error al aplicar el código de cupón', + enterCodeValidation: 'Por favor ingrese un código de cupón', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Descuento', + shipping: 'Envío', + tip: 'Propina', + estimatedTaxes: 'Impuestos estimados', + totalDue: 'Total a Pagar', + orderSummary: 'Resumen del Pedido', + itemCount: 'artículos', + noItems: 'Sin artículos', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Dirección', + suggestions: 'Sugerencias', + }, + form: { + useFormFieldError: 'useFormField debe usarse dentro de ', + }, + pagination: { + ariaLabel: 'paginación', + previousPageAriaLabel: 'Ir a la página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir a la página siguiente', + next: 'Siguiente', + morePages: 'Más páginas', + }, + sidebar: { + useSidebarError: 'useSidebar debe usarse dentro de un SidebarProvider.', + toggleSidebar: 'Alternar Sidebar', + }, + accessibility: { + payWithApplePay: 'Pagar con Apple Pay', + applePayLogo: 'Logo de Apple Pay', + close: 'Cerrar', + additionalTipOptions: 'Opciones de propina adicionales', + breadcrumb: 'ruta de navegación', + more: 'Más', + previousSlide: 'Diapositiva anterior', + nextSlide: 'Siguiente diapositiva', + }, + }, + errors: { + failedToGetAccessToken: 'Error al obtener el token de acceso', + invalidEnvironment: 'Ambiente inválido', + noPublicAccessToken: 'No se proporcionó token de acceso público', + noSessionToken: 'No se proporcionó token de sesión o ID', + errorCreatingSession: 'Error al crear sesión de checkout:', + orderIdRequired: 'ID del pedido es requerido', + errorTrackingEvent: 'Error al rastrear evento', + errorInTrackingSubscriber: 'Error en el suscriptor de rastreo', + useTrackingProviderError: 'useTracking debe usarse dentro de un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect debe usarse dentro de un PoyntCollectProvider', + useSquareProviderError: 'useSquare debe usarse dentro de un SquareProvider', + errorProcessingPayment: 'Error al procesar el pago', + stripeConfigMissing: 'La configuración de Stripe está faltando. Por favor verifique su configuración.', + paymentSuccessful: 'Pago exitoso', + paymentFailed: 'Pago falló', + paypalConfigMissing: 'La configuración de PayPal está faltando. Por favor verifique su configuración.', + stripeNotReady: 'Stripe no está listo', + cardElementNotFound: 'CardElement no encontrado', + errorProcessingCardPayment: 'Error al procesar pago con tarjeta.', + errorProcessingExpressPayment: 'Error al procesar pago express.', + failedToInitializePayment: 'Error al inicializar el pago.', + invalidPhoneNumber: 'número de teléfono inválido', + }, + validation: { + phoneRequired: 'Número de teléfono es requerido', + emailRequired: 'Ingrese un email', + emailInvalid: 'Ingrese un email válido', + phoneTooLong: 'Número de teléfono muy largo', + invalidShippingAddress: 'Dirección de envío inválida', + invalidBillingAddress: 'Dirección de facturación inválida', + selectPaymentMethod: 'Seleccione un método de pago', + enterValidBillingPhone: 'Ingrese un número de teléfono de facturación válido', + enterValidShippingPhone: 'Ingrese un número de teléfono de envío válido', + enterFirstName: 'Ingrese un nombre', + enterLastName: 'Ingrese un apellido', + enterAddress: 'Ingrese una dirección', + enterCity: 'Ingrese una ciudad', + enterZipCode: 'Ingrese un ZIP code', + enterZipPostalCode: 'Ingrese un ZIP / código postal', + selectState: 'Seleccione un estado/provincia', + selectCountry: 'Seleccione un país', + enterCountry: 'Ingrese un país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error del servidor', + SESSION_NOT_FOUND: 'Sesión no encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Error al recuperar sesión de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesión de checkout no encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Error general al obtener sesión de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido no encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'Error al crear sesión de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Datos de sesión creada no encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Error general al crear sesión de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Error al actualizar sesión de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesión actualizada no encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error general al actualizar sesión de checkout', + ORDER_API_NOT_FOUND: 'Fuente de datos de Order API no encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Error al recuperar pedido', + DATA_SOURCES_NOT_FOUND: 'Fuentes de datos no encontradas', + TRANSACTION_API_NOT_FOUND: 'Fuente de datos de Transaction API no encontrada', + TRANSACTION_PROCESSING_FAILED: 'Error al procesar transacción', + TRANSACTION_CREATION_FAILED: 'Error al encontrar o crear transacción', + ORDER_OPENING_FAILED: 'Error al abrir pedido', + INVALID_FULFILLMENT_LOCATION: 'Ubicación de cumplimiento inválida', + NO_VALID_PICKUP_LOCATION: 'No hay ubicación de recogida válida disponible', + DRAFT_ORDER_FETCH_FAILED: 'Error al obtener pedido', + LINE_ITEMS_FETCH_FAILED: 'Error al obtener artículos de línea', + CURRENT_ORDER_FETCH_FAILED: 'Error al obtener pedido actual', + DRAFT_ORDER_UPDATE_FAILED: 'Error al actualizar pedido', + DISCOUNT_APPLICATION_FAILED: 'Error al aplicar cupón', + CONTEXT_UNAVAILABLE: 'Sesión o fuentes de datos no disponibles', + SHIPPING_LINES_UPDATE_FAILED: 'Error al actualizar líneas de envío', + ORDER_TOTALS_UPDATE_FAILED: 'Error al actualizar totales del pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'Error al calcular totales del pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'Error al aplicar método de envío', + SKU_FETCH_FAILED: 'Error al obtener SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Error al calcular tarifas de envío', + SHIPPING_METHOD_NOT_FOUND: 'Método de envío no encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'Error al remover método de envío', + SHIPPING_ADDRESS_REQUIRED: 'Dirección de envío requerida', + INVENTORY_VALIDATION_ERROR: 'Error de validación de inventario', + INSUFFICIENT_INVENTORY: 'Inventario insuficiente', + INVALID_ORDER_STATUS: 'Estado de pedido inválido', + TRANSACTION_CREATION_ERROR: 'Error de creación de transacción', + TRANSACTION_PROCESSING_ERROR: 'Error de procesamiento de transacción', + UNKNOWN_ERROR: 'Error desconocido', + FULFILLMENT_CREATION_ERROR: 'Error de creación de cumplimiento', + TAX_CALCULATION_ERROR: 'Error de cálculo de impuestos', + ADDRESS_VERIFICATION_ERROR: 'Error de verificación de dirección', + ADDRESS_MATCHES_ERROR: 'Error de coincidencias de dirección', + SHIPPING_CONFLICT_ERROR: 'Error de conflicto de envío', + SHIPPING_ERROR: 'Error general de envío', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error de cálculo de ajuste de precio', + ORDER_FETCH_ERROR: 'Error al obtener pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Error de actualización de pedido', + DISCOUNT_APPLICATION_ERROR: 'Error de aplicación de cupón', + DRAFT_ORDER_OPEN_ERROR: 'Error al abrir pedido', + ORDER_UPDATE_ERROR: 'Error de actualización de pedido', + CATALOG_FETCH_ERROR: 'Error al obtener catálogo', + STORE_ID_NOT_FOUND: 'ID de tienda no encontrado', + ORDER_NOT_DRAFT: 'El pedido no está en estado válido', + NO_LINE_ITEMS: 'No se encontraron artículos', + BAD_USER_INPUT: 'Entrada de usuario inválida', + MISSING_SHIPPING_ADDRESS: 'Se requiere dirección de envío', + MISSING_REQUIRED_FIELD: 'Falta campo obligatorio', + CATALOG_API_ERROR: 'Error de servicio de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Servicio de impuestos no disponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Servicio de envío no disponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servicio de ajustes de precios no disponible', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Error al calcular ajustes de precios', + SERVICE_UNAVAILABLE: 'Servicio temporalmente no disponible', + RATE_LIMITED: 'Demasiadas solicitudes, por favor inténtelo más tarde', + TIMEOUT: 'Tiempo de espera agotado', + INTERNAL_ERROR: 'Error interno del servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Se requiere código postal de envío', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Se requiere código de país de envío', + SHIPPING_METHOD_REQUIRED: 'Se requiere método de envío', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de envío', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falló la verificación de dirección de facturación', + MISSING_SHIPPING_INFO: 'No se pudo aplicar la dirección o método de envío', + DEPENDENCY_ERROR: 'No podemos procesar su pedido en este momento. Espere un momento e inténtelo de nuevo', + }, }; diff --git a/packages/localizations/src/frCa.ts b/packages/localizations/src/frCa.ts index b6dd6635..065d4a88 100644 --- a/packages/localizations/src/frCa.ts +++ b/packages/localizations/src/frCa.ts @@ -1,342 +1,317 @@ export const frCa = { - general: { - optional: "optionnel", - notes: "Notes", - quantity: "Quantité", - free: "GRATUIT", - closed: "Fermé", - apply: "Appliquer", - checkoutDisabled: - "Le checkout est présentement désactivé. Nous nous excusons pour l'inconvénient.", - }, - contact: { - title: "Contact", - description: "", - email: "Courriel", - }, - pickup: { - title: "Cueillette locale", - description: - "Tous les efforts seront déployés pour respecter votre heure de cueillette prévue. Les heures de cueillette réelles peuvent varier.", - location: "Lieu de cueillette", - date: "Date de cueillette", - time: "Heure de cueillette préférée", - selectStore: "Sélectionner un emplacement de magasin", - selectDate: "Sélectionner une date", - selectTime: "Sélectionner une heure de cueillette", - storeHours: "Heures d'ouverture", - seeDetails: "Voir les détails", - noTimeSlots: - "Aucune plage horaire disponible pour la date sélectionnée. Veuillez choisir une autre date.", - hoursDisplayed: "Heures affichées dans votre fuseau horaire local.", - storeOperatesIn: "Le magasin opère dans le fuseau horaire {timezone}.", - asap: "DÈS QUE POSSIBLE", - hour: "heure", - hours: "heures", - minutes: "minutes", - searchCountry: "Rechercher un pays...", - noCountryFound: "Aucun pays trouvé.", - }, - days: { - sunday: "Dimanche", - monday: "Lundi", - tuesday: "Mardi", - wednesday: "Mercredi", - thursday: "Jeudi", - friday: "Vendredi", - saturday: "Samedi", - }, - delivery: { - title: "Livraison", - method: "Méthode de livraison", - shipping: "Expédition", - shipToAddress: "Expédier à votre adresse", - localPickup: "Cueillette locale", - pickupFromStore: "Cueillir au magasin", - }, - tips: { - title: "Ajouter un pourboire", - noTip: "Aucun pourboire", - customAmount: "Montant personnalisé", - customTipAmount: "Montant de pourboire personnalisé", - placeholder: "0,00 $", - }, - shipping: { - title: "Expédition", - description: "Adresse d'expédition", - method: "Méthode d'expédition", - noShippingMethodAddress: - "Entrez votre adresse pour voir les méthodes d'expédition disponibles.", - noShippingMethods: "Aucune méthode d'expédition trouvée.", - phone: "Numéro de téléphone", - country: "Pays", - selectCountry: "Sélectionner un pays", - searchCountry: "Rechercher un pays...", - noCountryFound: "Aucun pays trouvé", - firstName: "Prénom", - lastName: "Nom de famille", - address1: "Adresse", - address2: "Appartement, suite, etc.", - city: "Ville", - region: "Province", - postalCode: "Code postal", - notesPlaceholder: "Notes ou instructions spéciales", - addressSuggestion: "Vouliez-vous dire", - addressSuggestionEnd: " ?", - noShippingOriginAddress: "Aucune adresse d'origine d'expédition fournie.", - }, - billing: { - title: "Facturation", - description: "Description de facturation", - }, - payment: { - title: "Paiement", - description: "Tous les paiements sont sécurisés et chiffrés.", - billingAddress: { - title: "Adresse de facturation", - description: "Entrez votre adresse de facturation.", - useShippingAddress: - "Utiliser l'adresse d'expédition comme adresse de facturation", - }, - methods: { - creditCard: "Carte de crédit ou de débit", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Paiements hors ligne", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Aucune méthode de paiement disponible", - cardNumber: "Numéro de carte", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Date d'expiration (MM / AA)", - securityCode: "Code de sécurité", - cvvPlaceholder: "CVV", - nameOnCard: "Nom sur la carte", - payNow: "Payer maintenant", - standardShipping: "Expédition standard", - cardDetails: "Détails de la carte", - payWithApplePay: "Payer avec Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Échec de l'initialisation du paiement.", - orderTotal: "Total de la commande", - subtotal: "Sous-total", - tax: "Taxe", - shipping: "Expédition", - discount: "Coupon", - processingPayment: "Traitement du paiement...", - completingOrder: "Finalisation de la commande...", - freePayment: "Terminez votre commande gratuite", - }, - phone: { - placeholder: "(514) 555-1234", - searchCountry: "Rechercher un pays...", - noCountryFound: "Aucun pays trouvé.", - }, - discounts: { - placeholder: "Code coupon", - enterCode: "Entrer le code coupon", - apply: "Appliquer", - alreadyApplied: "Ce code coupon a déjà été appliqué", - failedToApply: "Échec de l'application du code coupon", - enterCodeValidation: "Veuillez entrer un code coupon", - }, - totals: { - subtotal: "Sous-total", - discount: "Remise", - shipping: "Expédition", - tip: "Pourboire", - estimatedTaxes: "Taxes estimées", - totalDue: "Total à payer", - orderSummary: "Résumé de la commande", - itemCount: "articles", - noItems: "Aucun article", - }, - lineItems: { - note: "Note :", - }, - ui: { - autocomplete: { - addressPlaceholder: "Adresse", - suggestions: "Suggestions", - }, - form: { - useFormFieldError: "useFormField doit être utilisé dans ", - }, - pagination: { - ariaLabel: "pagination", - previousPageAriaLabel: "Aller à la page précédente", - previous: "Précédent", - nextPageAriaLabel: "Aller à la page suivante", - next: "Suivant", - morePages: "Plus de pages", - }, - sidebar: { - useSidebarError: "useSidebar doit être utilisé dans un SidebarProvider.", - toggleSidebar: "Basculer la barre latérale", - }, - accessibility: { - payWithApplePay: "Payer avec Apple Pay", - applePayLogo: "Logo Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Échec de l'obtention du jeton d'accès", - invalidEnvironment: "Environnement invalide", - noPublicAccessToken: "Aucun jeton d'accès public fourni", - noSessionToken: "Aucun jeton ou ID de session fourni", - errorCreatingSession: - "Erreur lors de la création de la session de checkout :", - orderIdRequired: "L'ID de commande est requis", - errorTrackingEvent: "Erreur lors du suivi d'événement", - errorInTrackingSubscriber: "Erreur dans l'abonné de suivi", - useTrackingProviderError: - "useTracking doit être utilisé dans un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect doit être utilisé dans un PoyntCollectProvider", - useSquareProviderError: - "useSquare doit être utilisé dans un SquareProvider", - errorProcessingPayment: "Erreur lors du traitement du paiement", - stripeConfigMissing: - "La configuration Stripe est manquante. Veuillez vérifier votre installation.", - paymentSuccessful: "Paiement réussi", - paymentFailed: "Paiement échoué", - paypalConfigMissing: - "La configuration PayPal est manquante. Veuillez vérifier votre installation.", - stripeNotReady: "Stripe n'est pas prêt", - cardElementNotFound: "CardElement introuvable", - errorProcessingCardPayment: - "Erreur lors du traitement du paiement par carte.", - errorProcessingExpressPayment: - "Erreur lors du traitement du paiement express.", - failedToInitializePayment: "Échec de l'initialisation du paiement.", - invalidPhoneNumber: "numéro de téléphone invalide", - }, - validation: { - phoneRequired: "Le numéro de téléphone est requis", - emailRequired: "Entrez un courriel", - emailInvalid: "Entrez un courriel valide", - phoneTooLong: "Numéro de téléphone trop long", - invalidShippingAddress: "Adresse d'expédition invalide", - invalidBillingAddress: "Adresse de facturation invalide", - selectPaymentMethod: "Sélectionnez une méthode de paiement", - enterValidBillingPhone: - "Entrez un numéro de téléphone de facturation valide", - enterValidShippingPhone: - "Entrez un numéro de téléphone d'expédition valide", - enterFirstName: "Entrez un prénom", - enterLastName: "Entrez un nom de famille", - enterAddress: "Entrez une adresse", - enterCity: "Entrez une ville", - enterZipCode: "Entrez un code postal", - enterZipPostalCode: "Entrez un code postal", - selectState: "Sélectionnez une province/état", - selectCountry: "Sélectionnez un pays", - enterCountry: "Entrez un pays", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Erreur de serveur", - SESSION_NOT_FOUND: "Session introuvable", - CHECKOUT_SESSION_RETRIEVAL_FAILED: - "Échec de la récupération de la session de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Session de checkout introuvable", - CHECKOUT_SESSION_FETCH_ERROR: - "Erreur générale de récupération de session de checkout", - DRAFT_ORDER_NOT_FOUND: "Brouillon de commande introuvable", - CHECKOUT_SESSION_CREATION_FAILED: - "Échec de la création de la session de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Données de session créée introuvables", - CHECKOUT_SESSION_CREATION_ERROR: - "Erreur générale de création de session de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: - "Échec de la mise à jour de la session de checkout", - UPDATED_SESSION_NOT_FOUND: "Session mise à jour introuvable", - CHECKOUT_SESSION_UPDATE_ERROR: - "Erreur générale de mise à jour de session de checkout", - ORDER_API_NOT_FOUND: "Source de données API de commande introuvable", - DRAFT_ORDER_RETRIEVAL_FAILED: - "Échec de la récupération du brouillon de commande", - DATA_SOURCES_NOT_FOUND: "Sources de données introuvables", - TRANSACTION_API_NOT_FOUND: - "Source de données API de transaction introuvable", - TRANSACTION_PROCESSING_FAILED: "Échec du traitement de la transaction", - TRANSACTION_CREATION_FAILED: - "Échec de la recherche ou création de transaction", - ORDER_OPENING_FAILED: "Échec de l'ouverture de la commande", - INVALID_FULFILLMENT_LOCATION: "Lieu d'exécution invalide", - NO_VALID_PICKUP_LOCATION: "Aucun lieu de cueillette valide disponible", - DRAFT_ORDER_FETCH_FAILED: - "Échec de la récupération du brouillon de commande", - LINE_ITEMS_FETCH_FAILED: "Échec de la récupération des articles", - CURRENT_ORDER_FETCH_FAILED: - "Échec de la récupération du brouillon de commande actuel", - DRAFT_ORDER_UPDATE_FAILED: - "Échec de la mise à jour du brouillon de commande", - DISCOUNT_APPLICATION_FAILED: "Échec de l'application du coupon", - CONTEXT_UNAVAILABLE: "Session ou sources de données non disponibles", - SHIPPING_LINES_UPDATE_FAILED: - "Échec de la mise à jour des lignes d'expédition", - ORDER_TOTALS_UPDATE_FAILED: - "Échec de la mise à jour des totaux de commande", - SHIPPING_METHOD_APPLICATION_FAILED: - "Échec de l'application de la méthode d'expédition", - SKU_FETCH_FAILED: "Échec de la récupération des SKU", - SHIPPING_RATES_CALCULATION_FAILED: - "Échec du calcul des tarifs d'expédition", - SHIPPING_METHOD_NOT_FOUND: "Méthode d'expédition introuvable", - SHIPPING_METHOD_REMOVAL_FAILED: - "Échec de la suppression de la méthode d'expédition", - SHIPPING_ADDRESS_REQUIRED: "Adresse d'expédition requise", - INVENTORY_VALIDATION_ERROR: "Erreur de validation d'inventaire", - INSUFFICIENT_INVENTORY: "Inventaire insuffisant", - INVALID_ORDER_STATUS: "Statut de commande invalide", - TRANSACTION_CREATION_ERROR: "Erreur de création de transaction", - TRANSACTION_PROCESSING_ERROR: "Erreur de traitement de transaction", - UNKNOWN_ERROR: "Erreur inconnue", - FULFILLMENT_CREATION_ERROR: "Erreur de création d'exécution", - TAX_CALCULATION_ERROR: "Erreur de calcul de taxe", - ADDRESS_VERIFICATION_ERROR: "Erreur de vérification d'adresse", - ADDRESS_MATCHES_ERROR: "Erreur de correspondance d'adresse", - SHIPPING_CONFLICT_ERROR: "Erreur de conflit d'expédition", - SHIPPING_ERROR: "Erreur générale d'expédition", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Erreur de calcul d'ajustement de prix", - ORDER_FETCH_ERROR: "Erreur de récupération de commande", - DRAFT_ORDER_UPDATE_ERROR: "Erreur de mise à jour du brouillon de commande", - DISCOUNT_APPLICATION_ERROR: "Erreur d'application de coupon", - DRAFT_ORDER_OPEN_ERROR: "Erreur d'ouverture du brouillon de commande", - ORDER_UPDATE_ERROR: "Erreur de mise à jour de commande", - CATALOG_FETCH_ERROR: "Erreur de récupération de catalogue", - STORE_ID_NOT_FOUND: "ID de magasin non trouvé", - ORDER_NOT_DRAFT: "La commande n'est pas en statut de brouillon", - NO_LINE_ITEMS: "Aucun article trouvé", - BAD_USER_INPUT: "Saisie utilisateur invalide", - MISSING_SHIPPING_ADDRESS: "Adresse d'expédition requise", - MISSING_REQUIRED_FIELD: "Champ obligatoire manquant", - CATALOG_API_ERROR: "Erreur du service de catalogue", - TAX_SERVICE_UNAVAILABLE: "Service de taxes indisponible", - SHIPPING_SERVICE_UNAVAILABLE: "Service d'expédition indisponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Service d'ajustements de prix indisponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Échec du calcul des ajustements de prix", - SERVICE_UNAVAILABLE: "Service temporairement indisponible", - RATE_LIMITED: "Trop de demandes, veuillez réessayer plus tard", - TIMEOUT: "Délai d'attente dépassé", - INTERNAL_ERROR: "Erreur interne du serveur", - SHIPPING_POSTAL_CODE_REQUIRED: "Le code postal d'expédition est requis", - SHIPPING_COUNTRY_CODE_REQUIRED: "Le code de pays d'expédition est requis", - SHIPPING_METHOD_REQUIRED: "La méthode d'expédition est requise", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "La vérification de l'adresse d'expédition a échoué", - BILLING_ADDRESS_VERIFICATION_FAILED: - "La vérification de l'adresse de facturation a échoué", - }, + general: { + optional: 'optionnel', + notes: 'Notes', + quantity: 'Quantité', + free: 'GRATUIT', + closed: 'Fermé', + apply: 'Appliquer', + checkoutDisabled: "Le checkout est présentement désactivé. Nous nous excusons pour l'inconvénient.", + }, + contact: { + title: 'Contact', + description: '', + email: 'Courriel', + }, + pickup: { + title: 'Cueillette locale', + description: + 'Tous les efforts seront déployés pour respecter votre heure de cueillette prévue. Les heures de cueillette réelles peuvent varier.', + location: 'Lieu de cueillette', + date: 'Date de cueillette', + time: 'Heure de cueillette préférée', + selectStore: 'Sélectionner un emplacement de magasin', + selectDate: 'Sélectionner une date', + selectTime: 'Sélectionner une heure de cueillette', + storeHours: "Heures d'ouverture", + seeDetails: 'Voir les détails', + noTimeSlots: 'Aucune plage horaire disponible pour la date sélectionnée. Veuillez choisir une autre date.', + hoursDisplayed: 'Heures affichées dans votre fuseau horaire local.', + storeOperatesIn: 'Le magasin opère dans le fuseau horaire {timezone}.', + asap: 'DÈS QUE POSSIBLE', + hour: 'heure', + hours: 'heures', + minutes: 'minutes', + searchCountry: 'Rechercher un pays...', + noCountryFound: 'Aucun pays trouvé.', + }, + days: { + sunday: 'Dimanche', + monday: 'Lundi', + tuesday: 'Mardi', + wednesday: 'Mercredi', + thursday: 'Jeudi', + friday: 'Vendredi', + saturday: 'Samedi', + }, + delivery: { + title: 'Livraison', + method: 'Méthode de livraison', + shipping: 'Expédition', + shipToAddress: 'Expédier à votre adresse', + localPickup: 'Cueillette locale', + pickupFromStore: 'Cueillir au magasin', + }, + tips: { + title: 'Ajouter un pourboire', + noTip: 'Aucun pourboire', + customAmount: 'Montant personnalisé', + customTipAmount: 'Montant de pourboire personnalisé', + placeholder: '0,00 $', + }, + shipping: { + title: 'Expédition', + description: "Adresse d'expédition", + method: "Méthode d'expédition", + noShippingMethodAddress: "Entrez votre adresse pour voir les méthodes d'expédition disponibles.", + noShippingMethods: "Aucune méthode d'expédition trouvée.", + phone: 'Numéro de téléphone', + country: 'Pays', + selectCountry: 'Sélectionner un pays', + searchCountry: 'Rechercher un pays...', + noCountryFound: 'Aucun pays trouvé', + firstName: 'Prénom', + lastName: 'Nom de famille', + address1: 'Adresse', + address2: 'Appartement, suite, etc.', + city: 'Ville', + region: 'Province', + postalCode: 'Code postal', + notesPlaceholder: 'Notes ou instructions spéciales', + addressSuggestion: 'Vouliez-vous dire', + addressSuggestionEnd: ' ?', + noShippingOriginAddress: "Aucune adresse d'origine d'expédition fournie.", + }, + billing: { + title: 'Facturation', + description: 'Description de facturation', + }, + payment: { + title: 'Paiement', + description: 'Tous les paiements sont sécurisés et chiffrés.', + billingAddress: { + title: 'Adresse de facturation', + description: 'Entrez votre adresse de facturation.', + useShippingAddress: "Utiliser l'adresse d'expédition comme adresse de facturation", + }, + methods: { + creditCard: 'Carte de crédit ou de débit', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Paiements hors ligne', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Aucune méthode de paiement disponible', + cardNumber: 'Numéro de carte', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: "Date d'expiration (MM / AA)", + securityCode: 'Code de sécurité', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nom sur la carte', + payNow: 'Payer maintenant', + standardShipping: 'Expédition standard', + cardDetails: 'Détails de la carte', + payWithApplePay: 'Payer avec Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: "Échec de l'initialisation du paiement.", + orderTotal: 'Total de la commande', + subtotal: 'Sous-total', + tax: 'Taxe', + shipping: 'Expédition', + discount: 'Coupon', + processingPayment: 'Traitement du paiement...', + completingOrder: 'Finalisation de la commande...', + completeOrder: 'Terminer votre commande', + freePayment: 'Terminez votre commande gratuite', + }, + phone: { + placeholder: '(514) 555-1234', + searchCountry: 'Rechercher un pays...', + noCountryFound: 'Aucun pays trouvé.', + }, + discounts: { + placeholder: 'Code coupon', + enterCode: 'Entrer le code coupon', + apply: 'Appliquer', + alreadyApplied: 'Ce code coupon a déjà été appliqué', + failedToApply: "Échec de l'application du code coupon", + enterCodeValidation: 'Veuillez entrer un code coupon', + }, + totals: { + subtotal: 'Sous-total', + discount: 'Remise', + shipping: 'Expédition', + tip: 'Pourboire', + estimatedTaxes: 'Taxes estimées', + totalDue: 'Total à payer', + orderSummary: 'Résumé de la commande', + itemCount: 'articles', + noItems: 'Aucun article', + }, + lineItems: { + note: 'Note :', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Adresse', + suggestions: 'Suggestions', + }, + form: { + useFormFieldError: 'useFormField doit être utilisé dans ', + }, + pagination: { + ariaLabel: 'pagination', + previousPageAriaLabel: 'Aller à la page précédente', + previous: 'Précédent', + nextPageAriaLabel: 'Aller à la page suivante', + next: 'Suivant', + morePages: 'Plus de pages', + }, + sidebar: { + useSidebarError: 'useSidebar doit être utilisé dans un SidebarProvider.', + toggleSidebar: 'Basculer la barre latérale', + }, + accessibility: { + payWithApplePay: 'Payer avec Apple Pay', + applePayLogo: 'Logo Apple Pay', + close: 'Fermer', + additionalTipOptions: 'Options de pourboire supplémentaires', + breadcrumb: "fil d'ariane", + more: 'Plus', + previousSlide: 'Diapositive précédente', + nextSlide: 'Diapositive suivante', + }, + }, + errors: { + failedToGetAccessToken: "Échec de l'obtention du jeton d'accès", + invalidEnvironment: 'Environnement invalide', + noPublicAccessToken: "Aucun jeton d'accès public fourni", + noSessionToken: 'Aucun jeton ou ID de session fourni', + errorCreatingSession: 'Erreur lors de la création de la session de checkout :', + orderIdRequired: "L'ID de commande est requis", + errorTrackingEvent: "Erreur lors du suivi d'événement", + errorInTrackingSubscriber: "Erreur dans l'abonné de suivi", + useTrackingProviderError: 'useTracking doit être utilisé dans un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect doit être utilisé dans un PoyntCollectProvider', + useSquareProviderError: 'useSquare doit être utilisé dans un SquareProvider', + errorProcessingPayment: 'Erreur lors du traitement du paiement', + stripeConfigMissing: 'La configuration Stripe est manquante. Veuillez vérifier votre installation.', + paymentSuccessful: 'Paiement réussi', + paymentFailed: 'Paiement échoué', + paypalConfigMissing: 'La configuration PayPal est manquante. Veuillez vérifier votre installation.', + stripeNotReady: "Stripe n'est pas prêt", + cardElementNotFound: 'CardElement introuvable', + errorProcessingCardPayment: 'Erreur lors du traitement du paiement par carte.', + errorProcessingExpressPayment: 'Erreur lors du traitement du paiement express.', + failedToInitializePayment: "Échec de l'initialisation du paiement.", + invalidPhoneNumber: 'numéro de téléphone invalide', + }, + validation: { + phoneRequired: 'Le numéro de téléphone est requis', + emailRequired: 'Entrez un courriel', + emailInvalid: 'Entrez un courriel valide', + phoneTooLong: 'Numéro de téléphone trop long', + invalidShippingAddress: "Adresse d'expédition invalide", + invalidBillingAddress: 'Adresse de facturation invalide', + selectPaymentMethod: 'Sélectionnez une méthode de paiement', + enterValidBillingPhone: 'Entrez un numéro de téléphone de facturation valide', + enterValidShippingPhone: "Entrez un numéro de téléphone d'expédition valide", + enterFirstName: 'Entrez un prénom', + enterLastName: 'Entrez un nom de famille', + enterAddress: 'Entrez une adresse', + enterCity: 'Entrez une ville', + enterZipCode: 'Entrez un code postal', + enterZipPostalCode: 'Entrez un code postal', + selectState: 'Sélectionnez une province/état', + selectCountry: 'Sélectionnez un pays', + enterCountry: 'Entrez un pays', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Erreur de serveur', + SESSION_NOT_FOUND: 'Session introuvable', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Échec de la récupération de la session de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Session de checkout introuvable', + CHECKOUT_SESSION_FETCH_ERROR: 'Erreur générale de récupération de session de checkout', + DRAFT_ORDER_NOT_FOUND: 'Commande introuvable', + CHECKOUT_SESSION_CREATION_FAILED: 'Échec de la création de la session de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Données de session créée introuvables', + CHECKOUT_SESSION_CREATION_ERROR: 'Erreur générale de création de session de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Échec de la mise à jour de la session de checkout', + UPDATED_SESSION_NOT_FOUND: 'Session mise à jour introuvable', + CHECKOUT_SESSION_UPDATE_ERROR: 'Erreur générale de mise à jour de session de checkout', + ORDER_API_NOT_FOUND: 'Source de données API de commande introuvable', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Échec de la récupération de la commande', + DATA_SOURCES_NOT_FOUND: 'Sources de données introuvables', + TRANSACTION_API_NOT_FOUND: 'Source de données API de transaction introuvable', + TRANSACTION_PROCESSING_FAILED: 'Échec du traitement de la transaction', + TRANSACTION_CREATION_FAILED: 'Échec de la recherche ou création de transaction', + ORDER_OPENING_FAILED: "Échec de l'ouverture de la commande", + INVALID_FULFILLMENT_LOCATION: "Lieu d'exécution invalide", + NO_VALID_PICKUP_LOCATION: 'Aucun lieu de cueillette valide disponible', + DRAFT_ORDER_FETCH_FAILED: 'Échec de la récupération de la commande', + LINE_ITEMS_FETCH_FAILED: 'Échec de la récupération des articles', + CURRENT_ORDER_FETCH_FAILED: 'Échec de la récupération de la commande actuelle', + DRAFT_ORDER_UPDATE_FAILED: 'Échec de la mise à jour de la commande', + DISCOUNT_APPLICATION_FAILED: "Échec de l'application du coupon", + CONTEXT_UNAVAILABLE: 'Session ou sources de données non disponibles', + SHIPPING_LINES_UPDATE_FAILED: "Échec de la mise à jour des lignes d'expédition", + ORDER_TOTALS_UPDATE_FAILED: 'Échec de la mise à jour des totaux de commande', + ORDER_TOTAL_CALCULATION_FAILED: 'Échec du calcul des totaux de commande', + SHIPPING_METHOD_APPLICATION_FAILED: "Échec de l'application de la méthode d'expédition", + SKU_FETCH_FAILED: 'Échec de la récupération des SKU', + SHIPPING_RATES_CALCULATION_FAILED: "Échec du calcul des tarifs d'expédition", + SHIPPING_METHOD_NOT_FOUND: "Méthode d'expédition introuvable", + SHIPPING_METHOD_REMOVAL_FAILED: "Échec de la suppression de la méthode d'expédition", + SHIPPING_ADDRESS_REQUIRED: "Adresse d'expédition requise", + INVENTORY_VALIDATION_ERROR: "Erreur de validation d'inventaire", + INSUFFICIENT_INVENTORY: 'Inventaire insuffisant', + INVALID_ORDER_STATUS: 'Statut de commande invalide', + TRANSACTION_CREATION_ERROR: 'Erreur de création de transaction', + TRANSACTION_PROCESSING_ERROR: 'Erreur de traitement de transaction', + UNKNOWN_ERROR: 'Erreur inconnue', + FULFILLMENT_CREATION_ERROR: "Erreur de création d'exécution", + TAX_CALCULATION_ERROR: 'Erreur de calcul de taxe', + ADDRESS_VERIFICATION_ERROR: "Erreur de vérification d'adresse", + ADDRESS_MATCHES_ERROR: "Erreur de correspondance d'adresse", + SHIPPING_CONFLICT_ERROR: "Erreur de conflit d'expédition", + SHIPPING_ERROR: "Erreur générale d'expédition", + PRICE_ADJUSTMENT_CALCULATION_ERROR: "Erreur de calcul d'ajustement de prix", + ORDER_FETCH_ERROR: 'Erreur de récupération de commande', + DRAFT_ORDER_UPDATE_ERROR: 'Erreur de mise à jour de la commande', + DISCOUNT_APPLICATION_ERROR: "Erreur d'application de coupon", + DRAFT_ORDER_OPEN_ERROR: "Erreur d'ouverture de la commande", + ORDER_UPDATE_ERROR: 'Erreur de mise à jour de commande', + CATALOG_FETCH_ERROR: 'Erreur de récupération de catalogue', + STORE_ID_NOT_FOUND: 'ID de magasin non trouvé', + ORDER_NOT_DRAFT: "La commande n'est pas en statut valide", + NO_LINE_ITEMS: 'Aucun article trouvé', + BAD_USER_INPUT: 'Saisie utilisateur invalide', + MISSING_SHIPPING_ADDRESS: "Adresse d'expédition requise", + MISSING_REQUIRED_FIELD: 'Champ obligatoire manquant', + CATALOG_API_ERROR: 'Erreur du service de catalogue', + TAX_SERVICE_UNAVAILABLE: 'Service de taxes indisponible', + SHIPPING_SERVICE_UNAVAILABLE: "Service d'expédition indisponible", + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: "Service d'ajustements de prix indisponible", + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Échec du calcul des ajustements de prix', + SERVICE_UNAVAILABLE: 'Service temporairement indisponible', + RATE_LIMITED: 'Trop de demandes, veuillez réessayer plus tard', + TIMEOUT: "Délai d'attente dépassé", + INTERNAL_ERROR: 'Erreur interne du serveur', + SHIPPING_POSTAL_CODE_REQUIRED: "Le code postal d'expédition est requis", + SHIPPING_COUNTRY_CODE_REQUIRED: "Le code de pays d'expédition est requis", + SHIPPING_METHOD_REQUIRED: "La méthode d'expédition est requise", + SHIPPING_ADDRESS_VERIFICATION_FAILED: "La vérification de l'adresse d'expédition a échoué", + BILLING_ADDRESS_VERIFICATION_FAILED: "La vérification de l'adresse de facturation a échoué", + MISSING_SHIPPING_INFO: "L'adresse ou la méthode de livraison n'a pas pu être appliquée", + DEPENDENCY_ERROR: 'Nous ne pouvons pas traiter votre commande actuellement. Veuillez patienter un moment et réessayer', + }, }; diff --git a/packages/localizations/src/frFr.ts b/packages/localizations/src/frFr.ts index a3ea24ae..4fe685c8 100644 --- a/packages/localizations/src/frFr.ts +++ b/packages/localizations/src/frFr.ts @@ -1,345 +1,317 @@ export const frFr = { - general: { - optional: "optionnel", - notes: "Notes", - quantity: "Quantité", - free: "GRATUIT", - closed: "Fermé", - apply: "Appliquer", - checkoutDisabled: - "Le paiement est actuellement désactivé. Nous nous excusons pour la gêne occasionnée.", - }, - contact: { - title: "Contact", - description: "", - email: "Email", - }, - pickup: { - title: "Retrait en magasin", - description: - "Tous les efforts seront faits pour respecter votre heure de retrait prévue. Les heures de retrait réelles peuvent varier.", - location: "Lieu de retrait", - date: "Date de retrait", - time: "Heure de retrait préférée", - selectStore: "Sélectionner un magasin", - selectDate: "Sélectionner une date", - selectTime: "Sélectionner une heure de retrait", - storeHours: "Heures d'ouverture", - seeDetails: "Voir les détails", - noTimeSlots: - "Aucun créneau horaire disponible pour la date sélectionnée. Veuillez sélectionner une autre date.", - hoursDisplayed: "Heures affichées dans votre fuseau horaire local.", - storeOperatesIn: "Le magasin fonctionne dans le fuseau horaire {timezone}.", - asap: "ASAP", - hour: "heure", - hours: "heures", - minutes: "minutes", - searchCountry: "Rechercher un pays...", - noCountryFound: "Aucun pays trouvé.", - }, - days: { - sunday: "Dimanche", - monday: "Lundi", - tuesday: "Mardi", - wednesday: "Mercredi", - thursday: "Jeudi", - friday: "Vendredi", - saturday: "Samedi", - }, - delivery: { - title: "Livraison", - method: "Méthode de livraison", - shipping: "Expédition", - shipToAddress: "Livrer à votre adresse", - localPickup: "Retrait en magasin", - pickupFromStore: "Retirer en magasin", - }, - tips: { - title: "Ajouter un pourboire", - noTip: "Aucun pourboire", - customAmount: "Montant personnalisé", - customTipAmount: "Montant du pourboire personnalisé", - placeholder: "0,00 €", - }, - shipping: { - title: "Expédition", - description: "Adresse de livraison", - method: "Méthode d'expédition", - noShippingMethodAddress: - "Entrez votre adresse pour voir les méthodes de livraison disponibles.", - noShippingMethods: "Aucune méthode d'expédition trouvée.", - phone: "Numéro de téléphone", - country: "Pays", - selectCountry: "Sélectionner un pays", - searchCountry: "Rechercher un pays...", - noCountryFound: "Aucun pays trouvé", - firstName: "Prénom", - lastName: "Nom de famille", - address1: "Adresse", - address2: "Appartement, suite, etc.", - city: "Ville", - region: "État/Province", - postalCode: "Code postal", - notesPlaceholder: "Notes ou instructions spéciales", - addressSuggestion: "Vouliez-vous dire", - addressSuggestionEnd: " ?", - noShippingOriginAddress: "Aucune adresse d'origine d'expédition fournie.", - }, - billing: { - title: "Facturation", - description: "Description de la facturation", - }, - payment: { - title: "Paiement", - description: "Tous les paiements sont sécurisés et chiffrés.", - billingAddress: { - title: "Adresse de facturation", - description: "Entrez votre adresse de facturation.", - useShippingAddress: - "Utiliser l'adresse de livraison comme adresse de facturation", - }, - methods: { - creditCard: "Carte de crédit ou de débit", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Paiements hors ligne", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Aucune méthode de paiement disponible", - cardNumber: "Numéro de carte", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Date d'expiration (MM / AA)", - securityCode: "Code de sécurité", - cvvPlaceholder: "CVV", - nameOnCard: "Nom sur la carte", - payNow: "Payer maintenant", - standardShipping: "Livraison standard", - cardDetails: "Détails de la carte", - payWithApplePay: "Payer avec Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Échec de l'initialisation du paiement.", - orderTotal: "Total de la commande", - subtotal: "Sous-total", - tax: "Taxe", - shipping: "Expédition", - discount: "Coupon", - processingPayment: "Traitement du paiement...", - completingOrder: "Finalisation de la commande...", - freePayment: "Terminez votre commande gratuite", - }, - phone: { - placeholder: "01 23 45 67 89", - searchCountry: "Rechercher un pays...", - noCountryFound: "Aucun pays trouvé.", - }, - discounts: { - placeholder: "Code coupon", - enterCode: "Entrer le code coupon", - apply: "Appliquer", - alreadyApplied: "Ce code coupon a déjà été appliqué", - failedToApply: "Échec de l'application du code coupon", - enterCodeValidation: "Veuillez entrer un code coupon", - }, - totals: { - subtotal: "Sous-total", - discount: "Remise", - shipping: "Expédition", - tip: "Pourboire", - estimatedTaxes: "Taxes estimées", - totalDue: "Total à payer", - orderSummary: "Récapitulatif de la commande", - itemCount: "articles", - noItems: "Aucun article", - }, - lineItems: { - note: "Note :", - }, - ui: { - autocomplete: { - addressPlaceholder: "Adresse", - suggestions: "Suggestions", - }, - form: { - useFormFieldError: "useFormField doit être utilisé dans ", - }, - pagination: { - ariaLabel: "pagination", - previousPageAriaLabel: "Aller à la page précédente", - previous: "Précédent", - nextPageAriaLabel: "Aller à la page suivante", - next: "Suivant", - morePages: "Plus de pages", - }, - sidebar: { - useSidebarError: "useSidebar doit être utilisé dans un SidebarProvider.", - toggleSidebar: "Basculer la barre latérale", - }, - accessibility: { - payWithApplePay: "Payer avec Apple Pay", - applePayLogo: "Logo Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Échec de l'obtention du jeton d'accès", - invalidEnvironment: "Environnement invalide", - noPublicAccessToken: "Aucun jeton d'accès public fourni", - noSessionToken: "Aucun jeton de session ou ID fourni", - errorCreatingSession: - "Erreur lors de la création de la session de commande :", - orderIdRequired: "L'ID de commande est requis", - errorTrackingEvent: "Erreur lors du suivi de l'événement", - errorInTrackingSubscriber: "Erreur dans l'abonné de suivi", - useTrackingProviderError: - "useTracking doit être utilisé dans un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect doit être utilisé dans un PoyntCollectProvider", - useSquareProviderError: - "useSquare doit être utilisé dans un SquareProvider", - errorProcessingPayment: "Erreur lors du traitement du paiement", - stripeConfigMissing: - "La configuration Stripe est manquante. Veuillez vérifier votre configuration.", - paymentSuccessful: "Paiement réussi", - paymentFailed: "Échec du paiement", - paypalConfigMissing: - "La configuration PayPal est manquante. Veuillez vérifier votre configuration.", - stripeNotReady: "Stripe n'est pas prêt", - cardElementNotFound: "Élément de carte non trouvé", - errorProcessingCardPayment: - "Erreur lors du traitement du paiement par carte.", - errorProcessingExpressPayment: - "Erreur lors du traitement du paiement express.", - failedToInitializePayment: "Échec de l'initialisation du paiement.", - invalidPhoneNumber: "numéro de téléphone invalide", - }, - validation: { - phoneRequired: "Le numéro de téléphone est requis", - emailRequired: "Entrez un email", - emailInvalid: "Entrez un email valide", - phoneTooLong: "Numéro de téléphone trop long", - invalidShippingAddress: "Adresse de livraison invalide", - invalidBillingAddress: "Adresse de facturation invalide", - selectPaymentMethod: "Sélectionnez une méthode de paiement", - enterValidBillingPhone: - "Entrez un numéro de téléphone de facturation valide", - enterValidShippingPhone: - "Entrez un numéro de téléphone de livraison valide", - enterFirstName: "Entrez un prénom", - enterLastName: "Entrez un nom de famille", - enterAddress: "Entrez une adresse", - enterCity: "Entrez une ville", - enterZipCode: "Entrez un code postal", - enterZipPostalCode: "Entrez un code ZIP / postal", - selectState: "Sélectionnez un état/province", - selectCountry: "Sélectionnez un pays", - enterCountry: "Entrez un pays", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Erreur du serveur", - SESSION_NOT_FOUND: "Session non trouvée", - CHECKOUT_SESSION_RETRIEVAL_FAILED: - "Échec de la récupération de la session de paiement", - CHECKOUT_SESSION_NOT_FOUND: "Session de paiement non trouvée", - CHECKOUT_SESSION_FETCH_ERROR: - "Erreur générale lors de la récupération de la session de paiement", - DRAFT_ORDER_NOT_FOUND: "Brouillon de commande non trouvé", - CHECKOUT_SESSION_CREATION_FAILED: - "Échec de la création de la session de paiement", - CREATED_SESSION_DATA_NOT_FOUND: "Données de session créées non trouvées", - CHECKOUT_SESSION_CREATION_ERROR: - "Erreur générale lors de la création de la session de paiement", - CHECKOUT_SESSION_UPDATE_FAILED: - "Échec de la mise à jour de la session de paiement", - UPDATED_SESSION_NOT_FOUND: "Session mise à jour non trouvée", - CHECKOUT_SESSION_UPDATE_ERROR: - "Erreur générale lors de la mise à jour de la session de paiement", - ORDER_API_NOT_FOUND: "Source de données de l'API de commande non trouvée", - DRAFT_ORDER_RETRIEVAL_FAILED: - "Échec de la récupération du brouillon de commande", - DATA_SOURCES_NOT_FOUND: "Sources de données non trouvées", - TRANSACTION_API_NOT_FOUND: - "Source de données de l'API de transaction non trouvée", - TRANSACTION_PROCESSING_FAILED: "Échec du traitement de la transaction", - TRANSACTION_CREATION_FAILED: - "Échec de la recherche ou de la création de la transaction", - ORDER_OPENING_FAILED: "Échec de l'ouverture de la commande", - INVALID_FULFILLMENT_LOCATION: "Lieu d'exécution invalide", - NO_VALID_PICKUP_LOCATION: "Aucun lieu de retrait valide disponible", - DRAFT_ORDER_FETCH_FAILED: - "Échec de la récupération du brouillon de commande", - LINE_ITEMS_FETCH_FAILED: "Échec de la récupération des articles", - CURRENT_ORDER_FETCH_FAILED: - "Échec de la récupération du brouillon de commande actuel", - DRAFT_ORDER_UPDATE_FAILED: - "Échec de la mise à jour du brouillon de commande", - DISCOUNT_APPLICATION_FAILED: "Échec de l'application du coupon", - CONTEXT_UNAVAILABLE: "Session ou sources de données non disponibles", - SHIPPING_LINES_UPDATE_FAILED: - "Échec de la mise à jour des lignes d'expédition", - ORDER_TOTALS_UPDATE_FAILED: - "Échec de la mise à jour des totaux de la commande", - SHIPPING_METHOD_APPLICATION_FAILED: - "Échec de l'application de la méthode d'expédition", - SKU_FETCH_FAILED: "Échec de la récupération des SKU", - SHIPPING_RATES_CALCULATION_FAILED: - "Échec du calcul des tarifs d'expédition", - SHIPPING_METHOD_NOT_FOUND: "Méthode d'expédition non trouvée", - SHIPPING_METHOD_REMOVAL_FAILED: - "Échec de la suppression de la méthode d'expédition", - SHIPPING_ADDRESS_REQUIRED: "Adresse de livraison requise", - INVENTORY_VALIDATION_ERROR: "Erreur de validation des stocks", - INSUFFICIENT_INVENTORY: "Stock insuffisant", - INVALID_ORDER_STATUS: "Statut de commande invalide", - TRANSACTION_CREATION_ERROR: "Erreur lors de la création de la transaction", - TRANSACTION_PROCESSING_ERROR: "Erreur lors du traitement de la transaction", - UNKNOWN_ERROR: "Erreur inconnue", - FULFILLMENT_CREATION_ERROR: "Erreur lors de la création de l'exécution", - TAX_CALCULATION_ERROR: "Erreur lors du calcul des taxes", - ADDRESS_VERIFICATION_ERROR: "Erreur de vérification de l'adresse", - ADDRESS_MATCHES_ERROR: "Erreur de correspondance d'adresse", - SHIPPING_CONFLICT_ERROR: "Conflit d'expédition", - SHIPPING_ERROR: "Erreur générale d'expédition", - PRICE_ADJUSTMENT_CALCULATION_ERROR: - "Erreur lors du calcul de l'ajustement de prix", - ORDER_FETCH_ERROR: "Erreur lors de la récupération de la commande", - DRAFT_ORDER_UPDATE_ERROR: - "Erreur lors de la mise à jour du brouillon de commande", - DISCOUNT_APPLICATION_ERROR: "Erreur lors de l'application du coupon", - DRAFT_ORDER_OPEN_ERROR: - "Erreur lors de l'ouverture du brouillon de commande", - ORDER_UPDATE_ERROR: "Erreur lors de la mise à jour de la commande", - CATALOG_FETCH_ERROR: "Erreur lors de la récupération du catalogue", - STORE_ID_NOT_FOUND: "ID de magasin introuvable", - ORDER_NOT_DRAFT: "La commande n'est pas en statut brouillon", - NO_LINE_ITEMS: "Aucun article trouvé", - BAD_USER_INPUT: "Saisie utilisateur invalide", - MISSING_SHIPPING_ADDRESS: "Adresse de livraison requise", - MISSING_REQUIRED_FIELD: "Champ requis manquant", - CATALOG_API_ERROR: "Erreur du service catalogue", - TAX_SERVICE_UNAVAILABLE: "Service de taxes indisponible", - SHIPPING_SERVICE_UNAVAILABLE: "Service de livraison indisponible", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Service d'ajustements de prix indisponible", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Échec du calcul des ajustements de prix", - SERVICE_UNAVAILABLE: "Service temporairement indisponible", - RATE_LIMITED: "Trop de requêtes, veuillez réessayer plus tard", - TIMEOUT: "Délai d'attente dépassé", - INTERNAL_ERROR: "Erreur interne du serveur", - SHIPPING_POSTAL_CODE_REQUIRED: "Le code postal d'expédition est requis", - SHIPPING_COUNTRY_CODE_REQUIRED: "Le code de pays d'expédition est requis", - SHIPPING_METHOD_REQUIRED: "La méthode d'expédition est requise", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "La vérification de l'adresse d'expédition a échoué", - BILLING_ADDRESS_VERIFICATION_FAILED: - "La vérification de l'adresse de facturation a échoué", - }, + general: { + optional: 'optionnel', + notes: 'Notes', + quantity: 'Quantité', + free: 'GRATUIT', + closed: 'Fermé', + apply: 'Appliquer', + checkoutDisabled: 'Le paiement est actuellement désactivé. Nous nous excusons pour la gêne occasionnée.', + }, + contact: { + title: 'Contact', + description: '', + email: 'Email', + }, + pickup: { + title: 'Retrait en magasin', + description: + 'Tous les efforts seront faits pour respecter votre heure de retrait prévue. Les heures de retrait réelles peuvent varier.', + location: 'Lieu de retrait', + date: 'Date de retrait', + time: 'Heure de retrait préférée', + selectStore: 'Sélectionner un magasin', + selectDate: 'Sélectionner une date', + selectTime: 'Sélectionner une heure de retrait', + storeHours: "Heures d'ouverture", + seeDetails: 'Voir les détails', + noTimeSlots: 'Aucun créneau horaire disponible pour la date sélectionnée. Veuillez sélectionner une autre date.', + hoursDisplayed: 'Heures affichées dans votre fuseau horaire local.', + storeOperatesIn: 'Le magasin fonctionne dans le fuseau horaire {timezone}.', + asap: 'ASAP', + hour: 'heure', + hours: 'heures', + minutes: 'minutes', + searchCountry: 'Rechercher un pays...', + noCountryFound: 'Aucun pays trouvé.', + }, + days: { + sunday: 'Dimanche', + monday: 'Lundi', + tuesday: 'Mardi', + wednesday: 'Mercredi', + thursday: 'Jeudi', + friday: 'Vendredi', + saturday: 'Samedi', + }, + delivery: { + title: 'Livraison', + method: 'Méthode de livraison', + shipping: 'Expédition', + shipToAddress: 'Livrer à votre adresse', + localPickup: 'Retrait en magasin', + pickupFromStore: 'Retirer en magasin', + }, + tips: { + title: 'Ajouter un pourboire', + noTip: 'Aucun pourboire', + customAmount: 'Montant personnalisé', + customTipAmount: 'Montant du pourboire personnalisé', + placeholder: '0,00 €', + }, + shipping: { + title: 'Expédition', + description: 'Adresse de livraison', + method: "Méthode d'expédition", + noShippingMethodAddress: 'Entrez votre adresse pour voir les méthodes de livraison disponibles.', + noShippingMethods: "Aucune méthode d'expédition trouvée.", + phone: 'Numéro de téléphone', + country: 'Pays', + selectCountry: 'Sélectionner un pays', + searchCountry: 'Rechercher un pays...', + noCountryFound: 'Aucun pays trouvé', + firstName: 'Prénom', + lastName: 'Nom de famille', + address1: 'Adresse', + address2: 'Appartement, suite, etc.', + city: 'Ville', + region: 'État/Province', + postalCode: 'Code postal', + notesPlaceholder: 'Notes ou instructions spéciales', + addressSuggestion: 'Vouliez-vous dire', + addressSuggestionEnd: ' ?', + noShippingOriginAddress: "Aucune adresse d'origine d'expédition fournie.", + }, + billing: { + title: 'Facturation', + description: 'Description de la facturation', + }, + payment: { + title: 'Paiement', + description: 'Tous les paiements sont sécurisés et chiffrés.', + billingAddress: { + title: 'Adresse de facturation', + description: 'Entrez votre adresse de facturation.', + useShippingAddress: "Utiliser l'adresse de livraison comme adresse de facturation", + }, + methods: { + creditCard: 'Carte de crédit ou de débit', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Paiements hors ligne', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Aucune méthode de paiement disponible', + cardNumber: 'Numéro de carte', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: "Date d'expiration (MM / AA)", + securityCode: 'Code de sécurité', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nom sur la carte', + payNow: 'Payer maintenant', + standardShipping: 'Livraison standard', + cardDetails: 'Détails de la carte', + payWithApplePay: 'Payer avec Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: "Échec de l'initialisation du paiement.", + orderTotal: 'Total de la commande', + subtotal: 'Sous-total', + tax: 'Taxe', + shipping: 'Expédition', + discount: 'Coupon', + processingPayment: 'Traitement du paiement...', + completingOrder: 'Finalisation de la commande...', + completeOrder: 'Terminer votre commande', + freePayment: 'Terminez votre commande gratuite', + }, + phone: { + placeholder: '01 23 45 67 89', + searchCountry: 'Rechercher un pays...', + noCountryFound: 'Aucun pays trouvé.', + }, + discounts: { + placeholder: 'Code coupon', + enterCode: 'Entrer le code coupon', + apply: 'Appliquer', + alreadyApplied: 'Ce code coupon a déjà été appliqué', + failedToApply: "Échec de l'application du code coupon", + enterCodeValidation: 'Veuillez entrer un code coupon', + }, + totals: { + subtotal: 'Sous-total', + discount: 'Remise', + shipping: 'Expédition', + tip: 'Pourboire', + estimatedTaxes: 'Taxes estimées', + totalDue: 'Total à payer', + orderSummary: 'Récapitulatif de la commande', + itemCount: 'articles', + noItems: 'Aucun article', + }, + lineItems: { + note: 'Note :', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Adresse', + suggestions: 'Suggestions', + }, + form: { + useFormFieldError: 'useFormField doit être utilisé dans ', + }, + pagination: { + ariaLabel: 'pagination', + previousPageAriaLabel: 'Aller à la page précédente', + previous: 'Précédent', + nextPageAriaLabel: 'Aller à la page suivante', + next: 'Suivant', + morePages: 'Plus de pages', + }, + sidebar: { + useSidebarError: 'useSidebar doit être utilisé dans un SidebarProvider.', + toggleSidebar: 'Basculer la barre latérale', + }, + accessibility: { + payWithApplePay: 'Payer avec Apple Pay', + applePayLogo: 'Logo Apple Pay', + close: 'Fermer', + additionalTipOptions: 'Options de pourboire supplémentaires', + breadcrumb: "fil d'ariane", + more: 'Plus', + previousSlide: 'Diapositive précédente', + nextSlide: 'Diapositive suivante', + }, + }, + errors: { + failedToGetAccessToken: "Échec de l'obtention du jeton d'accès", + invalidEnvironment: 'Environnement invalide', + noPublicAccessToken: "Aucun jeton d'accès public fourni", + noSessionToken: 'Aucun jeton de session ou ID fourni', + errorCreatingSession: 'Erreur lors de la création de la session de commande :', + orderIdRequired: "L'ID de commande est requis", + errorTrackingEvent: "Erreur lors du suivi de l'événement", + errorInTrackingSubscriber: "Erreur dans l'abonné de suivi", + useTrackingProviderError: 'useTracking doit être utilisé dans un TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect doit être utilisé dans un PoyntCollectProvider', + useSquareProviderError: 'useSquare doit être utilisé dans un SquareProvider', + errorProcessingPayment: 'Erreur lors du traitement du paiement', + stripeConfigMissing: 'La configuration Stripe est manquante. Veuillez vérifier votre configuration.', + paymentSuccessful: 'Paiement réussi', + paymentFailed: 'Échec du paiement', + paypalConfigMissing: 'La configuration PayPal est manquante. Veuillez vérifier votre configuration.', + stripeNotReady: "Stripe n'est pas prêt", + cardElementNotFound: 'Élément de carte non trouvé', + errorProcessingCardPayment: 'Erreur lors du traitement du paiement par carte.', + errorProcessingExpressPayment: 'Erreur lors du traitement du paiement express.', + failedToInitializePayment: "Échec de l'initialisation du paiement.", + invalidPhoneNumber: 'numéro de téléphone invalide', + }, + validation: { + phoneRequired: 'Le numéro de téléphone est requis', + emailRequired: 'Entrez un email', + emailInvalid: 'Entrez un email valide', + phoneTooLong: 'Numéro de téléphone trop long', + invalidShippingAddress: 'Adresse de livraison invalide', + invalidBillingAddress: 'Adresse de facturation invalide', + selectPaymentMethod: 'Sélectionnez une méthode de paiement', + enterValidBillingPhone: 'Entrez un numéro de téléphone de facturation valide', + enterValidShippingPhone: 'Entrez un numéro de téléphone de livraison valide', + enterFirstName: 'Entrez un prénom', + enterLastName: 'Entrez un nom de famille', + enterAddress: 'Entrez une adresse', + enterCity: 'Entrez une ville', + enterZipCode: 'Entrez un code postal', + enterZipPostalCode: 'Entrez un code ZIP / postal', + selectState: 'Sélectionnez un état/province', + selectCountry: 'Sélectionnez un pays', + enterCountry: 'Entrez un pays', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Erreur du serveur', + SESSION_NOT_FOUND: 'Session non trouvée', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Échec de la récupération de la session de paiement', + CHECKOUT_SESSION_NOT_FOUND: 'Session de paiement non trouvée', + CHECKOUT_SESSION_FETCH_ERROR: 'Erreur générale lors de la récupération de la session de paiement', + DRAFT_ORDER_NOT_FOUND: 'Commande non trouvée', + CHECKOUT_SESSION_CREATION_FAILED: 'Échec de la création de la session de paiement', + CREATED_SESSION_DATA_NOT_FOUND: 'Données de session créées non trouvées', + CHECKOUT_SESSION_CREATION_ERROR: 'Erreur générale lors de la création de la session de paiement', + CHECKOUT_SESSION_UPDATE_FAILED: 'Échec de la mise à jour de la session de paiement', + UPDATED_SESSION_NOT_FOUND: 'Session mise à jour non trouvée', + CHECKOUT_SESSION_UPDATE_ERROR: 'Erreur générale lors de la mise à jour de la session de paiement', + ORDER_API_NOT_FOUND: "Source de données de l'API de commande non trouvée", + DRAFT_ORDER_RETRIEVAL_FAILED: 'Échec de la récupération de la commande', + DATA_SOURCES_NOT_FOUND: 'Sources de données non trouvées', + TRANSACTION_API_NOT_FOUND: "Source de données de l'API de transaction non trouvée", + TRANSACTION_PROCESSING_FAILED: 'Échec du traitement de la transaction', + TRANSACTION_CREATION_FAILED: 'Échec de la recherche ou de la création de la transaction', + ORDER_OPENING_FAILED: "Échec de l'ouverture de la commande", + INVALID_FULFILLMENT_LOCATION: "Lieu d'exécution invalide", + NO_VALID_PICKUP_LOCATION: 'Aucun lieu de retrait valide disponible', + DRAFT_ORDER_FETCH_FAILED: 'Échec de la récupération de la commande', + LINE_ITEMS_FETCH_FAILED: 'Échec de la récupération des articles', + CURRENT_ORDER_FETCH_FAILED: 'Échec de la récupération de la commande actuelle', + DRAFT_ORDER_UPDATE_FAILED: 'Échec de la mise à jour de la commande', + DISCOUNT_APPLICATION_FAILED: "Échec de l'application du coupon", + CONTEXT_UNAVAILABLE: 'Session ou sources de données non disponibles', + SHIPPING_LINES_UPDATE_FAILED: "Échec de la mise à jour des lignes d'expédition", + ORDER_TOTALS_UPDATE_FAILED: 'Échec de la mise à jour des totaux de la commande', + ORDER_TOTAL_CALCULATION_FAILED: 'Échec du calcul des totaux de la commande', + SHIPPING_METHOD_APPLICATION_FAILED: "Échec de l'application de la méthode d'expédition", + SKU_FETCH_FAILED: 'Échec de la récupération des SKU', + SHIPPING_RATES_CALCULATION_FAILED: "Échec du calcul des tarifs d'expédition", + SHIPPING_METHOD_NOT_FOUND: "Méthode d'expédition non trouvée", + SHIPPING_METHOD_REMOVAL_FAILED: "Échec de la suppression de la méthode d'expédition", + SHIPPING_ADDRESS_REQUIRED: 'Adresse de livraison requise', + INVENTORY_VALIDATION_ERROR: 'Erreur de validation des stocks', + INSUFFICIENT_INVENTORY: 'Stock insuffisant', + INVALID_ORDER_STATUS: 'Statut de commande invalide', + TRANSACTION_CREATION_ERROR: 'Erreur lors de la création de la transaction', + TRANSACTION_PROCESSING_ERROR: 'Erreur lors du traitement de la transaction', + UNKNOWN_ERROR: 'Erreur inconnue', + FULFILLMENT_CREATION_ERROR: "Erreur lors de la création de l'exécution", + TAX_CALCULATION_ERROR: 'Erreur lors du calcul des taxes', + ADDRESS_VERIFICATION_ERROR: "Erreur de vérification de l'adresse", + ADDRESS_MATCHES_ERROR: "Erreur de correspondance d'adresse", + SHIPPING_CONFLICT_ERROR: "Conflit d'expédition", + SHIPPING_ERROR: "Erreur générale d'expédition", + PRICE_ADJUSTMENT_CALCULATION_ERROR: "Erreur lors du calcul de l'ajustement de prix", + ORDER_FETCH_ERROR: 'Erreur lors de la récupération de la commande', + DRAFT_ORDER_UPDATE_ERROR: 'Erreur lors de la mise à jour de la commande', + DISCOUNT_APPLICATION_ERROR: "Erreur lors de l'application du coupon", + DRAFT_ORDER_OPEN_ERROR: "Erreur lors de l'ouverture de la commande", + ORDER_UPDATE_ERROR: 'Erreur lors de la mise à jour de la commande', + CATALOG_FETCH_ERROR: 'Erreur lors de la récupération du catalogue', + STORE_ID_NOT_FOUND: 'ID de magasin introuvable', + ORDER_NOT_DRAFT: "La commande n'est pas en statut valide", + NO_LINE_ITEMS: 'Aucun article trouvé', + BAD_USER_INPUT: 'Saisie utilisateur invalide', + MISSING_SHIPPING_ADDRESS: 'Adresse de livraison requise', + MISSING_REQUIRED_FIELD: 'Champ requis manquant', + CATALOG_API_ERROR: 'Erreur du service catalogue', + TAX_SERVICE_UNAVAILABLE: 'Service de taxes indisponible', + SHIPPING_SERVICE_UNAVAILABLE: 'Service de livraison indisponible', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: "Service d'ajustements de prix indisponible", + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Échec du calcul des ajustements de prix', + SERVICE_UNAVAILABLE: 'Service temporairement indisponible', + RATE_LIMITED: 'Trop de requêtes, veuillez réessayer plus tard', + TIMEOUT: "Délai d'attente dépassé", + INTERNAL_ERROR: 'Erreur interne du serveur', + SHIPPING_POSTAL_CODE_REQUIRED: "Le code postal d'expédition est requis", + SHIPPING_COUNTRY_CODE_REQUIRED: "Le code de pays d'expédition est requis", + SHIPPING_METHOD_REQUIRED: "La méthode d'expédition est requise", + SHIPPING_ADDRESS_VERIFICATION_FAILED: "La vérification de l'adresse d'expédition a échoué", + BILLING_ADDRESS_VERIFICATION_FAILED: "La vérification de l'adresse de facturation a échoué", + MISSING_SHIPPING_INFO: "L'adresse ou la méthode de livraison n'a pas pu être appliquée", + DEPENDENCY_ERROR: 'Nous ne pouvons pas traiter votre commande actuellement. Veuillez patienter un moment et réessayer', + }, }; diff --git a/packages/localizations/src/idId.ts b/packages/localizations/src/idId.ts index 07297661..9876a9e0 100644 --- a/packages/localizations/src/idId.ts +++ b/packages/localizations/src/idId.ts @@ -1,316 +1,317 @@ export const idId = { - general: { - optional: "opsional", - notes: "Catatan", - quantity: "Kuantitas", - free: "GRATIS", - closed: "Tutup", - apply: "Terapkan", - checkoutDisabled: - "Checkout saat ini dinonaktifkan. Kami mohon maaf atas ketidaknyamanannya.", - }, - contact: { - title: "Kontak", - description: "", - email: "Email", - }, - pickup: { - title: "Ambil di Toko", - description: - "Segala upaya akan dilakukan untuk memenuhi waktu pengambilan yang Anda harapkan. Waktu pengambilan aktual dapat bervariasi.", - location: "Lokasi Pengambilan", - date: "Tanggal Pengambilan", - time: "Waktu Pengambilan Pilihan", - selectStore: "Pilih lokasi toko", - selectDate: "Pilih tanggal", - selectTime: "Pilih waktu pengambilan", - storeHours: "Jam Toko", - seeDetails: "Lihat detail", - noTimeSlots: - "Tidak ada slot waktu tersedia untuk tanggal yang dipilih. Silakan pilih tanggal lain.", - hoursDisplayed: "Jam ditampilkan dalam zona waktu lokal Anda.", - storeOperatesIn: "Toko beroperasi dalam zona waktu {timezone}.", - asap: "SESEGERA MUNGKIN", - hour: "jam", - hours: "jam", - minutes: "menit", - searchCountry: "Cari negara...", - noCountryFound: "Negara tidak ditemukan.", - }, - days: { - sunday: "Minggu", - monday: "Senin", - tuesday: "Selasa", - wednesday: "Rabu", - thursday: "Kamis", - friday: "Jumat", - saturday: "Sabtu", - }, - delivery: { - title: "Pengiriman", - method: "Metode pengiriman", - shipping: "Pengiriman", - shipToAddress: "Kirim ke alamat Anda", - localPickup: "Ambil di Toko", - pickupFromStore: "Ambil dari lokasi toko", - }, - tips: { - title: "Tambahkan tip", - noTip: "Tanpa Tip", - customAmount: "Jumlah Kustom", - customTipAmount: "Jumlah Tip Kustom", - placeholder: "Rp0", - }, - shipping: { - title: "Pengiriman", - description: "Alamat pengiriman", - method: "Metode pengiriman", - noShippingMethodAddress: - "Masukkan alamat Anda untuk melihat metode pengiriman yang tersedia.", - noShippingMethods: "Tidak ada metode pengiriman ditemukan.", - phone: "Nomor Telepon", - country: "Negara", - selectCountry: "Pilih negara", - searchCountry: "Cari negara...", - noCountryFound: "Negara tidak ditemukan", - firstName: "Nama Depan", - lastName: "Nama Belakang", - address1: "Alamat", - address2: "Apartemen, suite, dll.", - city: "Kota", - region: "Provinsi", - postalCode: "Kode Pos", - notesPlaceholder: "Catatan atau instruksi khusus", - addressSuggestion: "Apakah maksud Anda", - addressSuggestionEnd: "?", - noShippingOriginAddress: "Alamat asal pengiriman tidak disediakan.", - }, - billing: { - title: "Penagihan", - description: "Deskripsi penagihan", - }, - payment: { - title: "Pembayaran", - description: "Semua pembayaran aman dan terenkripsi.", - billingAddress: { - title: "Alamat Penagihan", - description: "Masukkan alamat penagihan Anda.", - useShippingAddress: "Gunakan alamat pengiriman sebagai alamat penagihan", - }, - methods: { - creditCard: "Kartu Kredit atau Debit", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pembayaran offline", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Tidak ada metode pembayaran tersedia", - cardNumber: "Nomor kartu", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Tanggal kedaluwarsa (BB / TT)", - securityCode: "Kode keamanan", - cvvPlaceholder: "CVV", - nameOnCard: "Nama di kartu", - payNow: "Bayar sekarang", - standardShipping: "Pengiriman Standar", - cardDetails: "Detail kartu", - payWithApplePay: "Bayar dengan Apple Pay", - expirationDatePlaceholder: "BB / TT", - failedToInitializePayment: "Gagal menginisialisasi pembayaran.", - orderTotal: "Total Pesanan", - subtotal: "Subtotal", - tax: "Pajak", - shipping: "Pengiriman", - discount: "Kupon", - processingPayment: "Memproses pembayaran...", - completingOrder: "Menyelesaikan pesanan...", - freePayment: "Selesaikan pesanan gratis Anda", - }, - phone: { - placeholder: "(021) 123-4567", - searchCountry: "Cari negara...", - noCountryFound: "Negara tidak ditemukan.", - }, - discounts: { - placeholder: "Kode kupon", - enterCode: "Masukkan kode kupon", - apply: "Terapkan", - alreadyApplied: "Kode kupon ini sudah diterapkan", - failedToApply: "Gagal menerapkan kode kupon", - enterCodeValidation: "Silakan masukkan kode kupon", - }, - totals: { - subtotal: "Subtotal", - discount: "Diskon", - shipping: "Pengiriman", - tip: "Tip", - estimatedTaxes: "Perkiraan pajak", - totalDue: "Total Pembayaran", - orderSummary: "Ringkasan Pesanan", - itemCount: "item", - noItems: "Tidak ada item", - }, - lineItems: { - note: "Catatan:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Alamat", - suggestions: "Saran", - }, - form: { - useFormFieldError: "useFormField harus digunakan dalam ", - }, - pagination: { - ariaLabel: "paginasi", - previousPageAriaLabel: "Ke halaman sebelumnya", - previous: "Sebelumnya", - nextPageAriaLabel: "Ke halaman berikutnya", - next: "Berikutnya", - morePages: "Halaman lainnya", - }, - sidebar: { - useSidebarError: "useSidebar harus digunakan dalam SidebarProvider.", - toggleSidebar: "Toggle Sidebar", - }, - accessibility: { - payWithApplePay: "Bayar dengan Apple Pay", - applePayLogo: "Logo Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Gagal mendapatkan token akses", - invalidEnvironment: "Lingkungan tidak valid", - noPublicAccessToken: "Token akses publik tidak disediakan", - noSessionToken: "Token sesi atau ID tidak disediakan", - errorCreatingSession: "Error membuat sesi checkout:", - orderIdRequired: "ID pesanan diperlukan", - errorTrackingEvent: "Error melacak event", - errorInTrackingSubscriber: "Error dalam tracking subscriber", - useTrackingProviderError: - "useTracking harus digunakan dalam TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect harus digunakan dalam PoyntCollectProvider", - useSquareProviderError: "useSquare harus digunakan dalam SquareProvider", - errorProcessingPayment: "Error memproses pembayaran", - stripeConfigMissing: - "Konfigurasi Stripe tidak ada. Silakan periksa pengaturan Anda.", - paymentSuccessful: "Pembayaran berhasil", - paymentFailed: "Pembayaran gagal", - paypalConfigMissing: - "Konfigurasi PayPal tidak ada. Silakan periksa pengaturan Anda.", - stripeNotReady: "Stripe tidak siap", - cardElementNotFound: "CardElement tidak ditemukan", - errorProcessingCardPayment: "Error memproses pembayaran kartu.", - errorProcessingExpressPayment: "Error memproses pembayaran express.", - failedToInitializePayment: "Gagal menginisialisasi pembayaran.", - invalidPhoneNumber: "nomor telepon tidak valid", - }, - validation: { - phoneRequired: "Nomor telepon diperlukan", - emailRequired: "Masukkan email", - emailInvalid: "Masukkan email yang valid", - phoneTooLong: "Nomor telepon terlalu panjang", - invalidShippingAddress: "Alamat pengiriman tidak valid", - invalidBillingAddress: "Alamat penagihan tidak valid", - selectPaymentMethod: "Pilih metode pembayaran", - enterValidBillingPhone: "Masukkan nomor telepon penagihan yang valid", - enterValidShippingPhone: "Masukkan nomor telepon pengiriman yang valid", - enterFirstName: "Masukkan nama depan", - enterLastName: "Masukkan nama belakang", - enterAddress: "Masukkan alamat", - enterCity: "Masukkan kota", - enterZipCode: "Masukkan kode pos", - enterZipPostalCode: "Masukkan kode pos", - selectState: "Pilih provinsi", - selectCountry: "Pilih negara", - enterCountry: "Masukkan negara", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Error server", - SESSION_NOT_FOUND: "Sesi tidak ditemukan", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Gagal mengambil sesi checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sesi checkout tidak ditemukan", - CHECKOUT_SESSION_FETCH_ERROR: "Error umum mengambil sesi checkout", - DRAFT_ORDER_NOT_FOUND: "Draft pesanan tidak ditemukan", - CHECKOUT_SESSION_CREATION_FAILED: "Gagal membuat sesi checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Data sesi yang dibuat tidak ditemukan", - CHECKOUT_SESSION_CREATION_ERROR: "Error umum pembuatan sesi checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Gagal memperbarui sesi checkout", - UPDATED_SESSION_NOT_FOUND: "Sesi yang diperbarui tidak ditemukan", - CHECKOUT_SESSION_UPDATE_ERROR: "Error umum pembaruan sesi checkout", - ORDER_API_NOT_FOUND: "Sumber data API pesanan tidak ditemukan", - DRAFT_ORDER_RETRIEVAL_FAILED: "Gagal mengambil draft pesanan", - DATA_SOURCES_NOT_FOUND: "Sumber data tidak ditemukan", - TRANSACTION_API_NOT_FOUND: "Sumber data API transaksi tidak ditemukan", - TRANSACTION_PROCESSING_FAILED: "Gagal memproses transaksi", - TRANSACTION_CREATION_FAILED: "Gagal menemukan atau membuat transaksi", - ORDER_OPENING_FAILED: "Gagal membuka pesanan", - INVALID_FULFILLMENT_LOCATION: "Lokasi pemenuhan tidak valid", - NO_VALID_PICKUP_LOCATION: - "Tidak ada lokasi pengambilan yang valid tersedia", - DRAFT_ORDER_FETCH_FAILED: "Gagal mengambil draft pesanan", - LINE_ITEMS_FETCH_FAILED: "Gagal mengambil item pesanan", - CURRENT_ORDER_FETCH_FAILED: "Gagal mengambil draft pesanan saat ini", - DRAFT_ORDER_UPDATE_FAILED: "Gagal memperbarui draft pesanan", - DISCOUNT_APPLICATION_FAILED: "Gagal menerapkan kupon", - CONTEXT_UNAVAILABLE: "Sesi atau sumber data tidak tersedia", - SHIPPING_LINES_UPDATE_FAILED: "Gagal memperbarui jalur pengiriman", - ORDER_TOTALS_UPDATE_FAILED: "Gagal memperbarui total pesanan", - SHIPPING_METHOD_APPLICATION_FAILED: "Gagal menerapkan metode pengiriman", - SKU_FETCH_FAILED: "Gagal mengambil SKU", - SHIPPING_RATES_CALCULATION_FAILED: "Gagal menghitung tarif pengiriman", - SHIPPING_METHOD_NOT_FOUND: "Metode pengiriman tidak ditemukan", - SHIPPING_METHOD_REMOVAL_FAILED: "Gagal menghapus metode pengiriman", - SHIPPING_ADDRESS_REQUIRED: "Alamat pengiriman diperlukan", - INVENTORY_VALIDATION_ERROR: "Error validasi inventori", - INSUFFICIENT_INVENTORY: "Inventori tidak mencukupi", - INVALID_ORDER_STATUS: "Status pesanan tidak valid", - TRANSACTION_CREATION_ERROR: "Error pembuatan transaksi", - TRANSACTION_PROCESSING_ERROR: "Error pemrosesan transaksi", - UNKNOWN_ERROR: "Error tidak diketahui", - FULFILLMENT_CREATION_ERROR: "Error pembuatan pemenuhan", - TAX_CALCULATION_ERROR: "Error perhitungan pajak", - ADDRESS_VERIFICATION_ERROR: "Error verifikasi alamat", - ADDRESS_MATCHES_ERROR: "Error pencocokan alamat", - SHIPPING_CONFLICT_ERROR: "Error konflik pengiriman", - SHIPPING_ERROR: "Error pengiriman umum", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Error perhitungan penyesuaian harga", - ORDER_FETCH_ERROR: "Error mengambil pesanan", - DRAFT_ORDER_UPDATE_ERROR: "Error pembaruan draft pesanan", - DISCOUNT_APPLICATION_ERROR: "Error penerapan kupon", - DRAFT_ORDER_OPEN_ERROR: "Error membuka draft pesanan", - ORDER_UPDATE_ERROR: "Error pembaruan pesanan", - CATALOG_FETCH_ERROR: "Error mengambil katalog", - STORE_ID_NOT_FOUND: "ID toko tidak ditemukan", - ORDER_NOT_DRAFT: "Pesanan tidak dalam status draft", - NO_LINE_ITEMS: "Tidak ada item yang ditemukan", - BAD_USER_INPUT: "Input pengguna tidak valid", - MISSING_SHIPPING_ADDRESS: "Alamat pengiriman diperlukan", - MISSING_REQUIRED_FIELD: "Field wajib tidak ada", - CATALOG_API_ERROR: "Error layanan katalog", - TAX_SERVICE_UNAVAILABLE: "Layanan pajak tidak tersedia", - SHIPPING_SERVICE_UNAVAILABLE: "Layanan pengiriman tidak tersedia", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Layanan penyesuaian harga tidak tersedia", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: "Gagal menghitung penyesuaian harga", - SERVICE_UNAVAILABLE: "Layanan sementara tidak tersedia", - RATE_LIMITED: "Terlalu banyak permintaan, silakan coba lagi nanti", - TIMEOUT: "Waktu permintaan habis", - INTERNAL_ERROR: "Error internal server", - SHIPPING_POSTAL_CODE_REQUIRED: "Kode pos pengiriman diperlukan", - SHIPPING_COUNTRY_CODE_REQUIRED: "Kode negara pengiriman diperlukan", - SHIPPING_METHOD_REQUIRED: "Metode pengiriman diperlukan", - SHIPPING_ADDRESS_VERIFICATION_FAILED: "Verifikasi alamat pengiriman gagal", - BILLING_ADDRESS_VERIFICATION_FAILED: "Verifikasi alamat penagihan gagal", - }, + general: { + optional: 'opsional', + notes: 'Catatan', + quantity: 'Kuantitas', + free: 'GRATIS', + closed: 'Tutup', + apply: 'Terapkan', + checkoutDisabled: 'Checkout saat ini dinonaktifkan. Kami mohon maaf atas ketidaknyamanannya.', + }, + contact: { + title: 'Kontak', + description: '', + email: 'Email', + }, + pickup: { + title: 'Ambil di Toko', + description: + 'Segala upaya akan dilakukan untuk memenuhi waktu pengambilan yang Anda harapkan. Waktu pengambilan aktual dapat bervariasi.', + location: 'Lokasi Pengambilan', + date: 'Tanggal Pengambilan', + time: 'Waktu Pengambilan Pilihan', + selectStore: 'Pilih lokasi toko', + selectDate: 'Pilih tanggal', + selectTime: 'Pilih waktu pengambilan', + storeHours: 'Jam Toko', + seeDetails: 'Lihat detail', + noTimeSlots: 'Tidak ada slot waktu tersedia untuk tanggal yang dipilih. Silakan pilih tanggal lain.', + hoursDisplayed: 'Jam ditampilkan dalam zona waktu lokal Anda.', + storeOperatesIn: 'Toko beroperasi dalam zona waktu {timezone}.', + asap: 'SESEGERA MUNGKIN', + hour: 'jam', + hours: 'jam', + minutes: 'menit', + searchCountry: 'Cari negara...', + noCountryFound: 'Negara tidak ditemukan.', + }, + days: { + sunday: 'Minggu', + monday: 'Senin', + tuesday: 'Selasa', + wednesday: 'Rabu', + thursday: 'Kamis', + friday: 'Jumat', + saturday: 'Sabtu', + }, + delivery: { + title: 'Pengiriman', + method: 'Metode pengiriman', + shipping: 'Pengiriman', + shipToAddress: 'Kirim ke alamat Anda', + localPickup: 'Ambil di Toko', + pickupFromStore: 'Ambil dari lokasi toko', + }, + tips: { + title: 'Tambahkan tip', + noTip: 'Tanpa Tip', + customAmount: 'Jumlah Kustom', + customTipAmount: 'Jumlah Tip Kustom', + placeholder: 'Rp0', + }, + shipping: { + title: 'Pengiriman', + description: 'Alamat pengiriman', + method: 'Metode pengiriman', + noShippingMethodAddress: 'Masukkan alamat Anda untuk melihat metode pengiriman yang tersedia.', + noShippingMethods: 'Tidak ada metode pengiriman ditemukan.', + phone: 'Nomor Telepon', + country: 'Negara', + selectCountry: 'Pilih negara', + searchCountry: 'Cari negara...', + noCountryFound: 'Negara tidak ditemukan', + firstName: 'Nama Depan', + lastName: 'Nama Belakang', + address1: 'Alamat', + address2: 'Apartemen, suite, dll.', + city: 'Kota', + region: 'Provinsi', + postalCode: 'Kode Pos', + notesPlaceholder: 'Catatan atau instruksi khusus', + addressSuggestion: 'Apakah maksud Anda', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'Alamat asal pengiriman tidak disediakan.', + }, + billing: { + title: 'Penagihan', + description: 'Deskripsi penagihan', + }, + payment: { + title: 'Pembayaran', + description: 'Semua pembayaran aman dan terenkripsi.', + billingAddress: { + title: 'Alamat Penagihan', + description: 'Masukkan alamat penagihan Anda.', + useShippingAddress: 'Gunakan alamat pengiriman sebagai alamat penagihan', + }, + methods: { + creditCard: 'Kartu Kredit atau Debit', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pembayaran offline', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Tidak ada metode pembayaran tersedia', + cardNumber: 'Nomor kartu', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Tanggal kedaluwarsa (BB / TT)', + securityCode: 'Kode keamanan', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nama di kartu', + payNow: 'Bayar sekarang', + standardShipping: 'Pengiriman Standar', + cardDetails: 'Detail kartu', + payWithApplePay: 'Bayar dengan Apple Pay', + expirationDatePlaceholder: 'BB / TT', + failedToInitializePayment: 'Gagal menginisialisasi pembayaran.', + orderTotal: 'Total Pesanan', + subtotal: 'Subtotal', + tax: 'Pajak', + shipping: 'Pengiriman', + discount: 'Kupon', + processingPayment: 'Memproses pembayaran...', + completingOrder: 'Menyelesaikan pesanan...', + completeOrder: 'Selesaikan pesanan Anda', + freePayment: 'Selesaikan pesanan gratis Anda', + }, + phone: { + placeholder: '(021) 123-4567', + searchCountry: 'Cari negara...', + noCountryFound: 'Negara tidak ditemukan.', + }, + discounts: { + placeholder: 'Kode kupon', + enterCode: 'Masukkan kode kupon', + apply: 'Terapkan', + alreadyApplied: 'Kode kupon ini sudah diterapkan', + failedToApply: 'Gagal menerapkan kode kupon', + enterCodeValidation: 'Silakan masukkan kode kupon', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Diskon', + shipping: 'Pengiriman', + tip: 'Tip', + estimatedTaxes: 'Perkiraan pajak', + totalDue: 'Total Pembayaran', + orderSummary: 'Ringkasan Pesanan', + itemCount: 'item', + noItems: 'Tidak ada item', + }, + lineItems: { + note: 'Catatan:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Alamat', + suggestions: 'Saran', + }, + form: { + useFormFieldError: 'useFormField harus digunakan dalam ', + }, + pagination: { + ariaLabel: 'paginasi', + previousPageAriaLabel: 'Ke halaman sebelumnya', + previous: 'Sebelumnya', + nextPageAriaLabel: 'Ke halaman berikutnya', + next: 'Berikutnya', + morePages: 'Halaman lainnya', + }, + sidebar: { + useSidebarError: 'useSidebar harus digunakan dalam SidebarProvider.', + toggleSidebar: 'Toggle Sidebar', + }, + accessibility: { + payWithApplePay: 'Bayar dengan Apple Pay', + applePayLogo: 'Logo Apple Pay', + close: 'Tutup', + additionalTipOptions: 'Opsi tip tambahan', + breadcrumb: 'navigasi breadcrumb', + more: 'Lainnya', + previousSlide: 'Slide sebelumnya', + nextSlide: 'Slide berikutnya', + }, + }, + errors: { + failedToGetAccessToken: 'Gagal mendapatkan token akses', + invalidEnvironment: 'Lingkungan tidak valid', + noPublicAccessToken: 'Token akses publik tidak disediakan', + noSessionToken: 'Token sesi atau ID tidak disediakan', + errorCreatingSession: 'Error membuat sesi checkout:', + orderIdRequired: 'ID pesanan diperlukan', + errorTrackingEvent: 'Error melacak event', + errorInTrackingSubscriber: 'Error dalam tracking subscriber', + useTrackingProviderError: 'useTracking harus digunakan dalam TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect harus digunakan dalam PoyntCollectProvider', + useSquareProviderError: 'useSquare harus digunakan dalam SquareProvider', + errorProcessingPayment: 'Error memproses pembayaran', + stripeConfigMissing: 'Konfigurasi Stripe tidak ada. Silakan periksa pengaturan Anda.', + paymentSuccessful: 'Pembayaran berhasil', + paymentFailed: 'Pembayaran gagal', + paypalConfigMissing: 'Konfigurasi PayPal tidak ada. Silakan periksa pengaturan Anda.', + stripeNotReady: 'Stripe tidak siap', + cardElementNotFound: 'CardElement tidak ditemukan', + errorProcessingCardPayment: 'Error memproses pembayaran kartu.', + errorProcessingExpressPayment: 'Error memproses pembayaran express.', + failedToInitializePayment: 'Gagal menginisialisasi pembayaran.', + invalidPhoneNumber: 'nomor telepon tidak valid', + }, + validation: { + phoneRequired: 'Nomor telepon diperlukan', + emailRequired: 'Masukkan email', + emailInvalid: 'Masukkan email yang valid', + phoneTooLong: 'Nomor telepon terlalu panjang', + invalidShippingAddress: 'Alamat pengiriman tidak valid', + invalidBillingAddress: 'Alamat penagihan tidak valid', + selectPaymentMethod: 'Pilih metode pembayaran', + enterValidBillingPhone: 'Masukkan nomor telepon penagihan yang valid', + enterValidShippingPhone: 'Masukkan nomor telepon pengiriman yang valid', + enterFirstName: 'Masukkan nama depan', + enterLastName: 'Masukkan nama belakang', + enterAddress: 'Masukkan alamat', + enterCity: 'Masukkan kota', + enterZipCode: 'Masukkan kode pos', + enterZipPostalCode: 'Masukkan kode pos', + selectState: 'Pilih provinsi', + selectCountry: 'Pilih negara', + enterCountry: 'Masukkan negara', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Error server', + SESSION_NOT_FOUND: 'Sesi tidak ditemukan', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Gagal mengambil sesi checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sesi checkout tidak ditemukan', + CHECKOUT_SESSION_FETCH_ERROR: 'Error umum mengambil sesi checkout', + DRAFT_ORDER_NOT_FOUND: 'Pesanan tidak ditemukan', + CHECKOUT_SESSION_CREATION_FAILED: 'Gagal membuat sesi checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Data sesi yang dibuat tidak ditemukan', + CHECKOUT_SESSION_CREATION_ERROR: 'Error umum pembuatan sesi checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Gagal memperbarui sesi checkout', + UPDATED_SESSION_NOT_FOUND: 'Sesi yang diperbarui tidak ditemukan', + CHECKOUT_SESSION_UPDATE_ERROR: 'Error umum pembaruan sesi checkout', + ORDER_API_NOT_FOUND: 'Sumber data API pesanan tidak ditemukan', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Gagal mengambil pesanan', + DATA_SOURCES_NOT_FOUND: 'Sumber data tidak ditemukan', + TRANSACTION_API_NOT_FOUND: 'Sumber data API transaksi tidak ditemukan', + TRANSACTION_PROCESSING_FAILED: 'Gagal memproses transaksi', + TRANSACTION_CREATION_FAILED: 'Gagal menemukan atau membuat transaksi', + ORDER_OPENING_FAILED: 'Gagal membuka pesanan', + INVALID_FULFILLMENT_LOCATION: 'Lokasi pemenuhan tidak valid', + NO_VALID_PICKUP_LOCATION: 'Tidak ada lokasi pengambilan yang valid tersedia', + DRAFT_ORDER_FETCH_FAILED: 'Gagal mengambil pesanan', + LINE_ITEMS_FETCH_FAILED: 'Gagal mengambil item pesanan', + CURRENT_ORDER_FETCH_FAILED: 'Gagal mengambil pesanan saat ini', + DRAFT_ORDER_UPDATE_FAILED: 'Gagal memperbarui pesanan', + DISCOUNT_APPLICATION_FAILED: 'Gagal menerapkan kupon', + CONTEXT_UNAVAILABLE: 'Sesi atau sumber data tidak tersedia', + SHIPPING_LINES_UPDATE_FAILED: 'Gagal memperbarui jalur pengiriman', + ORDER_TOTALS_UPDATE_FAILED: 'Gagal memperbarui total pesanan', + ORDER_TOTAL_CALCULATION_FAILED: 'Gagal menghitung total pesanan', + SHIPPING_METHOD_APPLICATION_FAILED: 'Gagal menerapkan metode pengiriman', + SKU_FETCH_FAILED: 'Gagal mengambil SKU', + SHIPPING_RATES_CALCULATION_FAILED: 'Gagal menghitung tarif pengiriman', + SHIPPING_METHOD_NOT_FOUND: 'Metode pengiriman tidak ditemukan', + SHIPPING_METHOD_REMOVAL_FAILED: 'Gagal menghapus metode pengiriman', + SHIPPING_ADDRESS_REQUIRED: 'Alamat pengiriman diperlukan', + INVENTORY_VALIDATION_ERROR: 'Error validasi inventori', + INSUFFICIENT_INVENTORY: 'Inventori tidak mencukupi', + INVALID_ORDER_STATUS: 'Status pesanan tidak valid', + TRANSACTION_CREATION_ERROR: 'Error pembuatan transaksi', + TRANSACTION_PROCESSING_ERROR: 'Error pemrosesan transaksi', + UNKNOWN_ERROR: 'Error tidak diketahui', + FULFILLMENT_CREATION_ERROR: 'Error pembuatan pemenuhan', + TAX_CALCULATION_ERROR: 'Error perhitungan pajak', + ADDRESS_VERIFICATION_ERROR: 'Error verifikasi alamat', + ADDRESS_MATCHES_ERROR: 'Error pencocokan alamat', + SHIPPING_CONFLICT_ERROR: 'Error konflik pengiriman', + SHIPPING_ERROR: 'Error pengiriman umum', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Error perhitungan penyesuaian harga', + ORDER_FETCH_ERROR: 'Error mengambil pesanan', + DRAFT_ORDER_UPDATE_ERROR: 'Error pembaruan pesanan', + DISCOUNT_APPLICATION_ERROR: 'Error penerapan kupon', + DRAFT_ORDER_OPEN_ERROR: 'Error membuka pesanan', + ORDER_UPDATE_ERROR: 'Error pembaruan pesanan', + CATALOG_FETCH_ERROR: 'Error mengambil katalog', + STORE_ID_NOT_FOUND: 'ID toko tidak ditemukan', + ORDER_NOT_DRAFT: 'Pesanan tidak dalam status valid', + NO_LINE_ITEMS: 'Tidak ada item yang ditemukan', + BAD_USER_INPUT: 'Input pengguna tidak valid', + MISSING_SHIPPING_ADDRESS: 'Alamat pengiriman diperlukan', + MISSING_REQUIRED_FIELD: 'Field wajib tidak ada', + CATALOG_API_ERROR: 'Error layanan katalog', + TAX_SERVICE_UNAVAILABLE: 'Layanan pajak tidak tersedia', + SHIPPING_SERVICE_UNAVAILABLE: 'Layanan pengiriman tidak tersedia', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Layanan penyesuaian harga tidak tersedia', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Gagal menghitung penyesuaian harga', + SERVICE_UNAVAILABLE: 'Layanan sementara tidak tersedia', + RATE_LIMITED: 'Terlalu banyak permintaan, silakan coba lagi nanti', + TIMEOUT: 'Waktu permintaan habis', + INTERNAL_ERROR: 'Error internal server', + SHIPPING_POSTAL_CODE_REQUIRED: 'Kode pos pengiriman diperlukan', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Kode negara pengiriman diperlukan', + SHIPPING_METHOD_REQUIRED: 'Metode pengiriman diperlukan', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Verifikasi alamat pengiriman gagal', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Verifikasi alamat penagihan gagal', + MISSING_SHIPPING_INFO: 'Alamat atau metode pengiriman gagal diterapkan', + DEPENDENCY_ERROR: 'Kami tidak dapat memproses pesanan Anda saat ini. Silakan tunggu sebentar dan coba lagi', + }, }; diff --git a/packages/localizations/src/index.ts b/packages/localizations/src/index.ts index 92eed3ba..99de1801 100644 --- a/packages/localizations/src/index.ts +++ b/packages/localizations/src/index.ts @@ -1,20 +1,20 @@ -export { deDe } from "./deDe"; -export { enIe } from "./enIe"; -export { enUs } from "./enUs"; -export { esAr } from "./esAr"; -export { esCl } from "./esCl"; -export { esCo } from "./esCo"; -export { esEs } from "./esEs"; -export { esMx } from "./esMx"; -export { esPe } from "./esPe"; -export { esUs } from "./esUs"; -export { frCa } from "./frCa"; -export { frFr } from "./frFr"; -export { idId } from "./idId"; -export { itIt } from "./itIt"; -export { ptBr } from "./ptBr"; -export { qaPs } from "./qaPs"; -export { trTr } from "./trTr"; -export { viVn } from "./viVn"; -export { zhCn } from "./zhCn"; -export { zhSg } from "./zhSg"; +export { deDe } from './deDe'; +export { enIe } from './enIe'; +export { enUs } from './enUs'; +export { esAr } from './esAr'; +export { esCl } from './esCl'; +export { esCo } from './esCo'; +export { esEs } from './esEs'; +export { esMx } from './esMx'; +export { esPe } from './esPe'; +export { esUs } from './esUs'; +export { frCa } from './frCa'; +export { frFr } from './frFr'; +export { idId } from './idId'; +export { itIt } from './itIt'; +export { ptBr } from './ptBr'; +export { qaPs } from './qaPs'; +export { trTr } from './trTr'; +export { viVn } from './viVn'; +export { zhCn } from './zhCn'; +export { zhSg } from './zhSg'; diff --git a/packages/localizations/src/itIt.ts b/packages/localizations/src/itIt.ts index 155bc82c..74477d80 100644 --- a/packages/localizations/src/itIt.ts +++ b/packages/localizations/src/itIt.ts @@ -1,340 +1,316 @@ export const itIt = { - general: { - optional: "opzionale", - notes: "Note", - quantity: "Quantità", - free: "GRATUITO", - closed: "Chiuso", - apply: "Applica", - checkoutDisabled: - "Il checkout è attualmente disabilitato. Ci scusiamo per l'inconveniente.", - }, - contact: { - title: "Contatto", - description: "", - email: "Email", - }, - pickup: { - title: "Ritiro in Negozio", - description: - "Faremo ogni sforzo per rispettare l'orario di ritiro previsto. Gli orari di ritiro effettivi possono variare.", - location: "Punto di Ritiro", - date: "Data di Ritiro", - time: "Orario di Ritiro Preferito", - selectStore: "Seleziona un punto vendita", - selectDate: "Seleziona una data", - selectTime: "Seleziona un orario di ritiro", - storeHours: "Orari del Negozio", - seeDetails: "Vedi dettagli", - noTimeSlots: - "Nessuna fascia oraria disponibile per la data selezionata. Seleziona un'altra data.", - hoursDisplayed: "Orari visualizzati nel tuo fuso orario locale.", - storeOperatesIn: "Il negozio opera nel fuso orario {timezone}.", - asap: "IL PRIMA POSSIBILE", - hour: "ora", - hours: "ore", - minutes: "minuti", - searchCountry: "Cerca paese...", - noCountryFound: "Nessun paese trovato.", - }, - days: { - sunday: "Domenica", - monday: "Lunedì", - tuesday: "Martedì", - wednesday: "Mercoledì", - thursday: "Giovedì", - friday: "Venerdì", - saturday: "Sabato", - }, - delivery: { - title: "Consegna", - method: "Metodo di consegna", - shipping: "Spedizione", - shipToAddress: "Spedisci al tuo indirizzo", - localPickup: "Ritiro in Negozio", - pickupFromStore: "Ritira dal punto vendita", - }, - tips: { - title: "Aggiungi una mancia", - noTip: "Nessuna Mancia", - customAmount: "Importo Personalizzato", - customTipAmount: "Importo Mancia Personalizzato", - placeholder: "€0,00", - }, - shipping: { - title: "Spedizione", - description: "Indirizzo di spedizione", - method: "Metodo di spedizione", - noShippingMethodAddress: - "Inserisci il tuo indirizzo per vedere i metodi di spedizione disponibili.", - noShippingMethods: "Nessun metodo di spedizione trovato.", - phone: "Numero di Telefono", - country: "Paese", - selectCountry: "Seleziona paese", - searchCountry: "Cerca paese...", - noCountryFound: "Nessun paese trovato", - firstName: "Nome", - lastName: "Cognome", - address1: "Indirizzo", - address2: "Appartamento, scala, ecc.", - city: "Città", - region: "Regione/Provincia", - postalCode: "Codice Postale", - notesPlaceholder: "Note o istruzioni speciali", - addressSuggestion: "Intendevi", - addressSuggestionEnd: "?", - noShippingOriginAddress: "Nessun indirizzo di origine spedizione fornito.", - }, - billing: { - title: "Fatturazione", - description: "Descrizione fatturazione", - }, - payment: { - title: "Pagamento", - description: "Tutti i pagamenti sono sicuri e crittografati.", - billingAddress: { - title: "Indirizzo di Fatturazione", - description: "Inserisci il tuo indirizzo di fatturazione.", - useShippingAddress: - "Usa l'indirizzo di spedizione come indirizzo di fatturazione", - }, - methods: { - creditCard: "Carta di Credito o Debito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagamenti offline", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Nessun metodo di pagamento disponibile", - cardNumber: "Numero della carta", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Data di scadenza (MM / AA)", - securityCode: "Codice di sicurezza", - cvvPlaceholder: "CVV", - nameOnCard: "Nome sulla carta", - payNow: "Paga ora", - standardShipping: "Spedizione Standard", - cardDetails: "Dettagli della carta", - payWithApplePay: "Paga con Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Errore nell'inizializzazione del pagamento.", - orderTotal: "Totale Ordine", - subtotal: "Subtotale", - tax: "Tasse", - shipping: "Spedizione", - discount: "Buono", - processingPayment: "Elaborazione pagamento...", - completingOrder: "Completamento dell'ordine...", - freePayment: "Completa il tuo ordine gratuito", - }, - phone: { - placeholder: "(02) 1234-5678", - searchCountry: "Cerca paese...", - noCountryFound: "Nessun paese trovato.", - }, - discounts: { - placeholder: "Codice buono", - enterCode: "Inserisci codice buono", - apply: "Applica", - alreadyApplied: "Questo codice buono è già stato applicato", - failedToApply: "Errore nell'applicazione del codice buono", - enterCodeValidation: "Inserisci un codice buono", - }, - totals: { - subtotal: "Subtotale", - discount: "Sconto", - shipping: "Spedizione", - tip: "Mancia", - estimatedTaxes: "Tasse stimate", - totalDue: "Totale Dovuto", - orderSummary: "Riepilogo Ordine", - itemCount: "articoli", - noItems: "Nessun articolo", - }, - lineItems: { - note: "Nota:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Indirizzo", - suggestions: "Suggerimenti", - }, - form: { - useFormFieldError: - "useFormField deve essere usato all'interno di ", - }, - pagination: { - ariaLabel: "paginazione", - previousPageAriaLabel: "Vai alla pagina precedente", - previous: "Precedente", - nextPageAriaLabel: "Vai alla pagina successiva", - next: "Successivo", - morePages: "Altre pagine", - }, - sidebar: { - useSidebarError: - "useSidebar deve essere usato all'interno di un SidebarProvider.", - toggleSidebar: "Attiva/Disattiva Barra Laterale", - }, - accessibility: { - payWithApplePay: "Paga con Apple Pay", - applePayLogo: "Logo Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Errore nel recupero del token di accesso", - invalidEnvironment: "Ambiente non valido", - noPublicAccessToken: "Nessun token di accesso pubblico fornito", - noSessionToken: "Nessun token di sessione o ID fornito", - errorCreatingSession: "Errore nella creazione della sessione di checkout:", - orderIdRequired: "ID ordine richiesto", - errorTrackingEvent: "Errore nel tracciamento dell'evento", - errorInTrackingSubscriber: "Errore nel sottoscrittore di tracciamento", - useTrackingProviderError: - "useTracking deve essere usato all'interno di un TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect deve essere usato all'interno di un PoyntCollectProvider", - useSquareProviderError: - "useSquare deve essere usato all'interno di un SquareProvider", - errorProcessingPayment: "Errore nell'elaborazione del pagamento", - stripeConfigMissing: - "Configurazione Stripe mancante. Controlla la tua configurazione.", - paymentSuccessful: "Pagamento riuscito", - paymentFailed: "Pagamento fallito", - paypalConfigMissing: - "Configurazione PayPal mancante. Controlla la tua configurazione.", - stripeNotReady: "Stripe non pronto", - cardElementNotFound: "CardElement non trovato", - errorProcessingCardPayment: - "Errore nell'elaborazione del pagamento con carta.", - errorProcessingExpressPayment: - "Errore nell'elaborazione del pagamento express.", - failedToInitializePayment: "Errore nell'inizializzazione del pagamento.", - invalidPhoneNumber: "numero di telefono non valido", - }, - validation: { - phoneRequired: "Numero di telefono richiesto", - emailRequired: "Inserisci un'email", - emailInvalid: "Inserisci un'email valida", - phoneTooLong: "Numero di telefono troppo lungo", - invalidShippingAddress: "Indirizzo di spedizione non valido", - invalidBillingAddress: "Indirizzo di fatturazione non valido", - selectPaymentMethod: "Seleziona un metodo di pagamento", - enterValidBillingPhone: - "Inserisci un numero di telefono di fatturazione valido", - enterValidShippingPhone: - "Inserisci un numero di telefono di spedizione valido", - enterFirstName: "Inserisci un nome", - enterLastName: "Inserisci un cognome", - enterAddress: "Inserisci un indirizzo", - enterCity: "Inserisci una città", - enterZipCode: "Inserisci un codice postale", - enterZipPostalCode: "Inserisci un codice postale", - selectState: "Seleziona una regione/provincia", - selectCountry: "Seleziona un paese", - enterCountry: "Inserisci un paese", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Errore del server", - SESSION_NOT_FOUND: "Sessione non trovata", - CHECKOUT_SESSION_RETRIEVAL_FAILED: - "Errore nel recupero della sessione di checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sessione di checkout non trovata", - CHECKOUT_SESSION_FETCH_ERROR: - "Errore generale nel recupero della sessione di checkout", - DRAFT_ORDER_NOT_FOUND: "Bozza ordine non trovata", - CHECKOUT_SESSION_CREATION_FAILED: - "Errore nella creazione della sessione di checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Dati della sessione creata non trovati", - CHECKOUT_SESSION_CREATION_ERROR: - "Errore generale nella creazione della sessione di checkout", - CHECKOUT_SESSION_UPDATE_FAILED: - "Errore nell'aggiornamento della sessione di checkout", - UPDATED_SESSION_NOT_FOUND: "Sessione aggiornata non trovata", - CHECKOUT_SESSION_UPDATE_ERROR: - "Errore generale nell'aggiornamento della sessione di checkout", - ORDER_API_NOT_FOUND: "Fonte dati API ordini non trovata", - DRAFT_ORDER_RETRIEVAL_FAILED: "Errore nel recupero della bozza ordine", - DATA_SOURCES_NOT_FOUND: "Fonti dati non trovate", - TRANSACTION_API_NOT_FOUND: "Fonte dati API transazioni non trovata", - TRANSACTION_PROCESSING_FAILED: "Errore nell'elaborazione della transazione", - TRANSACTION_CREATION_FAILED: - "Errore nella ricerca o creazione della transazione", - ORDER_OPENING_FAILED: "Errore nell'apertura dell'ordine", - INVALID_FULFILLMENT_LOCATION: "Posizione di evasione non valida", - NO_VALID_PICKUP_LOCATION: "Nessuna posizione di ritiro valida disponibile", - DRAFT_ORDER_FETCH_FAILED: "Errore nel recupero della bozza ordine", - LINE_ITEMS_FETCH_FAILED: "Errore nel recupero degli articoli", - CURRENT_ORDER_FETCH_FAILED: - "Errore nel recupero della bozza ordine corrente", - DRAFT_ORDER_UPDATE_FAILED: "Errore nell'aggiornamento della bozza ordine", - DISCOUNT_APPLICATION_FAILED: "Errore nell'applicazione del buono", - CONTEXT_UNAVAILABLE: "Sessione o fonti dati non disponibili", - SHIPPING_LINES_UPDATE_FAILED: - "Errore nell'aggiornamento delle linee di spedizione", - ORDER_TOTALS_UPDATE_FAILED: - "Errore nell'aggiornamento dei totali dell'ordine", - SHIPPING_METHOD_APPLICATION_FAILED: - "Errore nell'applicazione del metodo di spedizione", - SKU_FETCH_FAILED: "Errore nel recupero degli SKU", - SHIPPING_RATES_CALCULATION_FAILED: - "Errore nel calcolo delle tariffe di spedizione", - SHIPPING_METHOD_NOT_FOUND: "Metodo di spedizione non trovato", - SHIPPING_METHOD_REMOVAL_FAILED: - "Errore nella rimozione del metodo di spedizione", - SHIPPING_ADDRESS_REQUIRED: "Indirizzo di spedizione richiesto", - INVENTORY_VALIDATION_ERROR: "Errore di validazione inventario", - INSUFFICIENT_INVENTORY: "Inventario insufficiente", - INVALID_ORDER_STATUS: "Stato ordine non valido", - TRANSACTION_CREATION_ERROR: "Errore nella creazione della transazione", - TRANSACTION_PROCESSING_ERROR: "Errore nell'elaborazione della transazione", - UNKNOWN_ERROR: "Errore sconosciuto", - FULFILLMENT_CREATION_ERROR: "Errore nella creazione dell'evasione", - TAX_CALCULATION_ERROR: "Errore nel calcolo delle tasse", - ADDRESS_VERIFICATION_ERROR: "Errore nella verifica dell'indirizzo", - ADDRESS_MATCHES_ERROR: "Errore nelle corrispondenze dell'indirizzo", - SHIPPING_CONFLICT_ERROR: "Errore di conflitto nella spedizione", - SHIPPING_ERROR: "Errore generale di spedizione", - PRICE_ADJUSTMENT_CALCULATION_ERROR: - "Errore nel calcolo dell'aggiustamento prezzo", - ORDER_FETCH_ERROR: "Errore nel recupero dell'ordine", - DRAFT_ORDER_UPDATE_ERROR: "Errore nell'aggiornamento della bozza ordine", - DISCOUNT_APPLICATION_ERROR: "Errore nell'applicazione del buono", - DRAFT_ORDER_OPEN_ERROR: "Errore nell'apertura della bozza ordine", - ORDER_UPDATE_ERROR: "Errore nell'aggiornamento dell'ordine", - CATALOG_FETCH_ERROR: "Errore nel recupero del catalogo", - STORE_ID_NOT_FOUND: "ID negozio non trovato", - ORDER_NOT_DRAFT: "L'ordine non è in stato di bozza", - NO_LINE_ITEMS: "Nessun articolo trovato", - BAD_USER_INPUT: "Input utente non valido", - MISSING_SHIPPING_ADDRESS: "Indirizzo di spedizione richiesto", - MISSING_REQUIRED_FIELD: "Campo obbligatorio mancante", - CATALOG_API_ERROR: "Errore del servizio catalogo", - TAX_SERVICE_UNAVAILABLE: "Servizio tasse non disponibile", - SHIPPING_SERVICE_UNAVAILABLE: "Servizio di spedizione non disponibile", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Servizio di aggiustamento prezzi non disponibile", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Errore nel calcolo degli aggiustamenti prezzi", - SERVICE_UNAVAILABLE: "Servizio temporaneamente non disponibile", - RATE_LIMITED: "Troppe richieste, riprovare più tardi", - TIMEOUT: "Timeout della richiesta", - INTERNAL_ERROR: "Errore interno del server", - SHIPPING_POSTAL_CODE_REQUIRED: "Codice postale di spedizione obbligatorio", - SHIPPING_COUNTRY_CODE_REQUIRED: "Codice paese di spedizione obbligatorio", - SHIPPING_METHOD_REQUIRED: "Metodo di spedizione obbligatorio", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Verifica indirizzo di spedizione fallita", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Verifica indirizzo di fatturazione fallita", - }, + general: { + optional: 'opzionale', + notes: 'Note', + quantity: 'Quantità', + free: 'GRATUITO', + closed: 'Chiuso', + apply: 'Applica', + checkoutDisabled: "Il checkout è attualmente disabilitato. Ci scusiamo per l'inconveniente.", + }, + contact: { + title: 'Contatto', + description: '', + email: 'Email', + }, + pickup: { + title: 'Ritiro in Negozio', + description: "Faremo ogni sforzo per rispettare l'orario di ritiro previsto. Gli orari di ritiro effettivi possono variare.", + location: 'Punto di Ritiro', + date: 'Data di Ritiro', + time: 'Orario di Ritiro Preferito', + selectStore: 'Seleziona un punto vendita', + selectDate: 'Seleziona una data', + selectTime: 'Seleziona un orario di ritiro', + storeHours: 'Orari del Negozio', + seeDetails: 'Vedi dettagli', + noTimeSlots: "Nessuna fascia oraria disponibile per la data selezionata. Seleziona un'altra data.", + hoursDisplayed: 'Orari visualizzati nel tuo fuso orario locale.', + storeOperatesIn: 'Il negozio opera nel fuso orario {timezone}.', + asap: 'IL PRIMA POSSIBILE', + hour: 'ora', + hours: 'ore', + minutes: 'minuti', + searchCountry: 'Cerca paese...', + noCountryFound: 'Nessun paese trovato.', + }, + days: { + sunday: 'Domenica', + monday: 'Lunedì', + tuesday: 'Martedì', + wednesday: 'Mercoledì', + thursday: 'Giovedì', + friday: 'Venerdì', + saturday: 'Sabato', + }, + delivery: { + title: 'Consegna', + method: 'Metodo di consegna', + shipping: 'Spedizione', + shipToAddress: 'Spedisci al tuo indirizzo', + localPickup: 'Ritiro in Negozio', + pickupFromStore: 'Ritira dal punto vendita', + }, + tips: { + title: 'Aggiungi una mancia', + noTip: 'Nessuna Mancia', + customAmount: 'Importo Personalizzato', + customTipAmount: 'Importo Mancia Personalizzato', + placeholder: '€0,00', + }, + shipping: { + title: 'Spedizione', + description: 'Indirizzo di spedizione', + method: 'Metodo di spedizione', + noShippingMethodAddress: 'Inserisci il tuo indirizzo per vedere i metodi di spedizione disponibili.', + noShippingMethods: 'Nessun metodo di spedizione trovato.', + phone: 'Numero di Telefono', + country: 'Paese', + selectCountry: 'Seleziona paese', + searchCountry: 'Cerca paese...', + noCountryFound: 'Nessun paese trovato', + firstName: 'Nome', + lastName: 'Cognome', + address1: 'Indirizzo', + address2: 'Appartamento, scala, ecc.', + city: 'Città', + region: 'Regione/Provincia', + postalCode: 'Codice Postale', + notesPlaceholder: 'Note o istruzioni speciali', + addressSuggestion: 'Intendevi', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'Nessun indirizzo di origine spedizione fornito.', + }, + billing: { + title: 'Fatturazione', + description: 'Descrizione fatturazione', + }, + payment: { + title: 'Pagamento', + description: 'Tutti i pagamenti sono sicuri e crittografati.', + billingAddress: { + title: 'Indirizzo di Fatturazione', + description: 'Inserisci il tuo indirizzo di fatturazione.', + useShippingAddress: "Usa l'indirizzo di spedizione come indirizzo di fatturazione", + }, + methods: { + creditCard: 'Carta di Credito o Debito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagamenti offline', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Nessun metodo di pagamento disponibile', + cardNumber: 'Numero della carta', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Data di scadenza (MM / AA)', + securityCode: 'Codice di sicurezza', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nome sulla carta', + payNow: 'Paga ora', + standardShipping: 'Spedizione Standard', + cardDetails: 'Dettagli della carta', + payWithApplePay: 'Paga con Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: "Errore nell'inizializzazione del pagamento.", + orderTotal: 'Totale Ordine', + subtotal: 'Subtotale', + tax: 'Tasse', + shipping: 'Spedizione', + discount: 'Buono', + processingPayment: 'Elaborazione pagamento...', + completingOrder: "Completamento dell'ordine...", + completeOrder: 'Completa il tuo ordine', + freePayment: 'Completa il tuo ordine gratuito', + }, + phone: { + placeholder: '(02) 1234-5678', + searchCountry: 'Cerca paese...', + noCountryFound: 'Nessun paese trovato.', + }, + discounts: { + placeholder: 'Codice buono', + enterCode: 'Inserisci codice buono', + apply: 'Applica', + alreadyApplied: 'Questo codice buono è già stato applicato', + failedToApply: "Errore nell'applicazione del codice buono", + enterCodeValidation: 'Inserisci un codice buono', + }, + totals: { + subtotal: 'Subtotale', + discount: 'Sconto', + shipping: 'Spedizione', + tip: 'Mancia', + estimatedTaxes: 'Tasse stimate', + totalDue: 'Totale Dovuto', + orderSummary: 'Riepilogo Ordine', + itemCount: 'articoli', + noItems: 'Nessun articolo', + }, + lineItems: { + note: 'Nota:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Indirizzo', + suggestions: 'Suggerimenti', + }, + form: { + useFormFieldError: "useFormField deve essere usato all'interno di ", + }, + pagination: { + ariaLabel: 'paginazione', + previousPageAriaLabel: 'Vai alla pagina precedente', + previous: 'Precedente', + nextPageAriaLabel: 'Vai alla pagina successiva', + next: 'Successivo', + morePages: 'Altre pagine', + }, + sidebar: { + useSidebarError: "useSidebar deve essere usato all'interno di un SidebarProvider.", + toggleSidebar: 'Attiva/Disattiva Barra Laterale', + }, + accessibility: { + payWithApplePay: 'Paga con Apple Pay', + applePayLogo: 'Logo Apple Pay', + close: 'Chiudi', + additionalTipOptions: 'Opzioni di mancia aggiuntive', + breadcrumb: 'percorso di navigazione', + more: 'Altro', + previousSlide: 'Diapositiva precedente', + nextSlide: 'Diapositiva successiva', + }, + }, + errors: { + failedToGetAccessToken: 'Errore nel recupero del token di accesso', + invalidEnvironment: 'Ambiente non valido', + noPublicAccessToken: 'Nessun token di accesso pubblico fornito', + noSessionToken: 'Nessun token di sessione o ID fornito', + errorCreatingSession: 'Errore nella creazione della sessione di checkout:', + orderIdRequired: 'ID ordine richiesto', + errorTrackingEvent: "Errore nel tracciamento dell'evento", + errorInTrackingSubscriber: 'Errore nel sottoscrittore di tracciamento', + useTrackingProviderError: "useTracking deve essere usato all'interno di un TrackingProvider", + usePoyntCollectProviderError: "usePoyntCollect deve essere usato all'interno di un PoyntCollectProvider", + useSquareProviderError: "useSquare deve essere usato all'interno di un SquareProvider", + errorProcessingPayment: "Errore nell'elaborazione del pagamento", + stripeConfigMissing: 'Configurazione Stripe mancante. Controlla la tua configurazione.', + paymentSuccessful: 'Pagamento riuscito', + paymentFailed: 'Pagamento fallito', + paypalConfigMissing: 'Configurazione PayPal mancante. Controlla la tua configurazione.', + stripeNotReady: 'Stripe non pronto', + cardElementNotFound: 'CardElement non trovato', + errorProcessingCardPayment: "Errore nell'elaborazione del pagamento con carta.", + errorProcessingExpressPayment: "Errore nell'elaborazione del pagamento express.", + failedToInitializePayment: "Errore nell'inizializzazione del pagamento.", + invalidPhoneNumber: 'numero di telefono non valido', + }, + validation: { + phoneRequired: 'Numero di telefono richiesto', + emailRequired: "Inserisci un'email", + emailInvalid: "Inserisci un'email valida", + phoneTooLong: 'Numero di telefono troppo lungo', + invalidShippingAddress: 'Indirizzo di spedizione non valido', + invalidBillingAddress: 'Indirizzo di fatturazione non valido', + selectPaymentMethod: 'Seleziona un metodo di pagamento', + enterValidBillingPhone: 'Inserisci un numero di telefono di fatturazione valido', + enterValidShippingPhone: 'Inserisci un numero di telefono di spedizione valido', + enterFirstName: 'Inserisci un nome', + enterLastName: 'Inserisci un cognome', + enterAddress: 'Inserisci un indirizzo', + enterCity: 'Inserisci una città', + enterZipCode: 'Inserisci un codice postale', + enterZipPostalCode: 'Inserisci un codice postale', + selectState: 'Seleziona una regione/provincia', + selectCountry: 'Seleziona un paese', + enterCountry: 'Inserisci un paese', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Errore del server', + SESSION_NOT_FOUND: 'Sessione non trovata', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Errore nel recupero della sessione di checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sessione di checkout non trovata', + CHECKOUT_SESSION_FETCH_ERROR: 'Errore generale nel recupero della sessione di checkout', + DRAFT_ORDER_NOT_FOUND: 'Ordine non trovato', + CHECKOUT_SESSION_CREATION_FAILED: 'Errore nella creazione della sessione di checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Dati della sessione creata non trovati', + CHECKOUT_SESSION_CREATION_ERROR: 'Errore generale nella creazione della sessione di checkout', + CHECKOUT_SESSION_UPDATE_FAILED: "Errore nell'aggiornamento della sessione di checkout", + UPDATED_SESSION_NOT_FOUND: 'Sessione aggiornata non trovata', + CHECKOUT_SESSION_UPDATE_ERROR: "Errore generale nell'aggiornamento della sessione di checkout", + ORDER_API_NOT_FOUND: 'Fonte dati API ordini non trovata', + DRAFT_ORDER_RETRIEVAL_FAILED: "Errore nel recupero dell'ordine", + DATA_SOURCES_NOT_FOUND: 'Fonti dati non trovate', + TRANSACTION_API_NOT_FOUND: 'Fonte dati API transazioni non trovata', + TRANSACTION_PROCESSING_FAILED: "Errore nell'elaborazione della transazione", + TRANSACTION_CREATION_FAILED: 'Errore nella ricerca o creazione della transazione', + ORDER_OPENING_FAILED: "Errore nell'apertura dell'ordine", + INVALID_FULFILLMENT_LOCATION: 'Posizione di evasione non valida', + NO_VALID_PICKUP_LOCATION: 'Nessuna posizione di ritiro valida disponibile', + DRAFT_ORDER_FETCH_FAILED: "Errore nel recupero dell'ordine", + LINE_ITEMS_FETCH_FAILED: 'Errore nel recupero degli articoli', + CURRENT_ORDER_FETCH_FAILED: "Errore nel recupero dell'ordine corrente", + DRAFT_ORDER_UPDATE_FAILED: "Errore nell'aggiornamento dell'ordine", + DISCOUNT_APPLICATION_FAILED: "Errore nell'applicazione del buono", + CONTEXT_UNAVAILABLE: 'Sessione o fonti dati non disponibili', + SHIPPING_LINES_UPDATE_FAILED: "Errore nell'aggiornamento delle linee di spedizione", + ORDER_TOTALS_UPDATE_FAILED: "Errore nell'aggiornamento dei totali dell'ordine", + ORDER_TOTAL_CALCULATION_FAILED: "Errore nel calcolo dei totali dell'ordine", + SHIPPING_METHOD_APPLICATION_FAILED: "Errore nell'applicazione del metodo di spedizione", + SKU_FETCH_FAILED: 'Errore nel recupero degli SKU', + SHIPPING_RATES_CALCULATION_FAILED: 'Errore nel calcolo delle tariffe di spedizione', + SHIPPING_METHOD_NOT_FOUND: 'Metodo di spedizione non trovato', + SHIPPING_METHOD_REMOVAL_FAILED: 'Errore nella rimozione del metodo di spedizione', + SHIPPING_ADDRESS_REQUIRED: 'Indirizzo di spedizione richiesto', + INVENTORY_VALIDATION_ERROR: 'Errore di validazione inventario', + INSUFFICIENT_INVENTORY: 'Inventario insufficiente', + INVALID_ORDER_STATUS: 'Stato ordine non valido', + TRANSACTION_CREATION_ERROR: 'Errore nella creazione della transazione', + TRANSACTION_PROCESSING_ERROR: "Errore nell'elaborazione della transazione", + UNKNOWN_ERROR: 'Errore sconosciuto', + FULFILLMENT_CREATION_ERROR: "Errore nella creazione dell'evasione", + TAX_CALCULATION_ERROR: 'Errore nel calcolo delle tasse', + ADDRESS_VERIFICATION_ERROR: "Errore nella verifica dell'indirizzo", + ADDRESS_MATCHES_ERROR: "Errore nelle corrispondenze dell'indirizzo", + SHIPPING_CONFLICT_ERROR: 'Errore di conflitto nella spedizione', + SHIPPING_ERROR: 'Errore generale di spedizione', + PRICE_ADJUSTMENT_CALCULATION_ERROR: "Errore nel calcolo dell'aggiustamento prezzo", + ORDER_FETCH_ERROR: "Errore nel recupero dell'ordine", + DRAFT_ORDER_UPDATE_ERROR: "Errore nell'aggiornamento dell'ordine", + DISCOUNT_APPLICATION_ERROR: "Errore nell'applicazione del buono", + DRAFT_ORDER_OPEN_ERROR: "Errore nell'apertura dell'ordine", + ORDER_UPDATE_ERROR: "Errore nell'aggiornamento dell'ordine", + CATALOG_FETCH_ERROR: 'Errore nel recupero del catalogo', + STORE_ID_NOT_FOUND: 'ID negozio non trovato', + ORDER_NOT_DRAFT: "L'ordine non è in stato valido", + NO_LINE_ITEMS: 'Nessun articolo trovato', + BAD_USER_INPUT: 'Input utente non valido', + MISSING_SHIPPING_ADDRESS: 'Indirizzo di spedizione richiesto', + MISSING_REQUIRED_FIELD: 'Campo obbligatorio mancante', + CATALOG_API_ERROR: 'Errore del servizio catalogo', + TAX_SERVICE_UNAVAILABLE: 'Servizio tasse non disponibile', + SHIPPING_SERVICE_UNAVAILABLE: 'Servizio di spedizione non disponibile', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Servizio di aggiustamento prezzi non disponibile', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Errore nel calcolo degli aggiustamenti prezzi', + SERVICE_UNAVAILABLE: 'Servizio temporaneamente non disponibile', + RATE_LIMITED: 'Troppe richieste, riprovare più tardi', + TIMEOUT: 'Timeout della richiesta', + INTERNAL_ERROR: 'Errore interno del server', + SHIPPING_POSTAL_CODE_REQUIRED: 'Codice postale di spedizione obbligatorio', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Codice paese di spedizione obbligatorio', + SHIPPING_METHOD_REQUIRED: 'Metodo di spedizione obbligatorio', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Verifica indirizzo di spedizione fallita', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Verifica indirizzo di fatturazione fallita', + MISSING_SHIPPING_INFO: "Impossibile applicare l'indirizzo o il metodo di spedizione", + DEPENDENCY_ERROR: 'Non riusciamo a elaborare il tuo ordine in questo momento. Aspetta un momento e riprova', + }, }; diff --git a/packages/localizations/src/ptBr.ts b/packages/localizations/src/ptBr.ts index 6b40cde8..9af3c737 100644 --- a/packages/localizations/src/ptBr.ts +++ b/packages/localizations/src/ptBr.ts @@ -1,321 +1,317 @@ export const ptBr = { - general: { - optional: "opcional", - notes: "Observações", - quantity: "Quantidade", - free: "GRÁTIS", - closed: "Fechado", - apply: "Aplicar", - checkoutDisabled: - "O checkout está temporariamente indisponível. Pedimos desculpas pelo inconveniente.", - }, - contact: { - title: "Contato", - description: "", - email: "E-mail", - }, - pickup: { - title: "Retirada no Local", - description: - "Faremos todos os esforços para atender o horário de retirada esperado. Os horários reais de retirada podem variar.", - location: "Local de Retirada", - date: "Data de Retirada", - time: "Horário Preferido de Retirada", - selectStore: "Selecione uma loja", - selectDate: "Selecione uma data", - selectTime: "Selecione um horário de retirada", - storeHours: "Horário de Funcionamento", - seeDetails: "Ver detalhes", - noTimeSlots: - "Nenhum horário disponível para a data selecionada. Por favor, selecione outra data.", - hoursDisplayed: "Horários exibidos no seu fuso horário local.", - storeOperatesIn: "A loja funciona no fuso horário {timezone}.", - asap: "O MAIS RÁPIDO POSSÍVEL", - hour: "hora", - hours: "horas", - minutes: "minutos", - searchCountry: "Buscar país...", - noCountryFound: "Nenhum país encontrado.", - }, - days: { - sunday: "Domingo", - monday: "Segunda-feira", - tuesday: "Terça-feira", - wednesday: "Quarta-feira", - thursday: "Quinta-feira", - friday: "Sexta-feira", - saturday: "Sábado", - }, - delivery: { - title: "Entrega", - method: "Método de entrega", - shipping: "Envio", - shipToAddress: "Enviar para seu endereço", - localPickup: "Retirada no Local", - pickupFromStore: "Retirar na loja", - }, - tips: { - title: "Adicionar gorjeta", - noTip: "Sem Gorjeta", - customAmount: "Valor Personalizado", - customTipAmount: "Valor da Gorjeta Personalizada", - placeholder: "R$ 0,00", - }, - shipping: { - title: "Envio", - description: "Endereço de entrega", - method: "Método de envio", - noShippingMethodAddress: - "Digite seu endereço para ver os métodos de envio disponíveis.", - noShippingMethods: "Nenhum método de envio encontrado.", - phone: "Número de Telefone", - country: "País", - selectCountry: "Selecionar país", - searchCountry: "Buscar país...", - noCountryFound: "Nenhum país encontrado", - firstName: "Nome", - lastName: "Sobrenome", - address1: "Endereço", - address2: "Complemento (opcional)", - city: "Cidade", - region: "Estado", - postalCode: "CEP", - notesPlaceholder: "Observações ou instruções especiais", - addressSuggestion: "Você quis dizer", - addressSuggestionEnd: "?", - noShippingOriginAddress: "Endereço de origem de envio não fornecido.", - }, - billing: { - title: "Cobrança", - description: "Descrição da cobrança", - }, - payment: { - title: "Pagamento", - description: "Todos os pagamentos são seguros e criptografados.", - billingAddress: { - title: "Endereço de Cobrança", - description: "Digite seu endereço de cobrança.", - useShippingAddress: "Usar endereço de entrega como endereço de cobrança", - }, - methods: { - creditCard: "Cartão de Crédito ou Débito", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Pagamentos offline", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Nenhum método de pagamento disponível", - cardNumber: "Número do cartão", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Data de validade (MM / AA)", - securityCode: "Código de segurança", - cvvPlaceholder: "CVV", - nameOnCard: "Nome no cartão", - payNow: "Pagar agora", - standardShipping: "Envio Padrão", - cardDetails: "Dados do cartão", - payWithApplePay: "Pagar com Apple Pay", - expirationDatePlaceholder: "MM / AA", - failedToInitializePayment: "Falha ao inicializar pagamento.", - orderTotal: "Total do Pedido", - subtotal: "Subtotal", - tax: "Impostos", - shipping: "Envio", - discount: "Cupom", - processingPayment: "Processando pagamento...", - completingOrder: "Concluindo pedido...", - freePayment: "Complete seu pedido gratuito", - }, - phone: { - placeholder: "(11) 99999-9999", - searchCountry: "Buscar país...", - noCountryFound: "Nenhum país encontrado.", - }, - discounts: { - placeholder: "Código de cupom", - enterCode: "Digite o código de cupom", - apply: "Aplicar", - alreadyApplied: "Este código de cupom já foi aplicado", - failedToApply: "Falha ao aplicar código de cupom", - enterCodeValidation: "Por favor, digite um código de cupom", - }, - totals: { - subtotal: "Subtotal", - discount: "Desconto", - shipping: "Envio", - tip: "Gorjeta", - estimatedTaxes: "Impostos estimados", - totalDue: "Total a Pagar", - orderSummary: "Resumo do Pedido", - itemCount: "itens", - noItems: "Nenhum item", - }, - lineItems: { - note: "Observação:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Endereço", - suggestions: "Sugestões", - }, - form: { - useFormFieldError: "useFormField deve ser usado dentro de ", - }, - pagination: { - ariaLabel: "paginação", - previousPageAriaLabel: "Ir para página anterior", - previous: "Anterior", - nextPageAriaLabel: "Ir para próxima página", - next: "Próximo", - morePages: "Mais páginas", - }, - sidebar: { - useSidebarError: - "useSidebar deve ser usado dentro de um SidebarProvider.", - toggleSidebar: "Alternar Barra Lateral", - }, - accessibility: { - payWithApplePay: "Pagar com Apple Pay", - applePayLogo: "Logo do Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Falha ao obter token de acesso", - invalidEnvironment: "Ambiente inválido", - noPublicAccessToken: "Nenhum token de acesso público fornecido", - noSessionToken: "Nenhum token de sessão ou ID fornecido", - errorCreatingSession: "Erro ao criar sessão de checkout:", - orderIdRequired: "ID do pedido é obrigatório", - errorTrackingEvent: "Erro ao rastrear evento", - errorInTrackingSubscriber: "Erro no assinante de rastreamento", - useTrackingProviderError: - "useTracking deve ser usado dentro de um TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect deve ser usado dentro de um PoyntCollectProvider", - useSquareProviderError: - "useSquare deve ser usado dentro de um SquareProvider", - errorProcessingPayment: "Erro ao processar pagamento", - stripeConfigMissing: - "Configuração do Stripe está faltando. Por favor, verifique sua configuração.", - paymentSuccessful: "Pagamento realizado com sucesso", - paymentFailed: "Falha no pagamento", - paypalConfigMissing: - "Configuração do PayPal está faltando. Por favor, verifique sua configuração.", - stripeNotReady: "Stripe não está pronto", - cardElementNotFound: "CardElement não encontrado", - errorProcessingCardPayment: "Erro ao processar pagamento com cartão.", - errorProcessingExpressPayment: "Erro ao processar pagamento expresso.", - failedToInitializePayment: "Falha ao inicializar pagamento.", - invalidPhoneNumber: "número de telefone inválido", - }, - validation: { - phoneRequired: "Número de telefone é obrigatório", - emailRequired: "Digite um e-mail", - emailInvalid: "Digite um e-mail válido", - phoneTooLong: "Número de telefone muito longo", - invalidShippingAddress: "Endereço de entrega inválido", - invalidBillingAddress: "Endereço de cobrança inválido", - selectPaymentMethod: "Selecione um método de pagamento", - enterValidBillingPhone: "Digite um número de telefone de cobrança válido", - enterValidShippingPhone: "Digite um número de telefone de entrega válido", - enterFirstName: "Digite o nome", - enterLastName: "Digite o sobrenome", - enterAddress: "Digite um endereço", - enterCity: "Digite uma cidade", - enterZipCode: "Digite um CEP", - enterZipPostalCode: "Digite um CEP", - selectState: "Selecione um estado/província", - selectCountry: "Selecione um país", - enterCountry: "Digite um país", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Erro no servidor", - SESSION_NOT_FOUND: "Sessão não encontrada", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Falha ao recuperar sessão de checkout", - CHECKOUT_SESSION_NOT_FOUND: "Sessão de checkout não encontrada", - CHECKOUT_SESSION_FETCH_ERROR: "Erro geral ao buscar sessão de checkout", - DRAFT_ORDER_NOT_FOUND: "Rascunho do pedido não encontrado", - CHECKOUT_SESSION_CREATION_FAILED: "Falha ao criar sessão de checkout", - CREATED_SESSION_DATA_NOT_FOUND: "Dados da sessão criada não encontrados", - CHECKOUT_SESSION_CREATION_ERROR: "Erro geral ao criar sessão de checkout", - CHECKOUT_SESSION_UPDATE_FAILED: "Falha ao atualizar sessão de checkout", - UPDATED_SESSION_NOT_FOUND: "Sessão atualizada não encontrada", - CHECKOUT_SESSION_UPDATE_ERROR: "Erro geral ao atualizar sessão de checkout", - ORDER_API_NOT_FOUND: "Fonte de dados da API de pedidos não encontrada", - DRAFT_ORDER_RETRIEVAL_FAILED: "Falha ao recuperar rascunho do pedido", - DATA_SOURCES_NOT_FOUND: "Fontes de dados não encontradas", - TRANSACTION_API_NOT_FOUND: - "Fonte de dados da API de transação não encontrada", - TRANSACTION_PROCESSING_FAILED: "Falha ao processar transação", - TRANSACTION_CREATION_FAILED: "Falha ao encontrar ou criar transação", - ORDER_OPENING_FAILED: "Falha ao abrir pedido", - INVALID_FULFILLMENT_LOCATION: "Local de atendimento inválido", - NO_VALID_PICKUP_LOCATION: "Nenhum local de retirada válido disponível", - DRAFT_ORDER_FETCH_FAILED: "Falha ao buscar rascunho do pedido", - LINE_ITEMS_FETCH_FAILED: "Falha ao buscar itens de linha", - CURRENT_ORDER_FETCH_FAILED: "Falha ao buscar rascunho do pedido atual", - DRAFT_ORDER_UPDATE_FAILED: "Falha ao atualizar rascunho do pedido", - DISCOUNT_APPLICATION_FAILED: "Falha ao aplicar cupom", - CONTEXT_UNAVAILABLE: "Sessão ou fontes de dados não disponíveis", - SHIPPING_LINES_UPDATE_FAILED: "Falha ao atualizar linhas de envio", - ORDER_TOTALS_UPDATE_FAILED: "Falha ao atualizar totais do pedido", - SHIPPING_METHOD_APPLICATION_FAILED: "Falha ao aplicar método de envio", - SKU_FETCH_FAILED: "Falha ao buscar SKUs", - SHIPPING_RATES_CALCULATION_FAILED: "Falha ao calcular taxas de envio", - SHIPPING_METHOD_NOT_FOUND: "Método de envio não encontrado", - SHIPPING_METHOD_REMOVAL_FAILED: "Falha ao remover método de envio", - SHIPPING_ADDRESS_REQUIRED: "Endereço de envio obrigatório", - INVENTORY_VALIDATION_ERROR: "Erro de validação de estoque", - INSUFFICIENT_INVENTORY: "Estoque insuficiente", - INVALID_ORDER_STATUS: "Status do pedido inválido", - TRANSACTION_CREATION_ERROR: "Erro na criação da transação", - TRANSACTION_PROCESSING_ERROR: "Erro no processamento da transação", - UNKNOWN_ERROR: "Erro desconhecido", - FULFILLMENT_CREATION_ERROR: "Erro na criação do atendimento", - TAX_CALCULATION_ERROR: "Erro no cálculo de impostos", - ADDRESS_VERIFICATION_ERROR: "Erro na verificação de endereço", - ADDRESS_MATCHES_ERROR: "Erro na correspondência de endereços", - SHIPPING_CONFLICT_ERROR: "Erro de conflito de envio", - SHIPPING_ERROR: "Erro geral de envio", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Erro no cálculo de ajuste de preço", - ORDER_FETCH_ERROR: "Erro ao buscar pedido", - DRAFT_ORDER_UPDATE_ERROR: "Erro ao atualizar rascunho do pedido", - DISCOUNT_APPLICATION_ERROR: "Erro na aplicação de cupom", - DRAFT_ORDER_OPEN_ERROR: "Erro ao abrir rascunho do pedido", - ORDER_UPDATE_ERROR: "Erro ao atualizar pedido", - CATALOG_FETCH_ERROR: "Erro ao buscar catálogo", - STORE_ID_NOT_FOUND: "ID da loja não encontrado", - ORDER_NOT_DRAFT: "O pedido não está em status de rascunho", - NO_LINE_ITEMS: "Nenhum item encontrado", - BAD_USER_INPUT: "Entrada de usuário inválida", - MISSING_SHIPPING_ADDRESS: "Endereço de entrega obrigatório", - MISSING_REQUIRED_FIELD: "Campo obrigatório ausente", - CATALOG_API_ERROR: "Erro do serviço de catálogo", - TAX_SERVICE_UNAVAILABLE: "Serviço de impostos indisponível", - SHIPPING_SERVICE_UNAVAILABLE: "Serviço de envio indisponível", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Serviço de ajustes de preço indisponível", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "Falha no cálculo de ajustes de preço", - SERVICE_UNAVAILABLE: "Serviço temporariamente indisponível", - RATE_LIMITED: "Muitas solicitações, tente novamente mais tarde", - TIMEOUT: "Tempo limite da solicitação esgotado", - INTERNAL_ERROR: "Erro interno do servidor", - SHIPPING_POSTAL_CODE_REQUIRED: "Código postal de envio é obrigatório", - SHIPPING_COUNTRY_CODE_REQUIRED: "Código do país de envio é obrigatório", - SHIPPING_METHOD_REQUIRED: "Método de envio é obrigatório", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "Falha na verificação do endereço de envio", - BILLING_ADDRESS_VERIFICATION_FAILED: - "Falha na verificação do endereço de cobrança", - }, + general: { + optional: 'opcional', + notes: 'Observações', + quantity: 'Quantidade', + free: 'GRÁTIS', + closed: 'Fechado', + apply: 'Aplicar', + checkoutDisabled: 'O checkout está temporariamente indisponível. Pedimos desculpas pelo inconveniente.', + }, + contact: { + title: 'Contato', + description: '', + email: 'E-mail', + }, + pickup: { + title: 'Retirada no Local', + description: + 'Faremos todos os esforços para atender o horário de retirada esperado. Os horários reais de retirada podem variar.', + location: 'Local de Retirada', + date: 'Data de Retirada', + time: 'Horário Preferido de Retirada', + selectStore: 'Selecione uma loja', + selectDate: 'Selecione uma data', + selectTime: 'Selecione um horário de retirada', + storeHours: 'Horário de Funcionamento', + seeDetails: 'Ver detalhes', + noTimeSlots: 'Nenhum horário disponível para a data selecionada. Por favor, selecione outra data.', + hoursDisplayed: 'Horários exibidos no seu fuso horário local.', + storeOperatesIn: 'A loja funciona no fuso horário {timezone}.', + asap: 'O MAIS RÁPIDO POSSÍVEL', + hour: 'hora', + hours: 'horas', + minutes: 'minutos', + searchCountry: 'Buscar país...', + noCountryFound: 'Nenhum país encontrado.', + }, + days: { + sunday: 'Domingo', + monday: 'Segunda-feira', + tuesday: 'Terça-feira', + wednesday: 'Quarta-feira', + thursday: 'Quinta-feira', + friday: 'Sexta-feira', + saturday: 'Sábado', + }, + delivery: { + title: 'Entrega', + method: 'Método de entrega', + shipping: 'Envio', + shipToAddress: 'Enviar para seu endereço', + localPickup: 'Retirada no Local', + pickupFromStore: 'Retirar na loja', + }, + tips: { + title: 'Adicionar gorjeta', + noTip: 'Sem Gorjeta', + customAmount: 'Valor Personalizado', + customTipAmount: 'Valor da Gorjeta Personalizada', + placeholder: 'R$ 0,00', + }, + shipping: { + title: 'Envio', + description: 'Endereço de entrega', + method: 'Método de envio', + noShippingMethodAddress: 'Digite seu endereço para ver os métodos de envio disponíveis.', + noShippingMethods: 'Nenhum método de envio encontrado.', + phone: 'Número de Telefone', + country: 'País', + selectCountry: 'Selecionar país', + searchCountry: 'Buscar país...', + noCountryFound: 'Nenhum país encontrado', + firstName: 'Nome', + lastName: 'Sobrenome', + address1: 'Endereço', + address2: 'Complemento (opcional)', + city: 'Cidade', + region: 'Estado', + postalCode: 'CEP', + notesPlaceholder: 'Observações ou instruções especiais', + addressSuggestion: 'Você quis dizer', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'Endereço de origem de envio não fornecido.', + }, + billing: { + title: 'Cobrança', + description: 'Descrição da cobrança', + }, + payment: { + title: 'Pagamento', + description: 'Todos os pagamentos são seguros e criptografados.', + billingAddress: { + title: 'Endereço de Cobrança', + description: 'Digite seu endereço de cobrança.', + useShippingAddress: 'Usar endereço de entrega como endereço de cobrança', + }, + methods: { + creditCard: 'Cartão de Crédito ou Débito', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Pagamentos offline', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Nenhum método de pagamento disponível', + cardNumber: 'Número do cartão', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Data de validade (MM / AA)', + securityCode: 'Código de segurança', + cvvPlaceholder: 'CVV', + nameOnCard: 'Nome no cartão', + payNow: 'Pagar agora', + standardShipping: 'Envio Padrão', + cardDetails: 'Dados do cartão', + payWithApplePay: 'Pagar com Apple Pay', + expirationDatePlaceholder: 'MM / AA', + failedToInitializePayment: 'Falha ao inicializar pagamento.', + orderTotal: 'Total do Pedido', + subtotal: 'Subtotal', + tax: 'Impostos', + shipping: 'Envio', + discount: 'Cupom', + processingPayment: 'Processando pagamento...', + completingOrder: 'Concluindo pedido...', + completeOrder: 'Concluir seu pedido', + freePayment: 'Complete seu pedido gratuito', + }, + phone: { + placeholder: '(11) 99999-9999', + searchCountry: 'Buscar país...', + noCountryFound: 'Nenhum país encontrado.', + }, + discounts: { + placeholder: 'Código de cupom', + enterCode: 'Digite o código de cupom', + apply: 'Aplicar', + alreadyApplied: 'Este código de cupom já foi aplicado', + failedToApply: 'Falha ao aplicar código de cupom', + enterCodeValidation: 'Por favor, digite um código de cupom', + }, + totals: { + subtotal: 'Subtotal', + discount: 'Desconto', + shipping: 'Envio', + tip: 'Gorjeta', + estimatedTaxes: 'Impostos estimados', + totalDue: 'Total a Pagar', + orderSummary: 'Resumo do Pedido', + itemCount: 'itens', + noItems: 'Nenhum item', + }, + lineItems: { + note: 'Observação:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Endereço', + suggestions: 'Sugestões', + }, + form: { + useFormFieldError: 'useFormField deve ser usado dentro de ', + }, + pagination: { + ariaLabel: 'paginação', + previousPageAriaLabel: 'Ir para página anterior', + previous: 'Anterior', + nextPageAriaLabel: 'Ir para próxima página', + next: 'Próximo', + morePages: 'Mais páginas', + }, + sidebar: { + useSidebarError: 'useSidebar deve ser usado dentro de um SidebarProvider.', + toggleSidebar: 'Alternar Barra Lateral', + }, + accessibility: { + payWithApplePay: 'Pagar com Apple Pay', + applePayLogo: 'Logo do Apple Pay', + close: 'Fechar', + additionalTipOptions: 'Opções de gorjeta adicionais', + breadcrumb: 'navegação estrutural', + more: 'Mais', + previousSlide: 'Slide anterior', + nextSlide: 'Próximo slide', + }, + }, + errors: { + failedToGetAccessToken: 'Falha ao obter token de acesso', + invalidEnvironment: 'Ambiente inválido', + noPublicAccessToken: 'Nenhum token de acesso público fornecido', + noSessionToken: 'Nenhum token de sessão ou ID fornecido', + errorCreatingSession: 'Erro ao criar sessão de checkout:', + orderIdRequired: 'ID do pedido é obrigatório', + errorTrackingEvent: 'Erro ao rastrear evento', + errorInTrackingSubscriber: 'Erro no assinante de rastreamento', + useTrackingProviderError: 'useTracking deve ser usado dentro de um TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect deve ser usado dentro de um PoyntCollectProvider', + useSquareProviderError: 'useSquare deve ser usado dentro de um SquareProvider', + errorProcessingPayment: 'Erro ao processar pagamento', + stripeConfigMissing: 'Configuração do Stripe está faltando. Por favor, verifique sua configuração.', + paymentSuccessful: 'Pagamento realizado com sucesso', + paymentFailed: 'Falha no pagamento', + paypalConfigMissing: 'Configuração do PayPal está faltando. Por favor, verifique sua configuração.', + stripeNotReady: 'Stripe não está pronto', + cardElementNotFound: 'CardElement não encontrado', + errorProcessingCardPayment: 'Erro ao processar pagamento com cartão.', + errorProcessingExpressPayment: 'Erro ao processar pagamento expresso.', + failedToInitializePayment: 'Falha ao inicializar pagamento.', + invalidPhoneNumber: 'número de telefone inválido', + }, + validation: { + phoneRequired: 'Número de telefone é obrigatório', + emailRequired: 'Digite um e-mail', + emailInvalid: 'Digite um e-mail válido', + phoneTooLong: 'Número de telefone muito longo', + invalidShippingAddress: 'Endereço de entrega inválido', + invalidBillingAddress: 'Endereço de cobrança inválido', + selectPaymentMethod: 'Selecione um método de pagamento', + enterValidBillingPhone: 'Digite um número de telefone de cobrança válido', + enterValidShippingPhone: 'Digite um número de telefone de entrega válido', + enterFirstName: 'Digite o nome', + enterLastName: 'Digite o sobrenome', + enterAddress: 'Digite um endereço', + enterCity: 'Digite uma cidade', + enterZipCode: 'Digite um CEP', + enterZipPostalCode: 'Digite um CEP', + selectState: 'Selecione um estado/província', + selectCountry: 'Selecione um país', + enterCountry: 'Digite um país', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Erro no servidor', + SESSION_NOT_FOUND: 'Sessão não encontrada', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Falha ao recuperar sessão de checkout', + CHECKOUT_SESSION_NOT_FOUND: 'Sessão de checkout não encontrada', + CHECKOUT_SESSION_FETCH_ERROR: 'Erro geral ao buscar sessão de checkout', + DRAFT_ORDER_NOT_FOUND: 'Pedido não encontrado', + CHECKOUT_SESSION_CREATION_FAILED: 'Falha ao criar sessão de checkout', + CREATED_SESSION_DATA_NOT_FOUND: 'Dados da sessão criada não encontrados', + CHECKOUT_SESSION_CREATION_ERROR: 'Erro geral ao criar sessão de checkout', + CHECKOUT_SESSION_UPDATE_FAILED: 'Falha ao atualizar sessão de checkout', + UPDATED_SESSION_NOT_FOUND: 'Sessão atualizada não encontrada', + CHECKOUT_SESSION_UPDATE_ERROR: 'Erro geral ao atualizar sessão de checkout', + ORDER_API_NOT_FOUND: 'Fonte de dados da API de pedidos não encontrada', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Falha ao recuperar pedido', + DATA_SOURCES_NOT_FOUND: 'Fontes de dados não encontradas', + TRANSACTION_API_NOT_FOUND: 'Fonte de dados da API de transação não encontrada', + TRANSACTION_PROCESSING_FAILED: 'Falha ao processar transação', + TRANSACTION_CREATION_FAILED: 'Falha ao encontrar ou criar transação', + ORDER_OPENING_FAILED: 'Falha ao abrir pedido', + INVALID_FULFILLMENT_LOCATION: 'Local de atendimento inválido', + NO_VALID_PICKUP_LOCATION: 'Nenhum local de retirada válido disponível', + DRAFT_ORDER_FETCH_FAILED: 'Falha ao buscar pedido', + LINE_ITEMS_FETCH_FAILED: 'Falha ao buscar itens de linha', + CURRENT_ORDER_FETCH_FAILED: 'Falha ao buscar pedido atual', + DRAFT_ORDER_UPDATE_FAILED: 'Falha ao atualizar pedido', + DISCOUNT_APPLICATION_FAILED: 'Falha ao aplicar cupom', + CONTEXT_UNAVAILABLE: 'Sessão ou fontes de dados não disponíveis', + SHIPPING_LINES_UPDATE_FAILED: 'Falha ao atualizar linhas de envio', + ORDER_TOTALS_UPDATE_FAILED: 'Falha ao atualizar totais do pedido', + ORDER_TOTAL_CALCULATION_FAILED: 'Falha ao calcular totais do pedido', + SHIPPING_METHOD_APPLICATION_FAILED: 'Falha ao aplicar método de envio', + SKU_FETCH_FAILED: 'Falha ao buscar SKUs', + SHIPPING_RATES_CALCULATION_FAILED: 'Falha ao calcular taxas de envio', + SHIPPING_METHOD_NOT_FOUND: 'Método de envio não encontrado', + SHIPPING_METHOD_REMOVAL_FAILED: 'Falha ao remover método de envio', + SHIPPING_ADDRESS_REQUIRED: 'Endereço de envio obrigatório', + INVENTORY_VALIDATION_ERROR: 'Erro de validação de estoque', + INSUFFICIENT_INVENTORY: 'Estoque insuficiente', + INVALID_ORDER_STATUS: 'Status do pedido inválido', + TRANSACTION_CREATION_ERROR: 'Erro na criação da transação', + TRANSACTION_PROCESSING_ERROR: 'Erro no processamento da transação', + UNKNOWN_ERROR: 'Erro desconhecido', + FULFILLMENT_CREATION_ERROR: 'Erro na criação do atendimento', + TAX_CALCULATION_ERROR: 'Erro no cálculo de impostos', + ADDRESS_VERIFICATION_ERROR: 'Erro na verificação de endereço', + ADDRESS_MATCHES_ERROR: 'Erro na correspondência de endereços', + SHIPPING_CONFLICT_ERROR: 'Erro de conflito de envio', + SHIPPING_ERROR: 'Erro geral de envio', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Erro no cálculo de ajuste de preço', + ORDER_FETCH_ERROR: 'Erro ao buscar pedido', + DRAFT_ORDER_UPDATE_ERROR: 'Erro ao atualizar pedido', + DISCOUNT_APPLICATION_ERROR: 'Erro na aplicação de cupom', + DRAFT_ORDER_OPEN_ERROR: 'Erro ao abrir pedido', + ORDER_UPDATE_ERROR: 'Erro ao atualizar pedido', + CATALOG_FETCH_ERROR: 'Erro ao buscar catálogo', + STORE_ID_NOT_FOUND: 'ID da loja não encontrado', + ORDER_NOT_DRAFT: 'O pedido não está em status válido', + NO_LINE_ITEMS: 'Nenhum item encontrado', + BAD_USER_INPUT: 'Entrada de usuário inválida', + MISSING_SHIPPING_ADDRESS: 'Endereço de entrega obrigatório', + MISSING_REQUIRED_FIELD: 'Campo obrigatório ausente', + CATALOG_API_ERROR: 'Erro do serviço de catálogo', + TAX_SERVICE_UNAVAILABLE: 'Serviço de impostos indisponível', + SHIPPING_SERVICE_UNAVAILABLE: 'Serviço de envio indisponível', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Serviço de ajustes de preço indisponível', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Falha no cálculo de ajustes de preço', + SERVICE_UNAVAILABLE: 'Serviço temporariamente indisponível', + RATE_LIMITED: 'Muitas solicitações, tente novamente mais tarde', + TIMEOUT: 'Tempo limite da solicitação esgotado', + INTERNAL_ERROR: 'Erro interno do servidor', + SHIPPING_POSTAL_CODE_REQUIRED: 'Código postal de envio é obrigatório', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Código do país de envio é obrigatório', + SHIPPING_METHOD_REQUIRED: 'Método de envio é obrigatório', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Falha na verificação do endereço de envio', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Falha na verificação do endereço de cobrança', + MISSING_SHIPPING_INFO: 'Falha ao aplicar endereço ou método de entrega', + DEPENDENCY_ERROR: 'Não conseguimos processar seu pedido no momento. Aguarde um momento e tente novamente', + }, }; diff --git a/packages/localizations/src/qaPs.ts b/packages/localizations/src/qaPs.ts index 986279a7..ad325c0f 100644 --- a/packages/localizations/src/qaPs.ts +++ b/packages/localizations/src/qaPs.ts @@ -1,325 +1,317 @@ export const qaPs = { - general: { - optional: "[óþťîöñâl]", - notes: "[Ñöťéš]", - quantity: "[Qüâñťîťÿ]", - free: "[FRËË]", - closed: "[Çlöšéd]", - apply: "[Âþþlÿ]", - checkoutDisabled: - "[Çhéçkøüť îš çürrëñťlÿ dîšâblëd. Wé âþöløgîžé før ťhé îñçöñvéñîéñçé ând áppreciate your patience.]", - }, - contact: { - title: "[Çöñťâçť]", - description: "", - email: "[Émâîl Âddrëšš]", - }, - pickup: { - title: "[Löçâl Þîçküþ Šërvîçë]", - description: - "[Âll éffôrťš wîll bé mâdé ťö mëëť ÿöür ëxþëçťëd þîçküþ ťîmé. Âçťüâl þîçküþ ťîmëš mâÿ vârÿ dëþëñdîñg öñ çîrçümšťâñçëš.]", - location: "[Þîçküþ Löçâťîöñ Âddrëšš]", - date: "[Þîçküþ Dâťé]", - time: "[Þrëfërrëd Þîçküþ Ťîmé]", - selectStore: "[Šëlëçť â šťörë löçâťîöñ frôm ťhé lîšť]", - selectDate: "[Šëlëçť â dâťé frôm çâlëñdâr]", - selectTime: "[Šëlëçť â þîçküþ ťîmé šlöť]", - storeHours: "[Šťörë Hôürš Îñförmâťîöñ]", - seeDetails: "[Šëë mörë dëťâîlš]", - noTimeSlots: - "[Ñö âvâîlâblë ťîmé šlöťš fôr ťhé šëlëçťëd dâťé. Þlëâšé šëlëçť âñöťhër dâťé ôr çöñšîdër öťhër öþťîöñš.]", - hoursDisplayed: "[Hôürš dîšþlâÿëd îñ ÿöür löçâl ťîmëžöñë fôr çöñvëñîëñçë.]", - storeOperatesIn: "[Šťörë öþërâťëš îñ {timezone} ťîmëžöñë förmâť.]", - asap: "[ŠÂ̈P]", - hour: "[hôür]", - hours: "[hôürš]", - minutes: "[mîñüťëš]", - searchCountry: "[Šëârçh çöüñťrÿ bÿ ñâmë...]", - noCountryFound: "[Ñö çöüñťrÿ föüñd îñ šëârçh.]", - }, - days: { - sunday: "[Šüñdâÿ]", - monday: "[Möñdâÿ]", - tuesday: "[Ťüëšdâÿ]", - wednesday: "[Wëdñëšdâÿ]", - thursday: "[Ťhürškâÿ]", - friday: "[Frîdâÿ]", - saturday: "[Šâťürdâÿ]", - }, - delivery: { - title: "[Délîvërÿ Mëťhödš]", - method: "[Délîvërÿ mëťhöd šëlëçťîöñ]", - shipping: "[Šhîþþîñg Öþťîöñš]", - shipToAddress: "[Šhîþ ťö ÿöür šþëçîfîëd âddrëšš]", - localPickup: "[Löçâl Þîçküþ Šërvîçë]", - pickupFromStore: "[Þîçk üþ frôm šťörë löçâťîöñ]", - }, - tips: { - title: "[Âdd â ťîþ fôr šërvîçë]", - noTip: "[Ñö Ťîþ Âddëd]", - customAmount: "[Çüšťöm Âmöüñť Ëñťrÿ]", - customTipAmount: "[Çüšťöm Ťîþ Âmöüñť Vâlüë]", - placeholder: "[$0.00]", - }, - shipping: { - title: "[Šhîþþîñg Îñförmâťîöñ]", - description: "[Šhîþþîñg âddrëšš dëťâîlš]", - method: "[Šhîþþîñg mëťhöd šëlëçťîöñ]", - noShippingMethodAddress: - "[Ëñťër ÿöür âddrëšš ťö šëë âvâîlâblë šhîþþîñg mëťhödš fôr ÿöür löçâťîöñ.]", - noShippingMethods: "[Ñö šhîþþîñg mëťhödš föüñd fôr ţhîš löçâţîöñ.]", - phone: "[Þhöñë Ñümkër Îñförmâťîöñ]", - country: "[Çöüñţrÿ Šëlëçťîöñ]", - selectCountry: "[Šëlëçť çöüñţrÿ frôm lîšť]", - searchCountry: "[Šëârçh çöüñţrÿ bÿ ñâmë...]", - noCountryFound: "[Ñö çöüñţrÿ föüñd îñ šëârçh]", - firstName: "[Fîršť Ñâmë Îñþüť]", - lastName: "[Lâšť Ñâmë Îñþüť]", - address1: "[Âddrëšš Lîñë Önë]", - address2: "[Âþârţmëñť, šüîţë, ëţç. (öþţîöñâl îñþüť)]", - city: "[Çîţÿ Ñâmë]", - region: "[Šţâţë/Þrövîñçë Šëlëçţîöñ]", - postalCode: "[Þöšţâl Çödë Îñþüť]", - notesPlaceholder: "[Ñöţëš ör šþëçîâl îñšţrüçţîöñš fôr délîvërÿ]", - addressSuggestion: "[Dîd ÿöü mëâñ ţhîš âddrëšš]", - addressSuggestionEnd: "[?]", - noShippingOriginAddress: - "[Ñö šhîþþîñg örîgîñ âddrëšš þrövîdëd bÿ mërçhâñť.]", - }, - billing: { - title: "[Bîllîñg Îñförmâţîöñ]", - description: "[Bîllîñg îñförmâţîöñ dëšçrîþţîöñ]", - }, - payment: { - title: "[Þâÿmëñţ Îñförmâţîöñ]", - description: "[Âll þâÿmëñţš ârë šëçürë ând ëñçrÿþţëd för ÿöür šâfëţÿ.]", - billingAddress: { - title: "[Bîllîñg Âddrëšš Îñförmâţîöñ]", - description: "[Ëñţër ÿöür bîllîñg âddrëšš dëţâîlš.]", - useShippingAddress: "[Üšë šhîþþîñg âddrëšš âš bîllîñg âddrëšš]", - }, - methods: { - creditCard: "[Çrëdîţ ör Dëbîţ Çârd Þâÿmëñţ]", - paypal: "[ÞâÿÞâl Þâÿmëñţ Šërvîçë]", - applePay: "[Âþþlë Þâÿ Þâÿmëñţ]", - googlePay: "[Göögië Þâÿ Þâÿmëñţ]", - paze: "[Þâžë Þâÿmëñţ Šërvîçë]", - offline: "[Öfflîñë þâÿmëñţ mëţhödš]", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "[Ñö þâÿmëñţ mëţhödš âvâîlâblë âţ ţhîš ţîmë]", - cardNumber: "[Çârd ñümkër îñþüţ fîëld]", - cardNumberPlaceholder: "[1234 1234 1234 1234]", - expirationDate: "[Ëxþîrâţîöñ dâţë (MM / ÿÿ förmâţ)]", - securityCode: "[Šëçürîţÿ çödë vërîfîçâţîöñ]", - cvvPlaceholder: "[ÇVV]", - nameOnCard: "[Ñâmë öñ çârd âš šhöwñ]", - payNow: "[Þâÿ Ñöw Büţţöñ]", - standardShipping: "[Šţâñdârd Šhîþþîñg Öþţîöñ]", - cardDetails: "[Çârd dëţâîlš îñförmâţîöñ]", - payWithApplePay: "[Þâÿ wîţh Âþþlë Þâÿ šërvîçë]", - expirationDatePlaceholder: "[MM / ÿÿ]", - failedToInitializePayment: "[Fâîlëd ţö îñîţîâlîžë þâÿmëñţ þröçëšš.]", - orderTotal: "[Tötâl Ördër Âmöüñţ]", - subtotal: "[Šübţöţâl Âmöüñţ]", - tax: "[Ţâx Çâlçülâţîöñ]", - shipping: "[Šhîþþîñg Çöšţš]", - discount: "[Çöüþöñ Âmöüñţ]", - processingPayment: "[Þröçëššîñg þâÿmëñţ îñförmâţîöñ...]", - completingOrder: "[Completing order...]", - freePayment: "[Complete your free order]", - }, - phone: { - placeholder: "[(201) 555-1234]", - searchCountry: "[Šëârçh çöüñţrÿ bÿ ñâmë...]", - noCountryFound: "[Ñö çöüñţrÿ föüñd îñ šëârçh rëšülţš.]", - }, - discounts: { - placeholder: "[Çöüþöñ çödë îñþüţ]", - enterCode: "[Ëñţër çöüþöñ çödë hërë]", - apply: "[Âþþlÿ Çödë]", - alreadyApplied: "[Ţhîš çöüþöñ çödë hâš âlrëâdÿ bëëñ âþþlîëd ţö ţhîš ördër]", - failedToApply: "[Fâîlëd ţö âþþlÿ çöüþöñ çödë ţö ţhîš ördër]", - enterCodeValidation: "[Þlëâšë ëñţër â vâlîd çöüþöñ çödë]", - }, - totals: { - subtotal: "[Šübţöţâl Çâlçülâţîöñ]", - discount: "[Dîšçöüñţ]", - shipping: "[Šhîþþîñg Çöšţš]", - tip: "[Ţîþ Âmöüñţ]", - estimatedTaxes: "[Ëšţîmâţëd ţâxëš çâlçülâţîöñ]", - totalDue: "[Tötâl Âmöüñţ Düë]", - orderSummary: "[Ördër Šümmârÿ Dëţâîlš]", - itemCount: "[îţëmš îñ çârţ]", - noItems: "[Ñö îţëmš îñ çârţ]", - }, - lineItems: { - note: "[Ñöţë îñförmâţîöñ:]", - }, - ui: { - autocomplete: { - addressPlaceholder: "[Âddrëšš šëârçh îñþüţ]", - suggestions: "[Äüţöçömþlëţë šüggëšţîöñš]", - }, - form: { - useFormFieldError: - "[üšëFörmFîëld šhöüld bë üšëd wîţhîñ çömþöñëñţ]", - }, - pagination: { - ariaLabel: "[þâgîñâţîöñ ñâvîgâţîöñ]", - previousPageAriaLabel: "[Gö ţö þrëvîöüš þâgë îñ lîšţ]", - previous: "[Þrëvîöüš Þâgë]", - nextPageAriaLabel: "[Gö ţö ñëxţ þâgë îñ lîšţ]", - next: "[Ñëxţ Þâgë]", - morePages: "[Mörë þâgëš âvâîlâblë]", - }, - sidebar: { - useSidebarError: - "[üšëŠîdëbâr müšţ bë üšëd wîţhîñ â ŠîdëbârÞrövîdër çömþöñëñţ.]", - toggleSidebar: "[Tögglë Šîdëbâr Vîšîbîlîţÿ]", - }, - accessibility: { - payWithApplePay: "[Þâÿ wîţh Âþþlë Þâÿ šërvîçë]", - applePayLogo: "[Âþþlë Þâÿ Löğö Îmâgë]", - }, - }, - errors: { - failedToGetAccessToken: "[Fâîlëd ţö gëţ âççëšš ţökëñ frôm šërvër]", - invalidEnvironment: "[Îñvâlîd ëñvîröñmëñţ çönfîgürâţîöñ]", - noPublicAccessToken: "[Ñö þüblîç âççëšš ţökëñ þrövîdëd bÿ âþþlîçâţîöñ]", - noSessionToken: "[Ñö šëššîöñ ţökëñ ör ÎD þrövîdëd fôr âüţhëñţîçâţîöñ]", - errorCreatingSession: "[Ërrör çrëâţîñg çhëçköüţ šëššîöñ:]", - orderIdRequired: "[Ördër ÎD îš rëqüîrëd fôr þröçëššîñg]", - errorTrackingEvent: "[Ërrör ţrâçkîñg ëvëñţ îñ âñâlÿţîçš]", - errorInTrackingSubscriber: "[Ërrör îñ ţrâçkîñg šübšçrîbër šÿšţëm]", - useTrackingProviderError: - "[üšëŢrâçkîñg müšţ bë üšëd wîţhîñ â ŢrâçkîñgÞrövîdër çömþöñëñţ]", - usePoyntCollectProviderError: - "[üšëÞöÿñţÇöllëçţ müšţ bë üšëd wîţhîñ â ÞöÿñţÇöllëçţÞrövîdër çömþöñëñţ]", - useSquareProviderError: - "[üšëŠqüârë müšţ bë üšëd wîţhîñ â ŠqüârëÞrövîdër çömþöñëñţ]", - errorProcessingPayment: "[Ërrör þröçëššîñg þâÿmëñţ îñförmâţîöñ]", - stripeConfigMissing: - "[Šţrîþë çönfîgürâţîöñ îš mîššîñg. Þlëâšë çhëçk ÿöür šëţüþ.]", - paymentSuccessful: "[Þâÿmëñţ þröçëššëd šüççëššfüllÿ]", - paymentFailed: "[Þâÿmëñţ þröçëššîñg fâîlëd]", - paypalConfigMissing: - "[ÞâÿÞâl çönfîgürâţîöñ îš mîššîñg. Þlëâšë çhëçk ÿöür šëţüþ.]", - stripeNotReady: "[Šţrîþë šërvîçë ñöţ rëâdÿ fôr þröçëššîñg]", - cardElementNotFound: "[ÇârdËlëmëñţ çömþöñëñţ ñöţ föüñd îñ DÖM]", - errorProcessingCardPayment: "[Ërrör þröçëššîñg çârd þâÿmëñţ îñförmâţîöñ.]", - errorProcessingExpressPayment: "[Ërrör þröçëššîñg ëxþrëšš þâÿmëñţ mëţhöd.]", - failedToInitializePayment: "[Fâîlëd ţö îñîţîâlîžë þâÿmëñţ šÿšţëm.]", - invalidPhoneNumber: "[îñvâlîd þhöñë ñümkër förmâţ]", - }, - validation: { - phoneRequired: "[Þhöñë ñümkër îš rëqüîrëd fôr ţhîš ördër]", - emailRequired: "[Ëñţër âñ ëmâîl âddrëšš fôr çöñţâçţ]", - emailInvalid: "[Ëñţër â vâlîd ëmâîl âddrëšš förmâţ]", - phoneTooLong: "[Þhöñë ñümkër îš ţöö löñg fôr vâlîdâţîöñ]", - invalidShippingAddress: "[Îñvâlîd šhîþþîñg âddrëšš îñförmâţîöñ]", - invalidBillingAddress: "[Îñvâlîd bîllîñg âddrëšš îñförmâţîöñ]", - selectPaymentMethod: "[Šëlëçţ â þâÿmëñţ mëţhöd ţö çöñţîñüë]", - enterValidBillingPhone: "[Ëñţër â vâlîd bîllîñg þhöñë ñümkër]", - enterValidShippingPhone: "[Ëñţër â vâlîd šhîþþîñg þhöñë ñümkër]", - enterFirstName: "[Ëñţër â fîršţ ñâmë fôr îdëñţîfîçâţîöñ]", - enterLastName: "[Ëñţër â lâšţ ñâmë fôr îdëñţîfîçâţîöñ]", - enterAddress: "[Ëñţër âñ âddrëšš fôr délîvërÿ]", - enterCity: "[Ëñţër â çîţÿ ñâmë fôr löçâţîöñ]", - enterZipCode: "[Ëñţër â ŽÎÞ çödë fôr vërîfîçâţîöñ]", - enterZipPostalCode: "[Ëñţër â ŽÎÞ / þöšţâl çödë fôr vërîfîçâţîöñ]", - selectState: "[Šëlëçţ â šţâţë/þrövîñçë frôm ţhë âvâîlâblë öþţîöñš]", - selectCountry: "[Šëlëçţ â çöüñţrÿ frôm ţhë âvâîlâblë öþţîöñš]", - enterCountry: "[Ëñţër â çöüñţrÿ ñâmë fôr löçâţîöñ]", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "[Šërvër ërrör öççürrëd]", - SESSION_NOT_FOUND: "[Šëššîöñ ñöţ föüñd îñ šÿšţëm]", - CHECKOUT_SESSION_RETRIEVAL_FAILED: - "[Fâîlëd ţö rëţrîëvë çhëçköüţ šëššîöñ dâţâ]", - CHECKOUT_SESSION_NOT_FOUND: "[Çhëçköüţ šëššîöñ ñöţ föüñd îñ šÿšţëm]", - CHECKOUT_SESSION_FETCH_ERROR: - "[Gëñërâl çhëçköüţ šëššîöñ fëţçh ërrör öççürrëd]", - DRAFT_ORDER_NOT_FOUND: "[Drâfţ ördër ñöţ föüñd îñ šÿšţëm]", - CHECKOUT_SESSION_CREATION_FAILED: "[Fâîlëd ţö çrëâţë çhëçköüţ šëššîöñ]", - CREATED_SESSION_DATA_NOT_FOUND: "[Çrëâţëd šëššîöñ dâţâ ñöţ föüñd]", - CHECKOUT_SESSION_CREATION_ERROR: - "[Gëñërâl çhëçköüţ šëššîöñ çrëâţîöñ ërrör]", - CHECKOUT_SESSION_UPDATE_FAILED: "[Fâîlëd ţö üþdâţë çhëçköüţ šëššîöñ]", - UPDATED_SESSION_NOT_FOUND: "[Üþdâţëd šëššîöñ ñöţ föüñd]", - CHECKOUT_SESSION_UPDATE_ERROR: "[Gëñërâl çhëçköüţ šëššîöñ üþdâţë ërrör]", - ORDER_API_NOT_FOUND: "[Ördër ÂÞÎ dâţâ šöürçë ñöţ föüñd]", - DRAFT_ORDER_RETRIEVAL_FAILED: "[Fâîlëd ţö rëţrîëvë drâfţ ördër]", - DATA_SOURCES_NOT_FOUND: "[Dâţâ šöürçëš ñöţ föüñd îñ šÿšţëm]", - TRANSACTION_API_NOT_FOUND: "[Ţrâñšâçţîöñ ÂÞÎ dâţâ šöürçë ñöţ föüñd]", - TRANSACTION_PROCESSING_FAILED: "[Fâîlëd ţö þröçëšš ţrâñšâçţîöñ]", - TRANSACTION_CREATION_FAILED: "[Fâîlëd ţö fîñd ör çrëâţë ţrâñšâçţîöñ]", - ORDER_OPENING_FAILED: "[Fâîlëd ţö öþëñ ördër fôr þröçëššîñg]", - INVALID_FULFILLMENT_LOCATION: "[Îñvâlîd füllfîllmëñţ löçâţîöñ šþëçîfîëd]", - NO_VALID_PICKUP_LOCATION: "[Ñö vâlîd þîçküþ löçâţîöñ âvâîlâblë]", - DRAFT_ORDER_FETCH_FAILED: "[Fâîlëd ţö fëţçh drâfţ ördër dâţâ]", - LINE_ITEMS_FETCH_FAILED: "[Fâîlëd ţö fëţçh lîñë îţëmš îñförmâţîöñ]", - CURRENT_ORDER_FETCH_FAILED: "[Fâîlëd ţö fëţçh çürrëñţ drâfţ ördër]", - DRAFT_ORDER_UPDATE_FAILED: "[Fâîlëd ţö üþdâţë drâfţ ördër îñförmâţîöñ]", - DISCOUNT_APPLICATION_FAILED: "[Fâîlëd ţö âþþlÿ çöüþöñ ţö ördër]", - CONTEXT_UNAVAILABLE: "[Šëššîöñ ör dâţâ šöürçëš ñöţ âvâîlâblë]", - SHIPPING_LINES_UPDATE_FAILED: "[Fâîlëd ţö üþdâţë šhîþþîñg lîñëš]", - ORDER_TOTALS_UPDATE_FAILED: "[Fâîlëd ţö üþdâţë ördër ţöţâlš]", - SHIPPING_METHOD_APPLICATION_FAILED: "[Fâîlëd ţö âþþlÿ šhîþþîñg mëţhöd]", - SKU_FETCH_FAILED: "[Fâîlëd ţö fëţçh ŠKÜ îñförmâţîöñ]", - SHIPPING_RATES_CALCULATION_FAILED: "[Fâîlëd ţö çâlçülâţë šhîþþîñg râţëš]", - SHIPPING_METHOD_NOT_FOUND: "[Šhîþþîñg mëţhöd ñöţ föüñd îñ šÿšţëm]", - SHIPPING_METHOD_REMOVAL_FAILED: "[Fâîlëd ţö rëmövë šhîþþîñg mëţhöd]", - SHIPPING_ADDRESS_REQUIRED: "[Šhîþþîñg âddrëšš îš rëqüîrëd fôr þröçëššîñg]", - INVENTORY_VALIDATION_ERROR: "[Îñvëñţörÿ vâlîdâţîöñ ërrör öççürrëd]", - INSUFFICIENT_INVENTORY: "[Îñšüffîçîëñţ îñvëñţörÿ âvâîlâblë]", - INVALID_ORDER_STATUS: "[Îñvâlîd ördër šţâţüš föü þröçëššîñg]", - TRANSACTION_CREATION_ERROR: "[Ţrâñšâçţîöñ çrëâţîöñ ërrör öççürrëd]", - TRANSACTION_PROCESSING_ERROR: "[Ţrâñšâçţîöñ þröçëššîñg ërrör öççürrëd]", - UNKNOWN_ERROR: "[Üñknöwñ ërrör öççürrëd îñ šÿšţëm]", - FULFILLMENT_CREATION_ERROR: "[Füllfîllmëñţ çrëâţîöñ ërrör öççürrëd]", - TAX_CALCULATION_ERROR: "[Ţâx çâlçülâţîöñ ërrör öççürrëd]", - ADDRESS_VERIFICATION_ERROR: "[Âddrëšš vërîfîçâţîöñ ërrör öççürrëd]", - ADDRESS_MATCHES_ERROR: "[Âddrëšš mâţçhëš ërrör öççürrëd]", - SHIPPING_CONFLICT_ERROR: "[Šhîþþîñg çönflîçţ ërrör öççürrëd]", - SHIPPING_ERROR: "[Gëñërâl šhîþþîñg ërrör öççürrëd]", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "[Þrîçë âdjüšţmëñţ çâlçülâţîöñ ërrör]", - ORDER_FETCH_ERROR: "[Ördër fëţçh ërrör öççürrëd]", - DRAFT_ORDER_UPDATE_ERROR: "[Drâfţ ördër üþdâţë ërrör öççürrëd]", - DISCOUNT_APPLICATION_ERROR: "[Çöüþöñ âþþlîçâţîöñ ërrör öççürrëd]", - DRAFT_ORDER_OPEN_ERROR: "[Drâfţ ördër öþëñ ërrör öççürrëd]", - ORDER_UPDATE_ERROR: "[Ördër üþdâţë ërrör öççürrëd]", - CATALOG_FETCH_ERROR: "[Çâţâlög fëţçh ërrör öççürrëd]", - STORE_ID_NOT_FOUND: "[Šţörë ÎD ñöţ föüñd îñ šÿšţëm]", - ORDER_NOT_DRAFT: "[Ördër îš ñöţ îñ drâfţ šţâţüš]", - NO_LINE_ITEMS: "[Ñö lîñë îţëmš föüñd îñ ördër]", - BAD_USER_INPUT: "[Bâd üšër îñþüţ þrövîdëd]", - MISSING_SHIPPING_ADDRESS: "[Šhîþþîñg âddrëšš îš rëqüîrëd]", - MISSING_REQUIRED_FIELD: "[Rëqüîrëd fîëld îš mîššîñg]", - CATALOG_API_ERROR: "[Çâţâlög šërvîçë ërrör öççürrëd]", - TAX_SERVICE_UNAVAILABLE: "[Ţâx šërvîçë îš üñâvâîlâblë]", - SHIPPING_SERVICE_UNAVAILABLE: "[Šhîþþîñg šërvîçë îš üñâvâîlâblë]", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "[Þrîçë âdjüšţmëñţš šërvîçë îš üñâvâîlâblë]", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: - "[Fâîlëd ţö çâlçülâţë þrîçë âdjüšţmëñţš]", - SERVICE_UNAVAILABLE: "[Šërvîçë îš ţëmþörârîlÿ üñâvâîlâblë]", - RATE_LIMITED: "[Ţöö mâñÿ rëqüëšţš, þlëâšë ţrÿ âgâîñ lâţër]", - TIMEOUT: "[Rëqüëšţ ţîmëd öüţ]", - INTERNAL_ERROR: "[Îñţërñâl šërvër ërrör öççürrëd]", - SHIPPING_POSTAL_CODE_REQUIRED: "[Šhîþþîñg þöšţâl çödë îš rëqüîrëd]", - SHIPPING_COUNTRY_CODE_REQUIRED: "[Šhîþþîñg çöüñţrÿ çödë îš rëqüîrëd]", - SHIPPING_METHOD_REQUIRED: "[Šhîþþîñg mëţhöd îš rëqüîrëd]", - SHIPPING_ADDRESS_VERIFICATION_FAILED: - "[Šhîþþîñg âddrëšš vërîfîçâţîöñ fâîlëd]", - BILLING_ADDRESS_VERIFICATION_FAILED: - "[Bîllîñg âddrëšš vërîfîçâţîöñ fâîlëd]", - }, + general: { + optional: '[óþťîöñâl]', + notes: '[Ñöťéš]', + quantity: '[Qüâñťîťÿ]', + free: '[FRËË]', + closed: '[Çlöšéd]', + apply: '[Âþþlÿ]', + checkoutDisabled: '[Çhéçkøüť îš çürrëñťlÿ dîšâblëd. Wé âþöløgîžé før ťhé îñçöñvéñîéñçé ând áppreciate your patience.]', + }, + contact: { + title: '[Çöñťâçť]', + description: '', + email: '[Émâîl Âddrëšš]', + }, + pickup: { + title: '[Löçâl Þîçküþ Šërvîçë]', + description: + '[Âll éffôrťš wîll bé mâdé ťö mëëť ÿöür ëxþëçťëd þîçküþ ťîmé. Âçťüâl þîçküþ ťîmëš mâÿ vârÿ dëþëñdîñg öñ çîrçümšťâñçëš.]', + location: '[Þîçküþ Löçâťîöñ Âddrëšš]', + date: '[Þîçküþ Dâťé]', + time: '[Þrëfërrëd Þîçküþ Ťîmé]', + selectStore: '[Šëlëçť â šťörë löçâťîöñ frôm ťhé lîšť]', + selectDate: '[Šëlëçť â dâťé frôm çâlëñdâr]', + selectTime: '[Šëlëçť â þîçküþ ťîmé šlöť]', + storeHours: '[Šťörë Hôürš Îñförmâťîöñ]', + seeDetails: '[Šëë mörë dëťâîlš]', + noTimeSlots: '[Ñö âvâîlâblë ťîmé šlöťš fôr ťhé šëlëçťëd dâťé. Þlëâšé šëlëçť âñöťhër dâťé ôr çöñšîdër öťhër öþťîöñš.]', + hoursDisplayed: '[Hôürš dîšþlâÿëd îñ ÿöür löçâl ťîmëžöñë fôr çöñvëñîëñçë.]', + storeOperatesIn: '[Šťörë öþërâťëš îñ {timezone} ťîmëžöñë förmâť.]', + asap: '[ŠÂ̈P]', + hour: '[hôür]', + hours: '[hôürš]', + minutes: '[mîñüťëš]', + searchCountry: '[Šëârçh çöüñťrÿ bÿ ñâmë...]', + noCountryFound: '[Ñö çöüñťrÿ föüñd îñ šëârçh.]', + }, + days: { + sunday: '[Šüñdâÿ]', + monday: '[Möñdâÿ]', + tuesday: '[Ťüëšdâÿ]', + wednesday: '[Wëdñëšdâÿ]', + thursday: '[Ťhürškâÿ]', + friday: '[Frîdâÿ]', + saturday: '[Šâťürdâÿ]', + }, + delivery: { + title: '[Délîvërÿ Mëťhödš]', + method: '[Délîvërÿ mëťhöd šëlëçťîöñ]', + shipping: '[Šhîþþîñg Öþťîöñš]', + shipToAddress: '[Šhîþ ťö ÿöür šþëçîfîëd âddrëšš]', + localPickup: '[Löçâl Þîçküþ Šërvîçë]', + pickupFromStore: '[Þîçk üþ frôm šťörë löçâťîöñ]', + }, + tips: { + title: '[Âdd â ťîþ fôr šërvîçë]', + noTip: '[Ñö Ťîþ Âddëd]', + customAmount: '[Çüšťöm Âmöüñť Ëñťrÿ]', + customTipAmount: '[Çüšťöm Ťîþ Âmöüñť Vâlüë]', + placeholder: '[$0.00]', + }, + shipping: { + title: '[Šhîþþîñg Îñförmâťîöñ]', + description: '[Šhîþþîñg âddrëšš dëťâîlš]', + method: '[Šhîþþîñg mëťhöd šëlëçťîöñ]', + noShippingMethodAddress: '[Ëñťër ÿöür âddrëšš ťö šëë âvâîlâblë šhîþþîñg mëťhödš fôr ÿöür löçâťîöñ.]', + noShippingMethods: '[Ñö šhîþþîñg mëťhödš föüñd fôr ţhîš löçâţîöñ.]', + phone: '[Þhöñë Ñümkër Îñförmâťîöñ]', + country: '[Çöüñţrÿ Šëlëçťîöñ]', + selectCountry: '[Šëlëçť çöüñţrÿ frôm lîšť]', + searchCountry: '[Šëârçh çöüñţrÿ bÿ ñâmë...]', + noCountryFound: '[Ñö çöüñţrÿ föüñd îñ šëârçh]', + firstName: '[Fîršť Ñâmë Îñþüť]', + lastName: '[Lâšť Ñâmë Îñþüť]', + address1: '[Âddrëšš Lîñë Önë]', + address2: '[Âþârţmëñť, šüîţë, ëţç. (öþţîöñâl îñþüť)]', + city: '[Çîţÿ Ñâmë]', + region: '[Šţâţë/Þrövîñçë Šëlëçţîöñ]', + postalCode: '[Þöšţâl Çödë Îñþüť]', + notesPlaceholder: '[Ñöţëš ör šþëçîâl îñšţrüçţîöñš fôr délîvërÿ]', + addressSuggestion: '[Dîd ÿöü mëâñ ţhîš âddrëšš]', + addressSuggestionEnd: '[?]', + noShippingOriginAddress: '[Ñö šhîþþîñg örîgîñ âddrëšš þrövîdëd bÿ mërçhâñť.]', + }, + billing: { + title: '[Bîllîñg Îñförmâţîöñ]', + description: '[Bîllîñg îñförmâţîöñ dëšçrîþţîöñ]', + }, + payment: { + title: '[Þâÿmëñţ Îñförmâţîöñ]', + description: '[Âll þâÿmëñţš ârë šëçürë ând ëñçrÿþţëd för ÿöür šâfëţÿ.]', + billingAddress: { + title: '[Bîllîñg Âddrëšš Îñförmâţîöñ]', + description: '[Ëñţër ÿöür bîllîñg âddrëšš dëţâîlš.]', + useShippingAddress: '[Üšë šhîþþîñg âddrëšš âš bîllîñg âddrëšš]', + }, + methods: { + creditCard: '[Çrëdîţ ör Dëbîţ Çârd Þâÿmëñţ]', + paypal: '[ÞâÿÞâl Þâÿmëñţ Šërvîçë]', + applePay: '[Âþþlë Þâÿ Þâÿmëñţ]', + googlePay: '[Göögië Þâÿ Þâÿmëñţ]', + paze: '[Þâžë Þâÿmëñţ Šërvîçë]', + offline: '[Öfflîñë þâÿmëñţ mëţhödš]', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: '[Ñö þâÿmëñţ mëţhödš âvâîlâblë âţ ţhîš ţîmë]', + cardNumber: '[Çârd ñümkër îñþüţ fîëld]', + cardNumberPlaceholder: '[1234 1234 1234 1234]', + expirationDate: '[Ëxþîrâţîöñ dâţë (MM / ÿÿ förmâţ)]', + securityCode: '[Šëçürîţÿ çödë vërîfîçâţîöñ]', + cvvPlaceholder: '[ÇVV]', + nameOnCard: '[Ñâmë öñ çârd âš šhöwñ]', + payNow: '[Þâÿ Ñöw Büţţöñ]', + standardShipping: '[Šţâñdârd Šhîþþîñg Öþţîöñ]', + cardDetails: '[Çârd dëţâîlš îñförmâţîöñ]', + payWithApplePay: '[Þâÿ wîţh Âþþlë Þâÿ šërvîçë]', + expirationDatePlaceholder: '[MM / ÿÿ]', + failedToInitializePayment: '[Fâîlëd ţö îñîţîâlîžë þâÿmëñţ þröçëšš.]', + orderTotal: '[Tötâl Ördër Âmöüñţ]', + subtotal: '[Šübţöţâl Âmöüñţ]', + tax: '[Ţâx Çâlçülâţîöñ]', + shipping: '[Šhîþþîñg Çöšţš]', + discount: '[Çöüþöñ Âmöüñţ]', + processingPayment: '[Þröçëššîñg þâÿmëñţ îñförmâţîöñ...]', + completingOrder: '[Completing order...]', + completeOrder: '[Çömþlëţë ÿöür ördër]', + freePayment: '[Complete your free order]', + }, + phone: { + placeholder: '[(201) 555-1234]', + searchCountry: '[Šëârçh çöüñţrÿ bÿ ñâmë...]', + noCountryFound: '[Ñö çöüñţrÿ föüñd îñ šëârçh rëšülţš.]', + }, + discounts: { + placeholder: '[Çöüþöñ çödë îñþüţ]', + enterCode: '[Ëñţër çöüþöñ çödë hërë]', + apply: '[Âþþlÿ Çödë]', + alreadyApplied: '[Ţhîš çöüþöñ çödë hâš âlrëâdÿ bëëñ âþþlîëd ţö ţhîš ördër]', + failedToApply: '[Fâîlëd ţö âþþlÿ çöüþöñ çödë ţö ţhîš ördër]', + enterCodeValidation: '[Þlëâšë ëñţër â vâlîd çöüþöñ çödë]', + }, + totals: { + subtotal: '[Šübţöţâl Çâlçülâţîöñ]', + discount: '[Dîšçöüñţ]', + shipping: '[Šhîþþîñg Çöšţš]', + tip: '[Ţîþ Âmöüñţ]', + estimatedTaxes: '[Ëšţîmâţëd ţâxëš çâlçülâţîöñ]', + totalDue: '[Tötâl Âmöüñţ Düë]', + orderSummary: '[Ördër Šümmârÿ Dëţâîlš]', + itemCount: '[îţëmš îñ çârţ]', + noItems: '[Ñö îţëmš îñ çârţ]', + }, + lineItems: { + note: '[Ñöţë îñförmâţîöñ:]', + }, + ui: { + autocomplete: { + addressPlaceholder: '[Âddrëšš šëârçh îñþüţ]', + suggestions: '[Äüţöçömþlëţë šüggëšţîöñš]', + }, + form: { + useFormFieldError: '[üšëFörmFîëld šhöüld bë üšëd wîţhîñ çömþöñëñţ]', + }, + pagination: { + ariaLabel: '[þâgîñâţîöñ ñâvîgâţîöñ]', + previousPageAriaLabel: '[Gö ţö þrëvîöüš þâgë îñ lîšţ]', + previous: '[Þrëvîöüš Þâgë]', + nextPageAriaLabel: '[Gö ţö ñëxţ þâgë îñ lîšţ]', + next: '[Ñëxţ Þâgë]', + morePages: '[Mörë þâgëš âvâîlâblë]', + }, + sidebar: { + useSidebarError: '[üšëŠîdëbâr müšţ bë üšëd wîţhîñ â ŠîdëbârÞrövîdër çömþöñëñţ.]', + toggleSidebar: '[Tögglë Šîdëbâr Vîšîbîlîţÿ]', + }, + accessibility: { + payWithApplePay: '[Þâÿ wîţh Âþþlë Þâÿ šërvîçë]', + applePayLogo: '[Âþþlë Þâÿ Löğö Îmâgë]', + close: '[Çlöšë Büţţöñ]', + additionalTipOptions: '[Âddîţîöñâl ţîþ öþţîöñš šëlëçţîöñ]', + breadcrumb: '[brëâdçrümb ñâvîgâţîöñ]', + more: '[Mörë îţëmš]', + previousSlide: '[Þrëvîöüš šlîdë]', + nextSlide: '[Ñëxţ šlîdë]', + }, + }, + errors: { + failedToGetAccessToken: '[Fâîlëd ţö gëţ âççëšš ţökëñ frôm šërvër]', + invalidEnvironment: '[Îñvâlîd ëñvîröñmëñţ çönfîgürâţîöñ]', + noPublicAccessToken: '[Ñö þüblîç âççëšš ţökëñ þrövîdëd bÿ âþþlîçâţîöñ]', + noSessionToken: '[Ñö šëššîöñ ţökëñ ör ÎD þrövîdëd fôr âüţhëñţîçâţîöñ]', + errorCreatingSession: '[Ërrör çrëâţîñg çhëçköüţ šëššîöñ:]', + orderIdRequired: '[Ördër ÎD îš rëqüîrëd fôr þröçëššîñg]', + errorTrackingEvent: '[Ërrör ţrâçkîñg ëvëñţ îñ âñâlÿţîçš]', + errorInTrackingSubscriber: '[Ërrör îñ ţrâçkîñg šübšçrîbër šÿšţëm]', + useTrackingProviderError: '[üšëŢrâçkîñg müšţ bë üšëd wîţhîñ â ŢrâçkîñgÞrövîdër çömþöñëñţ]', + usePoyntCollectProviderError: '[üšëÞöÿñţÇöllëçţ müšţ bë üšëd wîţhîñ â ÞöÿñţÇöllëçţÞrövîdër çömþöñëñţ]', + useSquareProviderError: '[üšëŠqüârë müšţ bë üšëd wîţhîñ â ŠqüârëÞrövîdër çömþöñëñţ]', + errorProcessingPayment: '[Ërrör þröçëššîñg þâÿmëñţ îñförmâţîöñ]', + stripeConfigMissing: '[Šţrîþë çönfîgürâţîöñ îš mîššîñg. Þlëâšë çhëçk ÿöür šëţüþ.]', + paymentSuccessful: '[Þâÿmëñţ þröçëššëd šüççëššfüllÿ]', + paymentFailed: '[Þâÿmëñţ þröçëššîñg fâîlëd]', + paypalConfigMissing: '[ÞâÿÞâl çönfîgürâţîöñ îš mîššîñg. Þlëâšë çhëçk ÿöür šëţüþ.]', + stripeNotReady: '[Šţrîþë šërvîçë ñöţ rëâdÿ fôr þröçëššîñg]', + cardElementNotFound: '[ÇârdËlëmëñţ çömþöñëñţ ñöţ föüñd îñ DÖM]', + errorProcessingCardPayment: '[Ërrör þröçëššîñg çârd þâÿmëñţ îñförmâţîöñ.]', + errorProcessingExpressPayment: '[Ërrör þröçëššîñg ëxþrëšš þâÿmëñţ mëţhöd.]', + failedToInitializePayment: '[Fâîlëd ţö îñîţîâlîžë þâÿmëñţ šÿšţëm.]', + invalidPhoneNumber: '[îñvâlîd þhöñë ñümkër förmâţ]', + }, + validation: { + phoneRequired: '[Þhöñë ñümkër îš rëqüîrëd fôr ţhîš ördër]', + emailRequired: '[Ëñţër âñ ëmâîl âddrëšš fôr çöñţâçţ]', + emailInvalid: '[Ëñţër â vâlîd ëmâîl âddrëšš förmâţ]', + phoneTooLong: '[Þhöñë ñümkër îš ţöö löñg fôr vâlîdâţîöñ]', + invalidShippingAddress: '[Îñvâlîd šhîþþîñg âddrëšš îñförmâţîöñ]', + invalidBillingAddress: '[Îñvâlîd bîllîñg âddrëšš îñförmâţîöñ]', + selectPaymentMethod: '[Šëlëçţ â þâÿmëñţ mëţhöd ţö çöñţîñüë]', + enterValidBillingPhone: '[Ëñţër â vâlîd bîllîñg þhöñë ñümkër]', + enterValidShippingPhone: '[Ëñţër â vâlîd šhîþþîñg þhöñë ñümkër]', + enterFirstName: '[Ëñţër â fîršţ ñâmë fôr îdëñţîfîçâţîöñ]', + enterLastName: '[Ëñţër â lâšţ ñâmë fôr îdëñţîfîçâţîöñ]', + enterAddress: '[Ëñţër âñ âddrëšš fôr délîvërÿ]', + enterCity: '[Ëñţër â çîţÿ ñâmë fôr löçâţîöñ]', + enterZipCode: '[Ëñţër â ŽÎÞ çödë fôr vërîfîçâţîöñ]', + enterZipPostalCode: '[Ëñţër â ŽÎÞ / þöšţâl çödë fôr vërîfîçâţîöñ]', + selectState: '[Šëlëçţ â šţâţë/þrövîñçë frôm ţhë âvâîlâblë öþţîöñš]', + selectCountry: '[Šëlëçţ â çöüñţrÿ frôm ţhë âvâîlâblë öþţîöñš]', + enterCountry: '[Ëñţër â çöüñţrÿ ñâmë fôr löçâţîöñ]', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: '[Šërvër ërrör öççürrëd]', + SESSION_NOT_FOUND: '[Šëššîöñ ñöţ föüñd îñ šÿšţëm]', + CHECKOUT_SESSION_RETRIEVAL_FAILED: '[Fâîlëd ţö rëţrîëvë çhëçköüţ šëššîöñ dâţâ]', + CHECKOUT_SESSION_NOT_FOUND: '[Çhëçköüţ šëššîöñ ñöţ föüñd îñ šÿšţëm]', + CHECKOUT_SESSION_FETCH_ERROR: '[Gëñërâl çhëçköüţ šëššîöñ fëţçh ërrör öççürrëd]', + DRAFT_ORDER_NOT_FOUND: '[Ördër ñöţ föüñd îñ šÿšţëm]', + CHECKOUT_SESSION_CREATION_FAILED: '[Fâîlëd ţö çrëâţë çhëçköüţ šëššîöñ]', + CREATED_SESSION_DATA_NOT_FOUND: '[Çrëâţëd šëššîöñ dâţâ ñöţ föüñd]', + CHECKOUT_SESSION_CREATION_ERROR: '[Gëñërâl çhëçköüţ šëššîöñ çrëâţîöñ ërrör]', + CHECKOUT_SESSION_UPDATE_FAILED: '[Fâîlëd ţö üþdâţë çhëçköüţ šëššîöñ]', + UPDATED_SESSION_NOT_FOUND: '[Üþdâţëd šëššîöñ ñöţ föüñd]', + CHECKOUT_SESSION_UPDATE_ERROR: '[Gëñërâl çhëçköüţ šëššîöñ üþdâţë ërrör]', + ORDER_API_NOT_FOUND: '[Ördër ÂÞÎ dâţâ šöürçë ñöţ föüñd]', + DRAFT_ORDER_RETRIEVAL_FAILED: '[Fâîlëd ţö rëţrîëvë ördër]', + DATA_SOURCES_NOT_FOUND: '[Dâţâ šöürçëš ñöţ föüñd îñ šÿšţëm]', + TRANSACTION_API_NOT_FOUND: '[Ţrâñšâçţîöñ ÂÞÎ dâţâ šöürçë ñöţ föüñd]', + TRANSACTION_PROCESSING_FAILED: '[Fâîlëd ţö þröçëšš ţrâñšâçţîöñ]', + TRANSACTION_CREATION_FAILED: '[Fâîlëd ţö fîñd ör çrëâţë ţrâñšâçţîöñ]', + ORDER_OPENING_FAILED: '[Fâîlëd ţö öþëñ ördër fôr þröçëššîñg]', + INVALID_FULFILLMENT_LOCATION: '[Îñvâlîd füllfîllmëñţ löçâţîöñ šþëçîfîëd]', + NO_VALID_PICKUP_LOCATION: '[Ñö vâlîd þîçküþ löçâţîöñ âvâîlâblë]', + DRAFT_ORDER_FETCH_FAILED: '[Fâîlëd ţö fëţçh ördër dâţâ]', + LINE_ITEMS_FETCH_FAILED: '[Fâîlëd ţö fëţçh lîñë îţëmš îñförmâţîöñ]', + CURRENT_ORDER_FETCH_FAILED: '[Fâîlëd ţö fëţçh çürrëñţ ördër]', + DRAFT_ORDER_UPDATE_FAILED: '[Fâîlëd ţö üþdâţë ördër îñförmâţîöñ]', + DISCOUNT_APPLICATION_FAILED: '[Fâîlëd ţö âþþlÿ çöüþöñ ţö ördër]', + CONTEXT_UNAVAILABLE: '[Šëššîöñ ör dâţâ šöürçëš ñöţ âvâîlâblë]', + SHIPPING_LINES_UPDATE_FAILED: '[Fâîlëd ţö üþdâţë šhîþþîñg lîñëš]', + ORDER_TOTALS_UPDATE_FAILED: '[Fâîlëd ţö üþdâţë ördër ţöţâlš]', + ORDER_TOTAL_CALCULATION_FAILED: '[Fâîlëd ţö çâlçülâţë ördër ţöţâlš]', + SHIPPING_METHOD_APPLICATION_FAILED: '[Fâîlëd ţö âþþlÿ šhîþþîñg mëţhöd]', + SKU_FETCH_FAILED: '[Fâîlëd ţö fëţçh ŠKÜ îñförmâţîöñ]', + SHIPPING_RATES_CALCULATION_FAILED: '[Fâîlëd ţö çâlçülâţë šhîþþîñg râţëš]', + SHIPPING_METHOD_NOT_FOUND: '[Šhîþþîñg mëţhöd ñöţ föüñd îñ šÿšţëm]', + SHIPPING_METHOD_REMOVAL_FAILED: '[Fâîlëd ţö rëmövë šhîþþîñg mëţhöd]', + SHIPPING_ADDRESS_REQUIRED: '[Šhîþþîñg âddrëšš îš rëqüîrëd fôr þröçëššîñg]', + INVENTORY_VALIDATION_ERROR: '[Îñvëñţörÿ vâlîdâţîöñ ërrör öççürrëd]', + INSUFFICIENT_INVENTORY: '[Îñšüffîçîëñţ îñvëñţörÿ âvâîlâblë]', + INVALID_ORDER_STATUS: '[Îñvâlîd ördër šţâţüš föü þröçëššîñg]', + TRANSACTION_CREATION_ERROR: '[Ţrâñšâçţîöñ çrëâţîöñ ërrör öççürrëd]', + TRANSACTION_PROCESSING_ERROR: '[Ţrâñšâçţîöñ þröçëššîñg ërrör öççürrëd]', + UNKNOWN_ERROR: '[Üñknöwñ ërrör öççürrëd îñ šÿšţëm]', + FULFILLMENT_CREATION_ERROR: '[Füllfîllmëñţ çrëâţîöñ ërrör öççürrëd]', + TAX_CALCULATION_ERROR: '[Ţâx çâlçülâţîöñ ërrör öççürrëd]', + ADDRESS_VERIFICATION_ERROR: '[Âddrëšš vërîfîçâţîöñ ërrör öççürrëd]', + ADDRESS_MATCHES_ERROR: '[Âddrëšš mâţçhëš ërrör öççürrëd]', + SHIPPING_CONFLICT_ERROR: '[Šhîþþîñg çönflîçţ ërrör öççürrëd]', + SHIPPING_ERROR: '[Gëñërâl šhîþþîñg ërrör öççürrëd]', + PRICE_ADJUSTMENT_CALCULATION_ERROR: '[Þrîçë âdjüšţmëñţ çâlçülâţîöñ ërrör]', + ORDER_FETCH_ERROR: '[Ördër fëţçh ërrör öççürrëd]', + DRAFT_ORDER_UPDATE_ERROR: '[Ördër üþdâţë ërrör öççürrëd]', + DISCOUNT_APPLICATION_ERROR: '[Çöüþöñ âþþlîçâţîöñ ërrör öççürrëd]', + DRAFT_ORDER_OPEN_ERROR: '[Ördër öþëñ ërrör öççürrëd]', + ORDER_UPDATE_ERROR: '[Ördër üþdâţë ërrör öççürrëd]', + CATALOG_FETCH_ERROR: '[Çâţâlög fëţçh ërrör öççürrëd]', + STORE_ID_NOT_FOUND: '[Šţörë ÎD ñöţ föüñd îñ šÿšţëm]', + ORDER_NOT_DRAFT: '[Ördër îš ñöţ îñ vâlîd šţâţüš]', + NO_LINE_ITEMS: '[Ñö lîñë îţëmš föüñd îñ ördër]', + BAD_USER_INPUT: '[Bâd üšër îñþüţ þrövîdëd]', + MISSING_SHIPPING_ADDRESS: '[Šhîþþîñg âddrëšš îš rëqüîrëd]', + MISSING_REQUIRED_FIELD: '[Rëqüîrëd fîëld îš mîššîñg]', + CATALOG_API_ERROR: '[Çâţâlög šërvîçë ërrör öççürrëd]', + TAX_SERVICE_UNAVAILABLE: '[Ţâx šërvîçë îš üñâvâîlâblë]', + SHIPPING_SERVICE_UNAVAILABLE: '[Šhîþþîñg šërvîçë îš üñâvâîlâblë]', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: '[Þrîçë âdjüšţmëñţš šërvîçë îš üñâvâîlâblë]', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: '[Fâîlëd ţö çâlçülâţë þrîçë âdjüšţmëñţš]', + SERVICE_UNAVAILABLE: '[Šërvîçë îš ţëmþörârîlÿ üñâvâîlâblë]', + RATE_LIMITED: '[Ţöö mâñÿ rëqüëšţš, þlëâšë ţrÿ âgâîñ lâţër]', + TIMEOUT: '[Rëqüëšţ ţîmëd öüţ]', + INTERNAL_ERROR: '[Îñţërñâl šërvër ërrör öççürrëd]', + SHIPPING_POSTAL_CODE_REQUIRED: '[Šhîþþîñg þöšţâl çödë îš rëqüîrëd]', + SHIPPING_COUNTRY_CODE_REQUIRED: '[Šhîþþîñg çöüñţrÿ çödë îš rëqüîrëd]', + SHIPPING_METHOD_REQUIRED: '[Šhîþþîñg mëţhöd îš rëqüîrëd]', + SHIPPING_ADDRESS_VERIFICATION_FAILED: '[Šhîþþîñg âddrëšš vërîfîçâţîöñ fâîlëd]', + BILLING_ADDRESS_VERIFICATION_FAILED: '[Bîllîñg âddrëšš vërîfîçâţîöñ fâîlëd]', + MISSING_SHIPPING_INFO: '[Šĥîţţîñg âddrëšš ör mëţĥöd fâîlëd ţö âţţļÿ]', + DEPENDENCY_ERROR: 'موږ اوس ستاسو امر پروسس نشو کولی. مهرباني وکړئ یو شېبه انتظار وکړئ او بیا هڅه وکړئ', + }, }; diff --git a/packages/localizations/src/trTr.ts b/packages/localizations/src/trTr.ts index 1093ef3f..a54a0daf 100644 --- a/packages/localizations/src/trTr.ts +++ b/packages/localizations/src/trTr.ts @@ -1,316 +1,317 @@ export const trTr = { - general: { - optional: "isteğe bağlı", - notes: "Notlar", - quantity: "Miktar", - free: "ÜCRETSİZ", - closed: "Kapalı", - apply: "Uygula", - checkoutDisabled: - "Ödeme işlemi şu anda devre dışı. Yaşanan rahatsızlık için özür dileriz.", - }, - contact: { - title: "İletişim", - description: "", - email: "E-posta", - }, - pickup: { - title: "Mağazadan Teslim Alma", - description: - "Belirlediğiniz teslim alma saatini karşılamak için her türlü çaba gösterilecektir. Gerçek teslim alma saatleri değişebilir.", - location: "Teslim Alma Yeri", - date: "Teslim Alma Tarihi", - time: "Tercih Edilen Teslim Alma Saati", - selectStore: "Bir mağaza konumu seçin", - selectDate: "Bir tarih seçin", - selectTime: "Bir teslim alma saati seçin", - storeHours: "Mağaza Saatleri", - seeDetails: "Detayları görüntüle", - noTimeSlots: - "Seçilen tarih için uygun zaman dilimi bulunmamaktadır. Lütfen başka bir tarih seçin.", - hoursDisplayed: "Saatler yerel saat diliminizde gösterilmektedir.", - storeOperatesIn: "Mağaza {timezone} saat diliminde çalışmaktadır.", - asap: "EN KISA SÜREDE", - hour: "saat", - hours: "saat", - minutes: "dakika", - searchCountry: "Ülke ara...", - noCountryFound: "Ülke bulunamadı.", - }, - days: { - sunday: "Pazar", - monday: "Pazartesi", - tuesday: "Salı", - wednesday: "Çarşamba", - thursday: "Perşembe", - friday: "Cuma", - saturday: "Cumartesi", - }, - delivery: { - title: "Teslimat", - method: "Teslimat yöntemi", - shipping: "Kargo", - shipToAddress: "Adresinize kargo gönderin", - localPickup: "Mağazadan Teslim Alma", - pickupFromStore: "Mağaza konumundan teslim alın", - }, - tips: { - title: "Bahşiş ekleyin", - noTip: "Bahşiş Yok", - customAmount: "Özel Tutar", - customTipAmount: "Özel Bahşiş Tutarı", - placeholder: "₺0,00", - }, - shipping: { - title: "Kargo", - description: "Kargo adresi", - method: "Kargo yöntemi", - noShippingMethodAddress: - "Mevcut kargo yöntemlerini görmek için adresinizi girin.", - noShippingMethods: "Kargo yöntemi bulunamadı.", - phone: "Telefon Numarası", - country: "Ülke", - selectCountry: "Ülke seçin", - searchCountry: "Ülke ara...", - noCountryFound: "Ülke bulunamadı", - firstName: "Ad", - lastName: "Soyad", - address1: "Adres", - address2: "Daire, apartman vb. (isteğe bağlı)", - city: "Şehir", - region: "İl/Bölge", - postalCode: "Posta Kodu", - notesPlaceholder: "Notlar veya özel talimatlar", - addressSuggestion: "Şunu mu demek istediniz", - addressSuggestionEnd: "?", - noShippingOriginAddress: "Kargo çıkış adresi sağlanmamış.", - }, - billing: { - title: "Faturalama", - description: "Faturalama açıklaması", - }, - payment: { - title: "Ödeme", - description: "Tüm ödemeler güvenli ve şifrelidir.", - billingAddress: { - title: "Fatura Adresi", - description: "Fatura adresinizi girin.", - useShippingAddress: "Kargo adresini fatura adresi olarak kullan", - }, - methods: { - creditCard: "Kredi veya Banka Kartı", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Çevrimdışı ödemeler", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Kullanılabilir ödeme yöntemi yok", - cardNumber: "Kart numarası", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Son kullanma tarihi (AA / YY)", - securityCode: "Güvenlik kodu", - cvvPlaceholder: "CVV", - nameOnCard: "Kart üzerindeki isim", - payNow: "Şimdi öde", - standardShipping: "Standart Kargo", - cardDetails: "Kart detayları", - payWithApplePay: "Apple Pay ile öde", - expirationDatePlaceholder: "AA / YY", - failedToInitializePayment: "Ödeme başlatılamadı.", - orderTotal: "Sipariş Toplamı", - subtotal: "Ara Toplam", - tax: "Vergi", - shipping: "Kargo", - discount: "Kupon", - processingPayment: "Ödeme işleniyor...", - completingOrder: "Sipariş tamamlanıyor...", - freePayment: "Ücretsiz siparişinizi tamamlayın", - }, - phone: { - placeholder: "(212) 555-1234", - searchCountry: "Ülke ara...", - noCountryFound: "Ülke bulunamadı.", - }, - discounts: { - placeholder: "Kupon kodu", - enterCode: "Kupon kodu girin", - apply: "Uygula", - alreadyApplied: "Bu kupon kodu zaten uygulanmış", - failedToApply: "Kupon kodu uygulanamadı", - enterCodeValidation: "Lütfen bir kupon kodu girin", - }, - totals: { - subtotal: "Ara Toplam", - discount: "İndirim", - shipping: "Kargo", - tip: "Bahşiş", - estimatedTaxes: "Tahmini vergiler", - totalDue: "Ödenecek Toplam", - orderSummary: "Sipariş Özeti", - itemCount: "ürün", - noItems: "Ürün yok", - }, - lineItems: { - note: "Not:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Adres", - suggestions: "Öneriler", - }, - form: { - useFormFieldError: "useFormField içinde kullanılmalıdır", - }, - pagination: { - ariaLabel: "sayfalama", - previousPageAriaLabel: "Önceki sayfaya git", - previous: "Önceki", - nextPageAriaLabel: "Sonraki sayfaya git", - next: "Sonraki", - morePages: "Daha fazla sayfa", - }, - sidebar: { - useSidebarError: "useSidebar bir SidebarProvider içinde kullanılmalıdır.", - toggleSidebar: "Kenar Çubuğunu Aç/Kapat", - }, - accessibility: { - payWithApplePay: "Apple Pay ile öde", - applePayLogo: "Apple Pay Logosu", - }, - }, - errors: { - failedToGetAccessToken: "Erişim belirteci alınamadı", - invalidEnvironment: "Geçersiz ortam", - noPublicAccessToken: "Genel erişim belirteci sağlanmamış", - noSessionToken: "Oturum belirteci veya kimliği sağlanmamış", - errorCreatingSession: "Ödeme oturumu oluşturma hatası:", - orderIdRequired: "Sipariş kimliği gerekli", - errorTrackingEvent: "Olay izleme hatası", - errorInTrackingSubscriber: "İzleme abonesi hatası", - useTrackingProviderError: - "useTracking bir TrackingProvider içinde kullanılmalıdır", - usePoyntCollectProviderError: - "usePoyntCollect bir PoyntCollectProvider içinde kullanılmalıdır", - useSquareProviderError: - "useSquare bir SquareProvider içinde kullanılmalıdır", - errorProcessingPayment: "Ödeme işleme hatası", - stripeConfigMissing: - "Stripe yapılandırması eksik. Lütfen kurulumunuzu kontrol edin.", - paymentSuccessful: "Ödeme başarılı", - paymentFailed: "Ödeme başarısız", - paypalConfigMissing: - "PayPal yapılandırması eksik. Lütfen kurulumunuzu kontrol edin.", - stripeNotReady: "Stripe hazır değil", - cardElementNotFound: "CardElement bulunamadı", - errorProcessingCardPayment: "Kart ödemesi işleme hatası.", - errorProcessingExpressPayment: "Hızlı ödeme işleme hatası.", - failedToInitializePayment: "Ödeme başlatılamadı.", - invalidPhoneNumber: "geçersiz telefon numarası", - }, - validation: { - phoneRequired: "Telefon numarası gerekli", - emailRequired: "E-posta girin", - emailInvalid: "Geçerli bir e-posta girin", - phoneTooLong: "Telefon numarası çok uzun", - invalidShippingAddress: "Geçersiz kargo adresi", - invalidBillingAddress: "Geçersiz fatura adresi", - selectPaymentMethod: "Bir ödeme yöntemi seçin", - enterValidBillingPhone: "Geçerli bir fatura telefon numarası girin", - enterValidShippingPhone: "Geçerli bir kargo telefon numarası girin", - enterFirstName: "Bir ad girin", - enterLastName: "Bir soyad girin", - enterAddress: "Bir adres girin", - enterCity: "Bir şehir girin", - enterZipCode: "Bir posta kodu girin", - enterZipPostalCode: "Bir posta kodu girin", - selectState: "Bir il/eyalet seçin", - selectCountry: "Bir ülke seçin", - enterCountry: "Bir ülke girin", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Sunucu hatası", - SESSION_NOT_FOUND: "Oturum bulunamadı", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Ödeme oturumu alınamadı", - CHECKOUT_SESSION_NOT_FOUND: "Ödeme oturumu bulunamadı", - CHECKOUT_SESSION_FETCH_ERROR: "Genel ödeme oturumu alma hatası", - DRAFT_ORDER_NOT_FOUND: "Taslak sipariş bulunamadı", - CHECKOUT_SESSION_CREATION_FAILED: "Ödeme oturumu oluşturulamadı", - CREATED_SESSION_DATA_NOT_FOUND: "Oluşturulan oturum verisi bulunamadı", - CHECKOUT_SESSION_CREATION_ERROR: "Genel ödeme oturumu oluşturma hatası", - CHECKOUT_SESSION_UPDATE_FAILED: "Ödeme oturumu güncellenemedi", - UPDATED_SESSION_NOT_FOUND: "Güncellenmiş oturum bulunamadı", - CHECKOUT_SESSION_UPDATE_ERROR: "Genel ödeme oturumu güncelleme hatası", - ORDER_API_NOT_FOUND: "Sipariş API veri kaynağı bulunamadı", - DRAFT_ORDER_RETRIEVAL_FAILED: "Taslak sipariş alınamadı", - DATA_SOURCES_NOT_FOUND: "Veri kaynakları bulunamadı", - TRANSACTION_API_NOT_FOUND: "İşlem API veri kaynağı bulunamadı", - TRANSACTION_PROCESSING_FAILED: "İşlem işlenemedi", - TRANSACTION_CREATION_FAILED: "İşlem bulunamadı veya oluşturulamadı", - ORDER_OPENING_FAILED: "Sipariş açılamadı", - INVALID_FULFILLMENT_LOCATION: "Geçersiz karşılama konumu", - NO_VALID_PICKUP_LOCATION: "Geçerli teslim alma konumu mevcut değil", - DRAFT_ORDER_FETCH_FAILED: "Taslak sipariş alınamadı", - LINE_ITEMS_FETCH_FAILED: "Satır öğeleri alınamadı", - CURRENT_ORDER_FETCH_FAILED: "Mevcut taslak sipariş alınamadı", - DRAFT_ORDER_UPDATE_FAILED: "Taslak sipariş güncellenemedi", - DISCOUNT_APPLICATION_FAILED: "Kupon uygulanamadı", - CONTEXT_UNAVAILABLE: "Oturum veya veri kaynakları mevcut değil", - SHIPPING_LINES_UPDATE_FAILED: "Kargo satırları güncellenemedi", - ORDER_TOTALS_UPDATE_FAILED: "Sipariş toplamları güncellenemedi", - SHIPPING_METHOD_APPLICATION_FAILED: "Kargo yöntemi uygulanamadı", - SKU_FETCH_FAILED: "SKU'lar alınamadı", - SHIPPING_RATES_CALCULATION_FAILED: "Kargo ücretleri hesaplanamadı", - SHIPPING_METHOD_NOT_FOUND: "Kargo yöntemi bulunamadı", - SHIPPING_METHOD_REMOVAL_FAILED: "Kargo yöntemi kaldırılamadı", - SHIPPING_ADDRESS_REQUIRED: "Kargo adresi gerekli", - INVENTORY_VALIDATION_ERROR: "Envanter doğrulama hatası", - INSUFFICIENT_INVENTORY: "Yetersiz envanter", - INVALID_ORDER_STATUS: "Geçersiz sipariş durumu", - TRANSACTION_CREATION_ERROR: "İşlem oluşturma hatası", - TRANSACTION_PROCESSING_ERROR: "İşlem işleme hatası", - UNKNOWN_ERROR: "Bilinmeyen hata", - FULFILLMENT_CREATION_ERROR: "Karşılama oluşturma hatası", - TAX_CALCULATION_ERROR: "Vergi hesaplama hatası", - ADDRESS_VERIFICATION_ERROR: "Adres doğrulama hatası", - ADDRESS_MATCHES_ERROR: "Adres eşleşme hatası", - SHIPPING_CONFLICT_ERROR: "Kargo çakışma hatası", - SHIPPING_ERROR: "Genel kargo hatası", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Fiyat ayarlama hesaplama hatası", - ORDER_FETCH_ERROR: "Sipariş alma hatası", - DRAFT_ORDER_UPDATE_ERROR: "Taslak sipariş güncelleme hatası", - DISCOUNT_APPLICATION_ERROR: "Kupon uygulama hatası", - DRAFT_ORDER_OPEN_ERROR: "Taslak sipariş açma hatası", - ORDER_UPDATE_ERROR: "Sipariş güncelleme hatası", - CATALOG_FETCH_ERROR: "Katalog alma hatası", - STORE_ID_NOT_FOUND: "Mağaza ID'si bulunamadı", - ORDER_NOT_DRAFT: "Sipariş taslak durumunda değil", - NO_LINE_ITEMS: "Hiç ürün bulunamadı", - BAD_USER_INPUT: "Geçersiz kullanıcı girişi", - MISSING_SHIPPING_ADDRESS: "Teslimat adresi gerekli", - MISSING_REQUIRED_FIELD: "Zorunlu alan eksik", - CATALOG_API_ERROR: "Katalog servisi hatası", - TAX_SERVICE_UNAVAILABLE: "Vergi servisi kullanılamıyor", - SHIPPING_SERVICE_UNAVAILABLE: "Kargo servisi kullanılamıyor", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Fiyat ayarlama servisi kullanılamıyor", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: "Fiyat ayarlamaları hesaplanamadı", - SERVICE_UNAVAILABLE: "Servis geçici olarak kullanılamıyor", - RATE_LIMITED: "Çok fazla istek, lütfen daha sonra tekrar deneyin", - TIMEOUT: "İstek zaman aşımına uğradı", - INTERNAL_ERROR: "Sunucu içi hatası", - SHIPPING_POSTAL_CODE_REQUIRED: "Kargo posta kodu gerekli", - SHIPPING_COUNTRY_CODE_REQUIRED: "Kargo ülke kodu gerekli", - SHIPPING_METHOD_REQUIRED: "Kargo yöntemi gerekli", - SHIPPING_ADDRESS_VERIFICATION_FAILED: "Kargo adresi doğrulaması başarısız", - BILLING_ADDRESS_VERIFICATION_FAILED: "Fatura adresi doğrulaması başarısız", - }, + general: { + optional: 'isteğe bağlı', + notes: 'Notlar', + quantity: 'Miktar', + free: 'ÜCRETSİZ', + closed: 'Kapalı', + apply: 'Uygula', + checkoutDisabled: 'Ödeme işlemi şu anda devre dışı. Yaşanan rahatsızlık için özür dileriz.', + }, + contact: { + title: 'İletişim', + description: '', + email: 'E-posta', + }, + pickup: { + title: 'Mağazadan Teslim Alma', + description: + 'Belirlediğiniz teslim alma saatini karşılamak için her türlü çaba gösterilecektir. Gerçek teslim alma saatleri değişebilir.', + location: 'Teslim Alma Yeri', + date: 'Teslim Alma Tarihi', + time: 'Tercih Edilen Teslim Alma Saati', + selectStore: 'Bir mağaza konumu seçin', + selectDate: 'Bir tarih seçin', + selectTime: 'Bir teslim alma saati seçin', + storeHours: 'Mağaza Saatleri', + seeDetails: 'Detayları görüntüle', + noTimeSlots: 'Seçilen tarih için uygun zaman dilimi bulunmamaktadır. Lütfen başka bir tarih seçin.', + hoursDisplayed: 'Saatler yerel saat diliminizde gösterilmektedir.', + storeOperatesIn: 'Mağaza {timezone} saat diliminde çalışmaktadır.', + asap: 'EN KISA SÜREDE', + hour: 'saat', + hours: 'saat', + minutes: 'dakika', + searchCountry: 'Ülke ara...', + noCountryFound: 'Ülke bulunamadı.', + }, + days: { + sunday: 'Pazar', + monday: 'Pazartesi', + tuesday: 'Salı', + wednesday: 'Çarşamba', + thursday: 'Perşembe', + friday: 'Cuma', + saturday: 'Cumartesi', + }, + delivery: { + title: 'Teslimat', + method: 'Teslimat yöntemi', + shipping: 'Kargo', + shipToAddress: 'Adresinize kargo gönderin', + localPickup: 'Mağazadan Teslim Alma', + pickupFromStore: 'Mağaza konumundan teslim alın', + }, + tips: { + title: 'Bahşiş ekleyin', + noTip: 'Bahşiş Yok', + customAmount: 'Özel Tutar', + customTipAmount: 'Özel Bahşiş Tutarı', + placeholder: '₺0,00', + }, + shipping: { + title: 'Kargo', + description: 'Kargo adresi', + method: 'Kargo yöntemi', + noShippingMethodAddress: 'Mevcut kargo yöntemlerini görmek için adresinizi girin.', + noShippingMethods: 'Kargo yöntemi bulunamadı.', + phone: 'Telefon Numarası', + country: 'Ülke', + selectCountry: 'Ülke seçin', + searchCountry: 'Ülke ara...', + noCountryFound: 'Ülke bulunamadı', + firstName: 'Ad', + lastName: 'Soyad', + address1: 'Adres', + address2: 'Daire, apartman vb. (isteğe bağlı)', + city: 'Şehir', + region: 'İl/Bölge', + postalCode: 'Posta Kodu', + notesPlaceholder: 'Notlar veya özel talimatlar', + addressSuggestion: 'Şunu mu demek istediniz', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'Kargo çıkış adresi sağlanmamış.', + }, + billing: { + title: 'Faturalama', + description: 'Faturalama açıklaması', + }, + payment: { + title: 'Ödeme', + description: 'Tüm ödemeler güvenli ve şifrelidir.', + billingAddress: { + title: 'Fatura Adresi', + description: 'Fatura adresinizi girin.', + useShippingAddress: 'Kargo adresini fatura adresi olarak kullan', + }, + methods: { + creditCard: 'Kredi veya Banka Kartı', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Çevrimdışı ödemeler', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Kullanılabilir ödeme yöntemi yok', + cardNumber: 'Kart numarası', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Son kullanma tarihi (AA / YY)', + securityCode: 'Güvenlik kodu', + cvvPlaceholder: 'CVV', + nameOnCard: 'Kart üzerindeki isim', + payNow: 'Şimdi öde', + standardShipping: 'Standart Kargo', + cardDetails: 'Kart detayları', + payWithApplePay: 'Apple Pay ile öde', + expirationDatePlaceholder: 'AA / YY', + failedToInitializePayment: 'Ödeme başlatılamadı.', + orderTotal: 'Sipariş Toplamı', + subtotal: 'Ara Toplam', + tax: 'Vergi', + shipping: 'Kargo', + discount: 'Kupon', + processingPayment: 'Ödeme işleniyor...', + completingOrder: 'Sipariş tamamlanıyor...', + completeOrder: 'Siparişinizi tamamlayın', + freePayment: 'Ücretsiz siparişinizi tamamlayın', + }, + phone: { + placeholder: '(212) 555-1234', + searchCountry: 'Ülke ara...', + noCountryFound: 'Ülke bulunamadı.', + }, + discounts: { + placeholder: 'Kupon kodu', + enterCode: 'Kupon kodu girin', + apply: 'Uygula', + alreadyApplied: 'Bu kupon kodu zaten uygulanmış', + failedToApply: 'Kupon kodu uygulanamadı', + enterCodeValidation: 'Lütfen bir kupon kodu girin', + }, + totals: { + subtotal: 'Ara Toplam', + discount: 'İndirim', + shipping: 'Kargo', + tip: 'Bahşiş', + estimatedTaxes: 'Tahmini vergiler', + totalDue: 'Ödenecek Toplam', + orderSummary: 'Sipariş Özeti', + itemCount: 'ürün', + noItems: 'Ürün yok', + }, + lineItems: { + note: 'Not:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Adres', + suggestions: 'Öneriler', + }, + form: { + useFormFieldError: 'useFormField içinde kullanılmalıdır', + }, + pagination: { + ariaLabel: 'sayfalama', + previousPageAriaLabel: 'Önceki sayfaya git', + previous: 'Önceki', + nextPageAriaLabel: 'Sonraki sayfaya git', + next: 'Sonraki', + morePages: 'Daha fazla sayfa', + }, + sidebar: { + useSidebarError: 'useSidebar bir SidebarProvider içinde kullanılmalıdır.', + toggleSidebar: 'Kenar Çubuğunu Aç/Kapat', + }, + accessibility: { + payWithApplePay: 'Apple Pay ile öde', + applePayLogo: 'Apple Pay Logosu', + close: 'Kapat', + additionalTipOptions: 'Ek bahşiş seçenekleri', + breadcrumb: 'içerik haritası', + more: 'Daha fazla', + previousSlide: 'Önceki slayt', + nextSlide: 'Sonraki slayt', + }, + }, + errors: { + failedToGetAccessToken: 'Erişim belirteci alınamadı', + invalidEnvironment: 'Geçersiz ortam', + noPublicAccessToken: 'Genel erişim belirteci sağlanmamış', + noSessionToken: 'Oturum belirteci veya kimliği sağlanmamış', + errorCreatingSession: 'Ödeme oturumu oluşturma hatası:', + orderIdRequired: 'Sipariş kimliği gerekli', + errorTrackingEvent: 'Olay izleme hatası', + errorInTrackingSubscriber: 'İzleme abonesi hatası', + useTrackingProviderError: 'useTracking bir TrackingProvider içinde kullanılmalıdır', + usePoyntCollectProviderError: 'usePoyntCollect bir PoyntCollectProvider içinde kullanılmalıdır', + useSquareProviderError: 'useSquare bir SquareProvider içinde kullanılmalıdır', + errorProcessingPayment: 'Ödeme işleme hatası', + stripeConfigMissing: 'Stripe yapılandırması eksik. Lütfen kurulumunuzu kontrol edin.', + paymentSuccessful: 'Ödeme başarılı', + paymentFailed: 'Ödeme başarısız', + paypalConfigMissing: 'PayPal yapılandırması eksik. Lütfen kurulumunuzu kontrol edin.', + stripeNotReady: 'Stripe hazır değil', + cardElementNotFound: 'CardElement bulunamadı', + errorProcessingCardPayment: 'Kart ödemesi işleme hatası.', + errorProcessingExpressPayment: 'Hızlı ödeme işleme hatası.', + failedToInitializePayment: 'Ödeme başlatılamadı.', + invalidPhoneNumber: 'geçersiz telefon numarası', + }, + validation: { + phoneRequired: 'Telefon numarası gerekli', + emailRequired: 'E-posta girin', + emailInvalid: 'Geçerli bir e-posta girin', + phoneTooLong: 'Telefon numarası çok uzun', + invalidShippingAddress: 'Geçersiz kargo adresi', + invalidBillingAddress: 'Geçersiz fatura adresi', + selectPaymentMethod: 'Bir ödeme yöntemi seçin', + enterValidBillingPhone: 'Geçerli bir fatura telefon numarası girin', + enterValidShippingPhone: 'Geçerli bir kargo telefon numarası girin', + enterFirstName: 'Bir ad girin', + enterLastName: 'Bir soyad girin', + enterAddress: 'Bir adres girin', + enterCity: 'Bir şehir girin', + enterZipCode: 'Bir posta kodu girin', + enterZipPostalCode: 'Bir posta kodu girin', + selectState: 'Bir il/eyalet seçin', + selectCountry: 'Bir ülke seçin', + enterCountry: 'Bir ülke girin', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Sunucu hatası', + SESSION_NOT_FOUND: 'Oturum bulunamadı', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Ödeme oturumu alınamadı', + CHECKOUT_SESSION_NOT_FOUND: 'Ödeme oturumu bulunamadı', + CHECKOUT_SESSION_FETCH_ERROR: 'Genel ödeme oturumu alma hatası', + DRAFT_ORDER_NOT_FOUND: 'Sipariş bulunamadı', + CHECKOUT_SESSION_CREATION_FAILED: 'Ödeme oturumu oluşturulamadı', + CREATED_SESSION_DATA_NOT_FOUND: 'Oluşturulan oturum verisi bulunamadı', + CHECKOUT_SESSION_CREATION_ERROR: 'Genel ödeme oturumu oluşturma hatası', + CHECKOUT_SESSION_UPDATE_FAILED: 'Ödeme oturumu güncellenemedi', + UPDATED_SESSION_NOT_FOUND: 'Güncellenmiş oturum bulunamadı', + CHECKOUT_SESSION_UPDATE_ERROR: 'Genel ödeme oturumu güncelleme hatası', + ORDER_API_NOT_FOUND: 'Sipariş API veri kaynağı bulunamadı', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Sipariş alınamadı', + DATA_SOURCES_NOT_FOUND: 'Veri kaynakları bulunamadı', + TRANSACTION_API_NOT_FOUND: 'İşlem API veri kaynağı bulunamadı', + TRANSACTION_PROCESSING_FAILED: 'İşlem işlenemedi', + TRANSACTION_CREATION_FAILED: 'İşlem bulunamadı veya oluşturulamadı', + ORDER_OPENING_FAILED: 'Sipariş açılamadı', + INVALID_FULFILLMENT_LOCATION: 'Geçersiz karşılama konumu', + NO_VALID_PICKUP_LOCATION: 'Geçerli teslim alma konumu mevcut değil', + DRAFT_ORDER_FETCH_FAILED: 'Sipariş alınamadı', + LINE_ITEMS_FETCH_FAILED: 'Satır öğeleri alınamadı', + CURRENT_ORDER_FETCH_FAILED: 'Mevcut sipariş alınamadı', + DRAFT_ORDER_UPDATE_FAILED: 'Sipariş güncellenemedi', + DISCOUNT_APPLICATION_FAILED: 'Kupon uygulanamadı', + CONTEXT_UNAVAILABLE: 'Oturum veya veri kaynakları mevcut değil', + SHIPPING_LINES_UPDATE_FAILED: 'Kargo satırları güncellenemedi', + ORDER_TOTALS_UPDATE_FAILED: 'Sipariş toplamları güncellenemedi', + ORDER_TOTAL_CALCULATION_FAILED: 'Sipariş toplamları hesaplanamadı', + SHIPPING_METHOD_APPLICATION_FAILED: 'Kargo yöntemi uygulanamadı', + SKU_FETCH_FAILED: "SKU'lar alınamadı", + SHIPPING_RATES_CALCULATION_FAILED: 'Kargo ücretleri hesaplanamadı', + SHIPPING_METHOD_NOT_FOUND: 'Kargo yöntemi bulunamadı', + SHIPPING_METHOD_REMOVAL_FAILED: 'Kargo yöntemi kaldırılamadı', + SHIPPING_ADDRESS_REQUIRED: 'Kargo adresi gerekli', + INVENTORY_VALIDATION_ERROR: 'Envanter doğrulama hatası', + INSUFFICIENT_INVENTORY: 'Yetersiz envanter', + INVALID_ORDER_STATUS: 'Geçersiz sipariş durumu', + TRANSACTION_CREATION_ERROR: 'İşlem oluşturma hatası', + TRANSACTION_PROCESSING_ERROR: 'İşlem işleme hatası', + UNKNOWN_ERROR: 'Bilinmeyen hata', + FULFILLMENT_CREATION_ERROR: 'Karşılama oluşturma hatası', + TAX_CALCULATION_ERROR: 'Vergi hesaplama hatası', + ADDRESS_VERIFICATION_ERROR: 'Adres doğrulama hatası', + ADDRESS_MATCHES_ERROR: 'Adres eşleşme hatası', + SHIPPING_CONFLICT_ERROR: 'Kargo çakışma hatası', + SHIPPING_ERROR: 'Genel kargo hatası', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Fiyat ayarlama hesaplama hatası', + ORDER_FETCH_ERROR: 'Sipariş alma hatası', + DRAFT_ORDER_UPDATE_ERROR: 'Sipariş güncelleme hatası', + DISCOUNT_APPLICATION_ERROR: 'Kupon uygulama hatası', + DRAFT_ORDER_OPEN_ERROR: 'Sipariş açma hatası', + ORDER_UPDATE_ERROR: 'Sipariş güncelleme hatası', + CATALOG_FETCH_ERROR: 'Katalog alma hatası', + STORE_ID_NOT_FOUND: "Mağaza ID'si bulunamadı", + ORDER_NOT_DRAFT: 'Sipariş geçerli durumunda değil', + NO_LINE_ITEMS: 'Hiç ürün bulunamadı', + BAD_USER_INPUT: 'Geçersiz kullanıcı girişi', + MISSING_SHIPPING_ADDRESS: 'Teslimat adresi gerekli', + MISSING_REQUIRED_FIELD: 'Zorunlu alan eksik', + CATALOG_API_ERROR: 'Katalog servisi hatası', + TAX_SERVICE_UNAVAILABLE: 'Vergi servisi kullanılamıyor', + SHIPPING_SERVICE_UNAVAILABLE: 'Kargo servisi kullanılamıyor', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Fiyat ayarlama servisi kullanılamıyor', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Fiyat ayarlamaları hesaplanamadı', + SERVICE_UNAVAILABLE: 'Servis geçici olarak kullanılamıyor', + RATE_LIMITED: 'Çok fazla istek, lütfen daha sonra tekrar deneyin', + TIMEOUT: 'İstek zaman aşımına uğradı', + INTERNAL_ERROR: 'Sunucu içi hatası', + SHIPPING_POSTAL_CODE_REQUIRED: 'Kargo posta kodu gerekli', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Kargo ülke kodu gerekli', + SHIPPING_METHOD_REQUIRED: 'Kargo yöntemi gerekli', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Kargo adresi doğrulaması başarısız', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Fatura adresi doğrulaması başarısız', + MISSING_SHIPPING_INFO: 'Kargo adresi veya yöntemi uygulanamadı', + DEPENDENCY_ERROR: 'Şu anda siparişinizi işleme alamıyoruz. Lütfen bir dakika bekleyin ve tekrar deneyin', + }, }; diff --git a/packages/localizations/src/viVn.ts b/packages/localizations/src/viVn.ts index 138e65d6..5ed68633 100644 --- a/packages/localizations/src/viVn.ts +++ b/packages/localizations/src/viVn.ts @@ -1,316 +1,317 @@ export const viVn = { - general: { - optional: "tùy chọn", - notes: "Ghi chú", - quantity: "Số lượng", - free: "MIỄN PHÍ", - closed: "Đóng cửa", - apply: "Áp dụng", - checkoutDisabled: - "Thanh toán hiện tại đang bị vô hiệu hóa. Chúng tôi xin lỗi vì sự bất tiện này.", - }, - contact: { - title: "Liên hệ", - description: "", - email: "Email", - }, - pickup: { - title: "Nhận hàng tại cửa hàng", - description: - "Chúng tôi sẽ cố gắng hết sức để đáp ứng thời gian nhận hàng mong muốn của bạn. Thời gian nhận hàng thực tế có thể thay đổi.", - location: "Địa điểm nhận hàng", - date: "Ngày nhận hàng", - time: "Thời gian nhận hàng ưa thích", - selectStore: "Chọn một địa điểm cửa hàng", - selectDate: "Chọn ngày", - selectTime: "Chọn thời gian nhận hàng", - storeHours: "Giờ mở cửa", - seeDetails: "Xem chi tiết", - noTimeSlots: - "Không có khung thời gian nào trong ngày đã chọn. Vui lòng chọn ngày khác.", - hoursDisplayed: "Giờ hiển thị theo múi giờ địa phương của bạn.", - storeOperatesIn: "Cửa hàng hoạt động trong múi giờ {timezone}.", - asap: "CÀNG SỚM CÀNG TỐT", - hour: "giờ", - hours: "giờ", - minutes: "phút", - searchCountry: "Tìm kiếm quốc gia...", - noCountryFound: "Không tìm thấy quốc gia.", - }, - days: { - sunday: "Chủ nhật", - monday: "Thứ hai", - tuesday: "Thứ ba", - wednesday: "Thứ tư", - thursday: "Thứ năm", - friday: "Thứ sáu", - saturday: "Thứ bảy", - }, - delivery: { - title: "Giao hàng", - method: "Phương thức giao hàng", - shipping: "Vận chuyển", - shipToAddress: "Giao đến địa chỉ của bạn", - localPickup: "Nhận hàng tại cửa hàng", - pickupFromStore: "Nhận tại địa điểm cửa hàng", - }, - tips: { - title: "Thêm tiền tip", - noTip: "Không tip", - customAmount: "Số tiền tùy chỉnh", - customTipAmount: "Số tiền tip tùy chỉnh", - placeholder: "0₫", - }, - shipping: { - title: "Vận chuyển", - description: "Địa chỉ giao hàng", - method: "Phương thức vận chuyển", - noShippingMethodAddress: - "Nhập địa chỉ của bạn để xem các phương thức vận chuyển có sẵn.", - noShippingMethods: "Không tìm thấy phương thức vận chuyển nào.", - phone: "Số điện thoại", - country: "Quốc gia", - selectCountry: "Chọn quốc gia", - searchCountry: "Tìm kiếm quốc gia...", - noCountryFound: "Không tìm thấy quốc gia", - firstName: "Tên", - lastName: "Họ", - address1: "Địa chỉ", - address2: "Căn hộ, tầng, v.v. (tùy chọn)", - city: "Thành phố", - region: "Tỉnh/Thành phố", - postalCode: "Mã bưu điện", - notesPlaceholder: "Ghi chú hoặc hướng dẫn đặc biệt", - addressSuggestion: "Ý bạn có phải là", - addressSuggestionEnd: "?", - noShippingOriginAddress: "Không có địa chỉ gốc vận chuyển được cung cấp.", - }, - billing: { - title: "Thanh toán", - description: "Mô tả thanh toán", - }, - payment: { - title: "Thanh toán", - description: "Tất cả thanh toán đều được bảo mật và mã hóa.", - billingAddress: { - title: "Địa chỉ thanh toán", - description: "Nhập địa chỉ thanh toán của bạn.", - useShippingAddress: "Sử dụng địa chỉ giao hàng làm địa chỉ thanh toán", - }, - methods: { - creditCard: "Thẻ tín dụng hoặc thẻ ghi nợ", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "Thanh toán ngoại tuyến", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "Không có phương thức thanh toán nào", - cardNumber: "Số thẻ", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "Ngày hết hạn (MM / YY)", - securityCode: "Mã bảo mật", - cvvPlaceholder: "CVV", - nameOnCard: "Tên trên thẻ", - payNow: "Thanh toán ngay", - standardShipping: "Vận chuyển tiêu chuẩn", - cardDetails: "Chi tiết thẻ", - payWithApplePay: "Thanh toán bằng Apple Pay", - expirationDatePlaceholder: "MM / YY", - failedToInitializePayment: "Không thể khởi tạo thanh toán.", - orderTotal: "Tổng đơn hàng", - subtotal: "Tạm tính", - tax: "Thuế", - shipping: "Vận chuyển", - discount: "Phiếu giảm giá", - processingPayment: "Đang xử lý thanh toán...", - completingOrder: "Đang hoàn tất đơn hàng...", - freePayment: "Hoàn tất đơn hàng miễn phí của bạn", - }, - phone: { - placeholder: "(84) 123-456-789", - searchCountry: "Tìm kiếm quốc gia...", - noCountryFound: "Không tìm thấy quốc gia.", - }, - discounts: { - placeholder: "Mã phiếu giảm giá", - enterCode: "Nhập mã phiếu giảm giá", - apply: "Áp dụng", - alreadyApplied: "Mã phiếu giảm giá này đã được áp dụng", - failedToApply: "Không thể áp dụng mã phiếu giảm giá", - enterCodeValidation: "Vui lòng nhập mã phiếu giảm giá", - }, - totals: { - subtotal: "Tạm tính", - discount: "Giảm giá", - shipping: "Vận chuyển", - tip: "Tip", - estimatedTaxes: "Thuế ước tính", - totalDue: "Tổng cộng", - orderSummary: "Tóm tắt đơn hàng", - itemCount: "sản phẩm", - noItems: "Không có sản phẩm", - }, - lineItems: { - note: "Ghi chú:", - }, - ui: { - autocomplete: { - addressPlaceholder: "Địa chỉ", - suggestions: "Gợi ý", - }, - form: { - useFormFieldError: "useFormField phải được sử dụng trong ", - }, - pagination: { - ariaLabel: "phân trang", - previousPageAriaLabel: "Đi đến trang trước", - previous: "Trước", - nextPageAriaLabel: "Đi đến trang tiếp theo", - next: "Tiếp theo", - morePages: "Thêm trang", - }, - sidebar: { - useSidebarError: "useSidebar phải được sử dụng trong SidebarProvider.", - toggleSidebar: "Bật/Tắt thanh bên", - }, - accessibility: { - payWithApplePay: "Thanh toán bằng Apple Pay", - applePayLogo: "Logo Apple Pay", - }, - }, - errors: { - failedToGetAccessToken: "Không thể lấy mã truy cập", - invalidEnvironment: "Môi trường không hợp lệ", - noPublicAccessToken: "Không có mã truy cập công khai được cung cấp", - noSessionToken: "Không có mã phiên hoặc ID được cung cấp", - errorCreatingSession: "Lỗi tạo phiên thanh toán:", - orderIdRequired: "ID đơn hàng là bắt buộc", - errorTrackingEvent: "Lỗi theo dõi sự kiện", - errorInTrackingSubscriber: "Lỗi trong người đăng ký theo dõi", - useTrackingProviderError: - "useTracking phải được sử dụng trong TrackingProvider", - usePoyntCollectProviderError: - "usePoyntCollect phải được sử dụng trong PoyntCollectProvider", - useSquareProviderError: "useSquare phải được sử dụng trong SquareProvider", - errorProcessingPayment: "Lỗi xử lý thanh toán", - stripeConfigMissing: - "Cấu hình Stripe bị thiếu. Vui lòng kiểm tra thiết lập của bạn.", - paymentSuccessful: "Thanh toán thành công", - paymentFailed: "Thanh toán thất bại", - paypalConfigMissing: - "Cấu hình PayPal bị thiếu. Vui lòng kiểm tra thiết lập của bạn.", - stripeNotReady: "Stripe chưa sẵn sàng", - cardElementNotFound: "Không tìm thấy CardElement", - errorProcessingCardPayment: "Lỗi xử lý thanh toán thẻ.", - errorProcessingExpressPayment: "Lỗi xử lý thanh toán nhanh.", - failedToInitializePayment: "Không thể khởi tạo thanh toán.", - invalidPhoneNumber: "số điện thoại không hợp lệ", - }, - validation: { - phoneRequired: "Số điện thoại là bắt buộc", - emailRequired: "Nhập email", - emailInvalid: "Nhập email hợp lệ", - phoneTooLong: "Số điện thoại quá dài", - invalidShippingAddress: "Địa chỉ giao hàng không hợp lệ", - invalidBillingAddress: "Địa chỉ thanh toán không hợp lệ", - selectPaymentMethod: "Chọn phương thức thanh toán", - enterValidBillingPhone: "Nhập số điện thoại thanh toán hợp lệ", - enterValidShippingPhone: "Nhập số điện thoại giao hàng hợp lệ", - enterFirstName: "Nhập tên", - enterLastName: "Nhập họ", - enterAddress: "Nhập địa chỉ", - enterCity: "Nhập thành phố", - enterZipCode: "Nhập mã ZIP", - enterZipPostalCode: "Nhập mã ZIP / bưu điện", - selectState: "Chọn tỉnh/thành phố", - selectCountry: "Chọn quốc gia", - enterCountry: "Nhập quốc gia", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "Lỗi máy chủ", - SESSION_NOT_FOUND: "Không tìm thấy phiên", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "Không thể truy xuất phiên thanh toán", - CHECKOUT_SESSION_NOT_FOUND: "Không tìm thấy phiên thanh toán", - CHECKOUT_SESSION_FETCH_ERROR: "Lỗi truy xuất phiên thanh toán chung", - DRAFT_ORDER_NOT_FOUND: "Không tìm thấy đơn hàng nháp", - CHECKOUT_SESSION_CREATION_FAILED: "Không thể tạo phiên thanh toán", - CREATED_SESSION_DATA_NOT_FOUND: "Không tìm thấy dữ liệu phiên đã tạo", - CHECKOUT_SESSION_CREATION_ERROR: "Lỗi tạo phiên thanh toán chung", - CHECKOUT_SESSION_UPDATE_FAILED: "Không thể cập nhật phiên thanh toán", - UPDATED_SESSION_NOT_FOUND: "Không tìm thấy phiên đã cập nhật", - CHECKOUT_SESSION_UPDATE_ERROR: "Lỗi cập nhật phiên thanh toán chung", - ORDER_API_NOT_FOUND: "Không tìm thấy nguồn dữ liệu API đơn hàng", - DRAFT_ORDER_RETRIEVAL_FAILED: "Không thể truy xuất đơn hàng nháp", - DATA_SOURCES_NOT_FOUND: "Không tìm thấy nguồn dữ liệu", - TRANSACTION_API_NOT_FOUND: "Không tìm thấy nguồn dữ liệu API giao dịch", - TRANSACTION_PROCESSING_FAILED: "Không thể xử lý giao dịch", - TRANSACTION_CREATION_FAILED: "Không thể tìm hoặc tạo giao dịch", - ORDER_OPENING_FAILED: "Không thể mở đơn hàng", - INVALID_FULFILLMENT_LOCATION: "Địa điểm thực hiện không hợp lệ", - NO_VALID_PICKUP_LOCATION: "Không có địa điểm nhận hàng hợp lệ", - DRAFT_ORDER_FETCH_FAILED: "Không thể tải đơn hàng nháp", - LINE_ITEMS_FETCH_FAILED: "Không thể tải các mặt hàng", - CURRENT_ORDER_FETCH_FAILED: "Không thể tải đơn hàng nháp hiện tại", - DRAFT_ORDER_UPDATE_FAILED: "Không thể cập nhật đơn hàng nháp", - DISCOUNT_APPLICATION_FAILED: "Không thể áp dụng phiếu giảm giá", - CONTEXT_UNAVAILABLE: "Phiên hoặc nguồn dữ liệu không có sẵn", - SHIPPING_LINES_UPDATE_FAILED: "Không thể cập nhật dòng vận chuyển", - ORDER_TOTALS_UPDATE_FAILED: "Không thể cập nhật tổng đơn hàng", - SHIPPING_METHOD_APPLICATION_FAILED: - "Không thể áp dụng phương thức vận chuyển", - SKU_FETCH_FAILED: "Không thể tải SKU", - SHIPPING_RATES_CALCULATION_FAILED: "Không thể tính phí vận chuyển", - SHIPPING_METHOD_NOT_FOUND: "Không tìm thấy phương thức vận chuyển", - SHIPPING_METHOD_REMOVAL_FAILED: "Không thể xóa phương thức vận chuyển", - SHIPPING_ADDRESS_REQUIRED: "Cần có địa chỉ giao hàng", - INVENTORY_VALIDATION_ERROR: "Lỗi xác thực hàng tồn kho", - INSUFFICIENT_INVENTORY: "Hàng tồn kho không đủ", - INVALID_ORDER_STATUS: "Trạng thái đơn hàng không hợp lệ", - TRANSACTION_CREATION_ERROR: "Lỗi tạo giao dịch", - TRANSACTION_PROCESSING_ERROR: "Lỗi xử lý giao dịch", - UNKNOWN_ERROR: "Lỗi không xác định", - FULFILLMENT_CREATION_ERROR: "Lỗi tạo thực hiện", - TAX_CALCULATION_ERROR: "Lỗi tính thuế", - ADDRESS_VERIFICATION_ERROR: "Lỗi xác minh địa chỉ", - ADDRESS_MATCHES_ERROR: "Lỗi khớp địa chỉ", - SHIPPING_CONFLICT_ERROR: "Lỗi xung đột vận chuyển", - SHIPPING_ERROR: "Lỗi vận chuyển chung", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "Lỗi tính điều chỉnh giá", - ORDER_FETCH_ERROR: "Lỗi tải đơn hàng", - DRAFT_ORDER_UPDATE_ERROR: "Lỗi cập nhật đơn hàng nháp", - DISCOUNT_APPLICATION_ERROR: "Lỗi áp dụng phiếu giảm giá", - DRAFT_ORDER_OPEN_ERROR: "Lỗi mở đơn hàng nháp", - ORDER_UPDATE_ERROR: "Lỗi cập nhật đơn hàng", - CATALOG_FETCH_ERROR: "Lỗi tải danh mục", - STORE_ID_NOT_FOUND: "Không tìm thấy ID cửa hàng", - ORDER_NOT_DRAFT: "Đơn hàng không ở trạng thái nháp", - NO_LINE_ITEMS: "Không tìm thấy sản phẩm nào", - BAD_USER_INPUT: "Dữ liệu đầu vào không hợp lệ", - MISSING_SHIPPING_ADDRESS: "Địa chỉ giao hàng là bắt buộc", - MISSING_REQUIRED_FIELD: "Thiếu trường bắt buộc", - CATALOG_API_ERROR: "Lỗi dịch vụ danh mục", - TAX_SERVICE_UNAVAILABLE: "Dịch vụ thuế không khả dụng", - SHIPPING_SERVICE_UNAVAILABLE: "Dịch vụ vận chuyển không khả dụng", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: - "Dịch vụ điều chỉnh giá không khả dụng", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: "Không thể tính toán điều chỉnh giá", - SERVICE_UNAVAILABLE: "Dịch vụ tạm thời không khả dụng", - RATE_LIMITED: "Quá nhiều yêu cầu, vui lòng thử lại sau", - TIMEOUT: "Yêu cầu hết thời gian chờ", - INTERNAL_ERROR: "Lỗi máy chủ nội bộ", - SHIPPING_POSTAL_CODE_REQUIRED: "Mã bưu điện giao hàng là bắt buộc", - SHIPPING_COUNTRY_CODE_REQUIRED: "Mã quốc gia giao hàng là bắt buộc", - SHIPPING_METHOD_REQUIRED: "Phương thức giao hàng là bắt buộc", - SHIPPING_ADDRESS_VERIFICATION_FAILED: "Xác minh địa chỉ giao hàng thất bại", - BILLING_ADDRESS_VERIFICATION_FAILED: "Xác minh địa chỉ thanh toán thất bại", - }, + general: { + optional: 'tùy chọn', + notes: 'Ghi chú', + quantity: 'Số lượng', + free: 'MIỄN PHÍ', + closed: 'Đóng cửa', + apply: 'Áp dụng', + checkoutDisabled: 'Thanh toán hiện tại đang bị vô hiệu hóa. Chúng tôi xin lỗi vì sự bất tiện này.', + }, + contact: { + title: 'Liên hệ', + description: '', + email: 'Email', + }, + pickup: { + title: 'Nhận hàng tại cửa hàng', + description: + 'Chúng tôi sẽ cố gắng hết sức để đáp ứng thời gian nhận hàng mong muốn của bạn. Thời gian nhận hàng thực tế có thể thay đổi.', + location: 'Địa điểm nhận hàng', + date: 'Ngày nhận hàng', + time: 'Thời gian nhận hàng ưa thích', + selectStore: 'Chọn một địa điểm cửa hàng', + selectDate: 'Chọn ngày', + selectTime: 'Chọn thời gian nhận hàng', + storeHours: 'Giờ mở cửa', + seeDetails: 'Xem chi tiết', + noTimeSlots: 'Không có khung thời gian nào trong ngày đã chọn. Vui lòng chọn ngày khác.', + hoursDisplayed: 'Giờ hiển thị theo múi giờ địa phương của bạn.', + storeOperatesIn: 'Cửa hàng hoạt động trong múi giờ {timezone}.', + asap: 'CÀNG SỚM CÀNG TỐT', + hour: 'giờ', + hours: 'giờ', + minutes: 'phút', + searchCountry: 'Tìm kiếm quốc gia...', + noCountryFound: 'Không tìm thấy quốc gia.', + }, + days: { + sunday: 'Chủ nhật', + monday: 'Thứ hai', + tuesday: 'Thứ ba', + wednesday: 'Thứ tư', + thursday: 'Thứ năm', + friday: 'Thứ sáu', + saturday: 'Thứ bảy', + }, + delivery: { + title: 'Giao hàng', + method: 'Phương thức giao hàng', + shipping: 'Vận chuyển', + shipToAddress: 'Giao đến địa chỉ của bạn', + localPickup: 'Nhận hàng tại cửa hàng', + pickupFromStore: 'Nhận tại địa điểm cửa hàng', + }, + tips: { + title: 'Thêm tiền tip', + noTip: 'Không tip', + customAmount: 'Số tiền tùy chỉnh', + customTipAmount: 'Số tiền tip tùy chỉnh', + placeholder: '0₫', + }, + shipping: { + title: 'Vận chuyển', + description: 'Địa chỉ giao hàng', + method: 'Phương thức vận chuyển', + noShippingMethodAddress: 'Nhập địa chỉ của bạn để xem các phương thức vận chuyển có sẵn.', + noShippingMethods: 'Không tìm thấy phương thức vận chuyển nào.', + phone: 'Số điện thoại', + country: 'Quốc gia', + selectCountry: 'Chọn quốc gia', + searchCountry: 'Tìm kiếm quốc gia...', + noCountryFound: 'Không tìm thấy quốc gia', + firstName: 'Tên', + lastName: 'Họ', + address1: 'Địa chỉ', + address2: 'Căn hộ, tầng, v.v. (tùy chọn)', + city: 'Thành phố', + region: 'Tỉnh/Thành phố', + postalCode: 'Mã bưu điện', + notesPlaceholder: 'Ghi chú hoặc hướng dẫn đặc biệt', + addressSuggestion: 'Ý bạn có phải là', + addressSuggestionEnd: '?', + noShippingOriginAddress: 'Không có địa chỉ gốc vận chuyển được cung cấp.', + }, + billing: { + title: 'Thanh toán', + description: 'Mô tả thanh toán', + }, + payment: { + title: 'Thanh toán', + description: 'Tất cả thanh toán đều được bảo mật và mã hóa.', + billingAddress: { + title: 'Địa chỉ thanh toán', + description: 'Nhập địa chỉ thanh toán của bạn.', + useShippingAddress: 'Sử dụng địa chỉ giao hàng làm địa chỉ thanh toán', + }, + methods: { + creditCard: 'Thẻ tín dụng hoặc thẻ ghi nợ', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: 'Thanh toán ngoại tuyến', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: 'Không có phương thức thanh toán nào', + cardNumber: 'Số thẻ', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: 'Ngày hết hạn (MM / YY)', + securityCode: 'Mã bảo mật', + cvvPlaceholder: 'CVV', + nameOnCard: 'Tên trên thẻ', + payNow: 'Thanh toán ngay', + standardShipping: 'Vận chuyển tiêu chuẩn', + cardDetails: 'Chi tiết thẻ', + payWithApplePay: 'Thanh toán bằng Apple Pay', + expirationDatePlaceholder: 'MM / YY', + failedToInitializePayment: 'Không thể khởi tạo thanh toán.', + orderTotal: 'Tổng đơn hàng', + subtotal: 'Tạm tính', + tax: 'Thuế', + shipping: 'Vận chuyển', + discount: 'Phiếu giảm giá', + processingPayment: 'Đang xử lý thanh toán...', + completingOrder: 'Đang hoàn tất đơn hàng...', + completeOrder: 'Hoàn tất đơn hàng của bạn', + freePayment: 'Hoàn tất đơn hàng miễn phí của bạn', + }, + phone: { + placeholder: '(84) 123-456-789', + searchCountry: 'Tìm kiếm quốc gia...', + noCountryFound: 'Không tìm thấy quốc gia.', + }, + discounts: { + placeholder: 'Mã phiếu giảm giá', + enterCode: 'Nhập mã phiếu giảm giá', + apply: 'Áp dụng', + alreadyApplied: 'Mã phiếu giảm giá này đã được áp dụng', + failedToApply: 'Không thể áp dụng mã phiếu giảm giá', + enterCodeValidation: 'Vui lòng nhập mã phiếu giảm giá', + }, + totals: { + subtotal: 'Tạm tính', + discount: 'Giảm giá', + shipping: 'Vận chuyển', + tip: 'Tip', + estimatedTaxes: 'Thuế ước tính', + totalDue: 'Tổng cộng', + orderSummary: 'Tóm tắt đơn hàng', + itemCount: 'sản phẩm', + noItems: 'Không có sản phẩm', + }, + lineItems: { + note: 'Ghi chú:', + }, + ui: { + autocomplete: { + addressPlaceholder: 'Địa chỉ', + suggestions: 'Gợi ý', + }, + form: { + useFormFieldError: 'useFormField phải được sử dụng trong ', + }, + pagination: { + ariaLabel: 'phân trang', + previousPageAriaLabel: 'Đi đến trang trước', + previous: 'Trước', + nextPageAriaLabel: 'Đi đến trang tiếp theo', + next: 'Tiếp theo', + morePages: 'Thêm trang', + }, + sidebar: { + useSidebarError: 'useSidebar phải được sử dụng trong SidebarProvider.', + toggleSidebar: 'Bật/Tắt thanh bên', + }, + accessibility: { + payWithApplePay: 'Thanh toán bằng Apple Pay', + applePayLogo: 'Logo Apple Pay', + close: 'Đóng', + additionalTipOptions: 'Tùy chọn tiền boa bổ sung', + breadcrumb: 'điều hướng breadcrumb', + more: 'Thêm', + previousSlide: 'Trang trước', + nextSlide: 'Trang tiếp theo', + }, + }, + errors: { + failedToGetAccessToken: 'Không thể lấy mã truy cập', + invalidEnvironment: 'Môi trường không hợp lệ', + noPublicAccessToken: 'Không có mã truy cập công khai được cung cấp', + noSessionToken: 'Không có mã phiên hoặc ID được cung cấp', + errorCreatingSession: 'Lỗi tạo phiên thanh toán:', + orderIdRequired: 'ID đơn hàng là bắt buộc', + errorTrackingEvent: 'Lỗi theo dõi sự kiện', + errorInTrackingSubscriber: 'Lỗi trong người đăng ký theo dõi', + useTrackingProviderError: 'useTracking phải được sử dụng trong TrackingProvider', + usePoyntCollectProviderError: 'usePoyntCollect phải được sử dụng trong PoyntCollectProvider', + useSquareProviderError: 'useSquare phải được sử dụng trong SquareProvider', + errorProcessingPayment: 'Lỗi xử lý thanh toán', + stripeConfigMissing: 'Cấu hình Stripe bị thiếu. Vui lòng kiểm tra thiết lập của bạn.', + paymentSuccessful: 'Thanh toán thành công', + paymentFailed: 'Thanh toán thất bại', + paypalConfigMissing: 'Cấu hình PayPal bị thiếu. Vui lòng kiểm tra thiết lập của bạn.', + stripeNotReady: 'Stripe chưa sẵn sàng', + cardElementNotFound: 'Không tìm thấy CardElement', + errorProcessingCardPayment: 'Lỗi xử lý thanh toán thẻ.', + errorProcessingExpressPayment: 'Lỗi xử lý thanh toán nhanh.', + failedToInitializePayment: 'Không thể khởi tạo thanh toán.', + invalidPhoneNumber: 'số điện thoại không hợp lệ', + }, + validation: { + phoneRequired: 'Số điện thoại là bắt buộc', + emailRequired: 'Nhập email', + emailInvalid: 'Nhập email hợp lệ', + phoneTooLong: 'Số điện thoại quá dài', + invalidShippingAddress: 'Địa chỉ giao hàng không hợp lệ', + invalidBillingAddress: 'Địa chỉ thanh toán không hợp lệ', + selectPaymentMethod: 'Chọn phương thức thanh toán', + enterValidBillingPhone: 'Nhập số điện thoại thanh toán hợp lệ', + enterValidShippingPhone: 'Nhập số điện thoại giao hàng hợp lệ', + enterFirstName: 'Nhập tên', + enterLastName: 'Nhập họ', + enterAddress: 'Nhập địa chỉ', + enterCity: 'Nhập thành phố', + enterZipCode: 'Nhập mã ZIP', + enterZipPostalCode: 'Nhập mã ZIP / bưu điện', + selectState: 'Chọn tỉnh/thành phố', + selectCountry: 'Chọn quốc gia', + enterCountry: 'Nhập quốc gia', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: 'Lỗi máy chủ', + SESSION_NOT_FOUND: 'Không tìm thấy phiên', + CHECKOUT_SESSION_RETRIEVAL_FAILED: 'Không thể truy xuất phiên thanh toán', + CHECKOUT_SESSION_NOT_FOUND: 'Không tìm thấy phiên thanh toán', + CHECKOUT_SESSION_FETCH_ERROR: 'Lỗi truy xuất phiên thanh toán chung', + DRAFT_ORDER_NOT_FOUND: 'Không tìm thấy đơn hàng', + CHECKOUT_SESSION_CREATION_FAILED: 'Không thể tạo phiên thanh toán', + CREATED_SESSION_DATA_NOT_FOUND: 'Không tìm thấy dữ liệu phiên đã tạo', + CHECKOUT_SESSION_CREATION_ERROR: 'Lỗi tạo phiên thanh toán chung', + CHECKOUT_SESSION_UPDATE_FAILED: 'Không thể cập nhật phiên thanh toán', + UPDATED_SESSION_NOT_FOUND: 'Không tìm thấy phiên đã cập nhật', + CHECKOUT_SESSION_UPDATE_ERROR: 'Lỗi cập nhật phiên thanh toán chung', + ORDER_API_NOT_FOUND: 'Không tìm thấy nguồn dữ liệu API đơn hàng', + DRAFT_ORDER_RETRIEVAL_FAILED: 'Không thể truy xuất đơn hàng', + DATA_SOURCES_NOT_FOUND: 'Không tìm thấy nguồn dữ liệu', + TRANSACTION_API_NOT_FOUND: 'Không tìm thấy nguồn dữ liệu API giao dịch', + TRANSACTION_PROCESSING_FAILED: 'Không thể xử lý giao dịch', + TRANSACTION_CREATION_FAILED: 'Không thể tìm hoặc tạo giao dịch', + ORDER_OPENING_FAILED: 'Không thể mở đơn hàng', + INVALID_FULFILLMENT_LOCATION: 'Địa điểm thực hiện không hợp lệ', + NO_VALID_PICKUP_LOCATION: 'Không có địa điểm nhận hàng hợp lệ', + DRAFT_ORDER_FETCH_FAILED: 'Không thể tải đơn hàng', + LINE_ITEMS_FETCH_FAILED: 'Không thể tải các mặt hàng', + CURRENT_ORDER_FETCH_FAILED: 'Không thể tải đơn hàng hiện tại', + DRAFT_ORDER_UPDATE_FAILED: 'Không thể cập nhật đơn hàng', + DISCOUNT_APPLICATION_FAILED: 'Không thể áp dụng phiếu giảm giá', + CONTEXT_UNAVAILABLE: 'Phiên hoặc nguồn dữ liệu không có sẵn', + SHIPPING_LINES_UPDATE_FAILED: 'Không thể cập nhật dòng vận chuyển', + ORDER_TOTALS_UPDATE_FAILED: 'Không thể cập nhật tổng đơn hàng', + ORDER_TOTAL_CALCULATION_FAILED: 'Không thể tính tổng đơn hàng', + SHIPPING_METHOD_APPLICATION_FAILED: 'Không thể áp dụng phương thức vận chuyển', + SKU_FETCH_FAILED: 'Không thể tải SKU', + SHIPPING_RATES_CALCULATION_FAILED: 'Không thể tính phí vận chuyển', + SHIPPING_METHOD_NOT_FOUND: 'Không tìm thấy phương thức vận chuyển', + SHIPPING_METHOD_REMOVAL_FAILED: 'Không thể xóa phương thức vận chuyển', + SHIPPING_ADDRESS_REQUIRED: 'Cần có địa chỉ giao hàng', + INVENTORY_VALIDATION_ERROR: 'Lỗi xác thực hàng tồn kho', + INSUFFICIENT_INVENTORY: 'Hàng tồn kho không đủ', + INVALID_ORDER_STATUS: 'Trạng thái đơn hàng không hợp lệ', + TRANSACTION_CREATION_ERROR: 'Lỗi tạo giao dịch', + TRANSACTION_PROCESSING_ERROR: 'Lỗi xử lý giao dịch', + UNKNOWN_ERROR: 'Lỗi không xác định', + FULFILLMENT_CREATION_ERROR: 'Lỗi tạo thực hiện', + TAX_CALCULATION_ERROR: 'Lỗi tính thuế', + ADDRESS_VERIFICATION_ERROR: 'Lỗi xác minh địa chỉ', + ADDRESS_MATCHES_ERROR: 'Lỗi khớp địa chỉ', + SHIPPING_CONFLICT_ERROR: 'Lỗi xung đột vận chuyển', + SHIPPING_ERROR: 'Lỗi vận chuyển chung', + PRICE_ADJUSTMENT_CALCULATION_ERROR: 'Lỗi tính điều chỉnh giá', + ORDER_FETCH_ERROR: 'Lỗi tải đơn hàng', + DRAFT_ORDER_UPDATE_ERROR: 'Lỗi cập nhật đơn hàng', + DISCOUNT_APPLICATION_ERROR: 'Lỗi áp dụng phiếu giảm giá', + DRAFT_ORDER_OPEN_ERROR: 'Lỗi mở đơn hàng', + ORDER_UPDATE_ERROR: 'Lỗi cập nhật đơn hàng', + CATALOG_FETCH_ERROR: 'Lỗi tải danh mục', + STORE_ID_NOT_FOUND: 'Không tìm thấy ID cửa hàng', + ORDER_NOT_DRAFT: 'Đơn hàng không ở trạng thái hợp lệ', + NO_LINE_ITEMS: 'Không tìm thấy sản phẩm nào', + BAD_USER_INPUT: 'Dữ liệu đầu vào không hợp lệ', + MISSING_SHIPPING_ADDRESS: 'Địa chỉ giao hàng là bắt buộc', + MISSING_REQUIRED_FIELD: 'Thiếu trường bắt buộc', + CATALOG_API_ERROR: 'Lỗi dịch vụ danh mục', + TAX_SERVICE_UNAVAILABLE: 'Dịch vụ thuế không khả dụng', + SHIPPING_SERVICE_UNAVAILABLE: 'Dịch vụ vận chuyển không khả dụng', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: 'Dịch vụ điều chỉnh giá không khả dụng', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: 'Không thể tính toán điều chỉnh giá', + SERVICE_UNAVAILABLE: 'Dịch vụ tạm thời không khả dụng', + RATE_LIMITED: 'Quá nhiều yêu cầu, vui lòng thử lại sau', + TIMEOUT: 'Yêu cầu hết thời gian chờ', + INTERNAL_ERROR: 'Lỗi máy chủ nội bộ', + SHIPPING_POSTAL_CODE_REQUIRED: 'Mã bưu điện giao hàng là bắt buộc', + SHIPPING_COUNTRY_CODE_REQUIRED: 'Mã quốc gia giao hàng là bắt buộc', + SHIPPING_METHOD_REQUIRED: 'Phương thức giao hàng là bắt buộc', + SHIPPING_ADDRESS_VERIFICATION_FAILED: 'Xác minh địa chỉ giao hàng thất bại', + BILLING_ADDRESS_VERIFICATION_FAILED: 'Xác minh địa chỉ thanh toán thất bại', + MISSING_SHIPPING_INFO: 'Địa chỉ hoặc phương thức giao hàng không thể áp dụng', + DEPENDENCY_ERROR: 'Chúng tôi không thể xử lý đơn hàng của bạn ngay bây giờ. Vui lòng đợi một chút và thử lại', + }, }; diff --git a/packages/localizations/src/zhCn.ts b/packages/localizations/src/zhCn.ts index 88660035..eb2521f1 100644 --- a/packages/localizations/src/zhCn.ts +++ b/packages/localizations/src/zhCn.ts @@ -1,307 +1,316 @@ export const zhCn = { - general: { - optional: "可选", - notes: "备注", - quantity: "数量", - free: "免费", - closed: "已关闭", - apply: "应用", - checkoutDisabled: "结账功能暂时不可用。为此造成的不便,我们深表歉意。", - }, - contact: { - title: "联系方式", - description: "", - email: "邮箱", - }, - pickup: { - title: "到店自提", - description: "我们将尽力满足您期望的取货时间。实际取货时间可能有所变化。", - location: "取货地点", - date: "取货日期", - time: "首选取货时间", - selectStore: "选择门店位置", - selectDate: "选择日期", - selectTime: "选择取货时间", - storeHours: "营业时间", - seeDetails: "查看详情", - noTimeSlots: "所选日期没有可用的时间段。请选择其他日期。", - hoursDisplayed: "显示时间为您所在的时区。", - storeOperatesIn: "门店营业时区为 {timezone}。", - asap: "尽快", - hour: "小时", - hours: "小时", - minutes: "分钟", - searchCountry: "搜索国家...", - noCountryFound: "未找到国家。", - }, - days: { - sunday: "星期日", - monday: "星期一", - tuesday: "星期二", - wednesday: "星期三", - thursday: "星期四", - friday: "星期五", - saturday: "星期六", - }, - delivery: { - title: "配送", - method: "配送方式", - shipping: "快递配送", - shipToAddress: "配送到您的地址", - localPickup: "到店自提", - pickupFromStore: "到门店取货", - }, - tips: { - title: "添加小费", - noTip: "无小费", - customAmount: "自定义金额", - customTipAmount: "自定义小费金额", - placeholder: "¥0.00", - }, - shipping: { - title: "配送", - description: "配送地址", - method: "配送方式", - noShippingMethodAddress: "请输入您的地址以查看可用的配送方式。", - noShippingMethods: "未找到配送方式。", - phone: "手机号码", - country: "国家", - selectCountry: "选择国家", - searchCountry: "搜索国家...", - noCountryFound: "未找到国家", - firstName: "名", - lastName: "姓", - address1: "地址", - address2: "公寓、套房等(可选)", - city: "城市", - region: "省/自治区/直辖市", - postalCode: "邮政编码", - notesPlaceholder: "备注或特殊说明", - addressSuggestion: "您是否指的是", - addressSuggestionEnd: "?", - noShippingOriginAddress: "未提供配送起始地址。", - }, - billing: { - title: "账单", - description: "账单说明", - }, - payment: { - title: "付款", - description: "所有付款均经过安全加密。", - billingAddress: { - title: "账单地址", - description: "请输入您的账单地址。", - useShippingAddress: "使用配送地址作为账单地址", - }, - methods: { - creditCard: "信用卡或储蓄卡", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "线下付款", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "暂无可用的付款方式", - cardNumber: "卡号", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "有效期(MM / YY)", - securityCode: "安全码", - cvvPlaceholder: "CVV", - nameOnCard: "持卡人姓名", - payNow: "立即付款", - standardShipping: "标准配送", - cardDetails: "卡片详情", - payWithApplePay: "使用 Apple Pay 付款", - expirationDatePlaceholder: "MM / YY", - failedToInitializePayment: "付款初始化失败。", - orderTotal: "订单总计", - subtotal: "小计", - tax: "税费", - shipping: "配送费", - discount: "优惠券", - processingPayment: "正在处理付款...", - completingOrder: "正在完成订单...", - freePayment: "完成您的免费订单", - }, - phone: { - placeholder: "13012345678", - searchCountry: "搜索国家...", - noCountryFound: "未找到国家。", - }, - discounts: { - placeholder: "优惠券代码", - enterCode: "输入优惠券代码", - apply: "应用", - alreadyApplied: "此优惠券代码已使用", - failedToApply: "优惠券代码使用失败", - enterCodeValidation: "请输入优惠券代码", - }, - totals: { - subtotal: "小计", - discount: "折扣", - shipping: "配送费", - tip: "小费", - estimatedTaxes: "预估税费", - totalDue: "应付总计", - orderSummary: "订单摘要", - itemCount: "件商品", - noItems: "无商品", - }, - lineItems: { - note: "备注:", - }, - ui: { - autocomplete: { - addressPlaceholder: "地址", - suggestions: "建议", - }, - form: { - useFormFieldError: "useFormField 应在 中使用", - }, - pagination: { - ariaLabel: "分页", - previousPageAriaLabel: "转到上一页", - previous: "上一页", - nextPageAriaLabel: "转到下一页", - next: "下一页", - morePages: "更多页面", - }, - sidebar: { - useSidebarError: "useSidebar 必须在 SidebarProvider 中使用。", - toggleSidebar: "切换侧边栏", - }, - accessibility: { - payWithApplePay: "使用 Apple Pay 付款", - applePayLogo: "Apple Pay 标志", - }, - }, - errors: { - failedToGetAccessToken: "获取访问令牌失败", - invalidEnvironment: "无效环境", - noPublicAccessToken: "未提供公共访问令牌", - noSessionToken: "未提供会话令牌或 ID", - errorCreatingSession: "创建结账会话时出错:", - orderIdRequired: "订单 ID 是必需的", - errorTrackingEvent: "跟踪事件出错", - errorInTrackingSubscriber: "跟踪订阅者出错", - useTrackingProviderError: "useTracking 必须在 TrackingProvider 中使用", - usePoyntCollectProviderError: - "usePoyntCollect 必须在 PoyntCollectProvider 中使用", - useSquareProviderError: "useSquare 必须在 SquareProvider 中使用", - errorProcessingPayment: "处理付款时出错", - stripeConfigMissing: "Stripe 配置缺失。请检查您的设置。", - paymentSuccessful: "付款成功", - paymentFailed: "付款失败", - paypalConfigMissing: "PayPal 配置缺失。请检查您的设置。", - stripeNotReady: "Stripe 未就绪", - cardElementNotFound: "未找到 CardElement", - errorProcessingCardPayment: "处理卡片付款时出错。", - errorProcessingExpressPayment: "处理快捷付款时出错。", - failedToInitializePayment: "付款初始化失败。", - invalidPhoneNumber: "手机号码无效", - }, - validation: { - phoneRequired: "手机号码是必需的", - emailRequired: "请输入邮箱", - emailInvalid: "请输入有效的邮箱", - phoneTooLong: "手机号码过长", - invalidShippingAddress: "配送地址无效", - invalidBillingAddress: "账单地址无效", - selectPaymentMethod: "选择付款方式", - enterValidBillingPhone: "请输入有效的账单手机号码", - enterValidShippingPhone: "请输入有效的配送手机号码", - enterFirstName: "请输入名", - enterLastName: "请输入姓", - enterAddress: "请输入地址", - enterCity: "请输入城市", - enterZipCode: "请输入邮政编码", - enterZipPostalCode: "请输入邮政编码", - selectState: "选择省份/地区", - selectCountry: "选择国家", - enterCountry: "请输入国家", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "服务器错误", - SESSION_NOT_FOUND: "会话未找到", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "获取结账会话失败", - CHECKOUT_SESSION_NOT_FOUND: "结账会话未找到", - CHECKOUT_SESSION_FETCH_ERROR: "结账会话获取错误", - DRAFT_ORDER_NOT_FOUND: "草稿订单未找到", - CHECKOUT_SESSION_CREATION_FAILED: "创建结账会话失败", - CREATED_SESSION_DATA_NOT_FOUND: "创建的会话数据未找到", - CHECKOUT_SESSION_CREATION_ERROR: "结账会话创建错误", - CHECKOUT_SESSION_UPDATE_FAILED: "更新结账会话失败", - UPDATED_SESSION_NOT_FOUND: "更新的会话未找到", - CHECKOUT_SESSION_UPDATE_ERROR: "结账会话更新错误", - ORDER_API_NOT_FOUND: "订单 API 数据源未找到", - DRAFT_ORDER_RETRIEVAL_FAILED: "获取草稿订单失败", - DATA_SOURCES_NOT_FOUND: "数据源未找到", - TRANSACTION_API_NOT_FOUND: "交易 API 数据源未找到", - TRANSACTION_PROCESSING_FAILED: "处理交易失败", - TRANSACTION_CREATION_FAILED: "查找或创建交易失败", - ORDER_OPENING_FAILED: "打开订单失败", - INVALID_FULFILLMENT_LOCATION: "履行地点无效", - NO_VALID_PICKUP_LOCATION: "没有有效的取货地点", - DRAFT_ORDER_FETCH_FAILED: "获取草稿订单失败", - LINE_ITEMS_FETCH_FAILED: "获取订单项目失败", - CURRENT_ORDER_FETCH_FAILED: "获取当前草稿订单失败", - DRAFT_ORDER_UPDATE_FAILED: "更新草稿订单失败", - DISCOUNT_APPLICATION_FAILED: "应用优惠券失败", - CONTEXT_UNAVAILABLE: "会话或数据源不可用", - SHIPPING_LINES_UPDATE_FAILED: "更新配送线路失败", - ORDER_TOTALS_UPDATE_FAILED: "更新订单总计失败", - SHIPPING_METHOD_APPLICATION_FAILED: "应用配送方式失败", - SKU_FETCH_FAILED: "获取 SKU 失败", - SHIPPING_RATES_CALCULATION_FAILED: "计算配送费率失败", - SHIPPING_METHOD_NOT_FOUND: "配送方式未找到", - SHIPPING_METHOD_REMOVAL_FAILED: "移除配送方式失败", - SHIPPING_ADDRESS_REQUIRED: "需要配送地址", - INVENTORY_VALIDATION_ERROR: "库存验证错误", - INSUFFICIENT_INVENTORY: "库存不足", - INVALID_ORDER_STATUS: "订单状态无效", - TRANSACTION_CREATION_ERROR: "交易创建错误", - TRANSACTION_PROCESSING_ERROR: "交易处理错误", - UNKNOWN_ERROR: "未知错误", - FULFILLMENT_CREATION_ERROR: "履行创建错误", - TAX_CALCULATION_ERROR: "税费计算错误", - ADDRESS_VERIFICATION_ERROR: "地址验证错误", - ADDRESS_MATCHES_ERROR: "地址匹配错误", - SHIPPING_CONFLICT_ERROR: "配送冲突错误", - SHIPPING_ERROR: "配送错误", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "价格调整计算错误", - ORDER_FETCH_ERROR: "订单获取错误", - DRAFT_ORDER_UPDATE_ERROR: "草稿订单更新错误", - DISCOUNT_APPLICATION_ERROR: "优惠券应用错误", - DRAFT_ORDER_OPEN_ERROR: "草稿订单打开错误", - ORDER_UPDATE_ERROR: "订单更新错误", - CATALOG_FETCH_ERROR: "目录获取错误", - STORE_ID_NOT_FOUND: "未找到商店ID", - ORDER_NOT_DRAFT: "订单不处于草稿状态", - NO_LINE_ITEMS: "未找到商品", - BAD_USER_INPUT: "用户输入无效", - MISSING_SHIPPING_ADDRESS: "需要配送地址", - MISSING_REQUIRED_FIELD: "缺少必填字段", - CATALOG_API_ERROR: "目录服务错误", - TAX_SERVICE_UNAVAILABLE: "税务服务不可用", - SHIPPING_SERVICE_UNAVAILABLE: "配送服务不可用", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: "价格调整服务不可用", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: "价格调整计算失败", - SERVICE_UNAVAILABLE: "服务暂时不可用", - RATE_LIMITED: "请求过多,请稍后再试", - TIMEOUT: "请求超时", - INTERNAL_ERROR: "内部服务器错误", - SHIPPING_POSTAL_CODE_REQUIRED: "配送邮政编码是必需的", - SHIPPING_COUNTRY_CODE_REQUIRED: "配送国家代码是必需的", - SHIPPING_METHOD_REQUIRED: "配送方式是必需的", - SHIPPING_ADDRESS_VERIFICATION_FAILED: "配送地址验证失败", - BILLING_ADDRESS_VERIFICATION_FAILED: "账单地址验证失败", - }, + general: { + optional: '可选', + notes: '备注', + quantity: '数量', + free: '免费', + closed: '已关闭', + apply: '应用', + checkoutDisabled: '结账功能暂时不可用。为此造成的不便,我们深表歉意。', + }, + contact: { + title: '联系方式', + description: '', + email: '邮箱', + }, + pickup: { + title: '到店自提', + description: '我们将尽力满足您期望的取货时间。实际取货时间可能有所变化。', + location: '取货地点', + date: '取货日期', + time: '首选取货时间', + selectStore: '选择门店位置', + selectDate: '选择日期', + selectTime: '选择取货时间', + storeHours: '营业时间', + seeDetails: '查看详情', + noTimeSlots: '所选日期没有可用的时间段。请选择其他日期。', + hoursDisplayed: '显示时间为您所在的时区。', + storeOperatesIn: '门店营业时区为 {timezone}。', + asap: '尽快', + hour: '小时', + hours: '小时', + minutes: '分钟', + searchCountry: '搜索国家...', + noCountryFound: '未找到国家。', + }, + days: { + sunday: '星期日', + monday: '星期一', + tuesday: '星期二', + wednesday: '星期三', + thursday: '星期四', + friday: '星期五', + saturday: '星期六', + }, + delivery: { + title: '配送', + method: '配送方式', + shipping: '快递配送', + shipToAddress: '配送到您的地址', + localPickup: '到店自提', + pickupFromStore: '到门店取货', + }, + tips: { + title: '添加小费', + noTip: '无小费', + customAmount: '自定义金额', + customTipAmount: '自定义小费金额', + placeholder: '¥0.00', + }, + shipping: { + title: '配送', + description: '配送地址', + method: '配送方式', + noShippingMethodAddress: '请输入您的地址以查看可用的配送方式。', + noShippingMethods: '未找到配送方式。', + phone: '手机号码', + country: '国家', + selectCountry: '选择国家', + searchCountry: '搜索国家...', + noCountryFound: '未找到国家', + firstName: '名', + lastName: '姓', + address1: '地址', + address2: '公寓、套房等(可选)', + city: '城市', + region: '省/自治区/直辖市', + postalCode: '邮政编码', + notesPlaceholder: '备注或特殊说明', + addressSuggestion: '您是否指的是', + addressSuggestionEnd: '?', + noShippingOriginAddress: '未提供配送起始地址。', + }, + billing: { + title: '账单', + description: '账单说明', + }, + payment: { + title: '付款', + description: '所有付款均经过安全加密。', + billingAddress: { + title: '账单地址', + description: '请输入您的账单地址。', + useShippingAddress: '使用配送地址作为账单地址', + }, + methods: { + creditCard: '信用卡或储蓄卡', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: '线下付款', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: '暂无可用的付款方式', + cardNumber: '卡号', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: '有效期(MM / YY)', + securityCode: '安全码', + cvvPlaceholder: 'CVV', + nameOnCard: '持卡人姓名', + payNow: '立即付款', + standardShipping: '标准配送', + cardDetails: '卡片详情', + payWithApplePay: '使用 Apple Pay 付款', + expirationDatePlaceholder: 'MM / YY', + failedToInitializePayment: '付款初始化失败。', + orderTotal: '订单总计', + subtotal: '小计', + tax: '税费', + shipping: '配送费', + discount: '优惠券', + processingPayment: '正在处理付款...', + completingOrder: '正在完成订单...', + completeOrder: '完成您的订单', + freePayment: '完成您的免费订单', + }, + phone: { + placeholder: '13012345678', + searchCountry: '搜索国家...', + noCountryFound: '未找到国家。', + }, + discounts: { + placeholder: '优惠券代码', + enterCode: '输入优惠券代码', + apply: '应用', + alreadyApplied: '此优惠券代码已使用', + failedToApply: '优惠券代码使用失败', + enterCodeValidation: '请输入优惠券代码', + }, + totals: { + subtotal: '小计', + discount: '折扣', + shipping: '配送费', + tip: '小费', + estimatedTaxes: '预估税费', + totalDue: '应付总计', + orderSummary: '订单摘要', + itemCount: '件商品', + noItems: '无商品', + }, + lineItems: { + note: '备注:', + }, + ui: { + autocomplete: { + addressPlaceholder: '地址', + suggestions: '建议', + }, + form: { + useFormFieldError: 'useFormField 应在 中使用', + }, + pagination: { + ariaLabel: '分页', + previousPageAriaLabel: '转到上一页', + previous: '上一页', + nextPageAriaLabel: '转到下一页', + next: '下一页', + morePages: '更多页面', + }, + sidebar: { + useSidebarError: 'useSidebar 必须在 SidebarProvider 中使用。', + toggleSidebar: '切换侧边栏', + }, + accessibility: { + payWithApplePay: '使用 Apple Pay 付款', + applePayLogo: 'Apple Pay 标志', + close: '关闭', + additionalTipOptions: '其他小费选项', + breadcrumb: '面包屑导航', + more: '更多', + previousSlide: '上一张幻灯片', + nextSlide: '下一张幻灯片', + }, + }, + errors: { + failedToGetAccessToken: '获取访问令牌失败', + invalidEnvironment: '无效环境', + noPublicAccessToken: '未提供公共访问令牌', + noSessionToken: '未提供会话令牌或 ID', + errorCreatingSession: '创建结账会话时出错:', + orderIdRequired: '订单 ID 是必需的', + errorTrackingEvent: '跟踪事件出错', + errorInTrackingSubscriber: '跟踪订阅者出错', + useTrackingProviderError: 'useTracking 必须在 TrackingProvider 中使用', + usePoyntCollectProviderError: 'usePoyntCollect 必须在 PoyntCollectProvider 中使用', + useSquareProviderError: 'useSquare 必须在 SquareProvider 中使用', + errorProcessingPayment: '处理付款时出错', + stripeConfigMissing: 'Stripe 配置缺失。请检查您的设置。', + paymentSuccessful: '付款成功', + paymentFailed: '付款失败', + paypalConfigMissing: 'PayPal 配置缺失。请检查您的设置。', + stripeNotReady: 'Stripe 未就绪', + cardElementNotFound: '未找到 CardElement', + errorProcessingCardPayment: '处理卡片付款时出错。', + errorProcessingExpressPayment: '处理快捷付款时出错。', + failedToInitializePayment: '付款初始化失败。', + invalidPhoneNumber: '手机号码无效', + }, + validation: { + phoneRequired: '手机号码是必需的', + emailRequired: '请输入邮箱', + emailInvalid: '请输入有效的邮箱', + phoneTooLong: '手机号码过长', + invalidShippingAddress: '配送地址无效', + invalidBillingAddress: '账单地址无效', + selectPaymentMethod: '选择付款方式', + enterValidBillingPhone: '请输入有效的账单手机号码', + enterValidShippingPhone: '请输入有效的配送手机号码', + enterFirstName: '请输入名', + enterLastName: '请输入姓', + enterAddress: '请输入地址', + enterCity: '请输入城市', + enterZipCode: '请输入邮政编码', + enterZipPostalCode: '请输入邮政编码', + selectState: '选择省份/地区', + selectCountry: '选择国家', + enterCountry: '请输入国家', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: '服务器错误', + SESSION_NOT_FOUND: '会话未找到', + CHECKOUT_SESSION_RETRIEVAL_FAILED: '获取结账会话失败', + CHECKOUT_SESSION_NOT_FOUND: '结账会话未找到', + CHECKOUT_SESSION_FETCH_ERROR: '结账会话获取错误', + DRAFT_ORDER_NOT_FOUND: '订单未找到', + CHECKOUT_SESSION_CREATION_FAILED: '创建结账会话失败', + CREATED_SESSION_DATA_NOT_FOUND: '创建的会话数据未找到', + CHECKOUT_SESSION_CREATION_ERROR: '结账会话创建错误', + CHECKOUT_SESSION_UPDATE_FAILED: '更新结账会话失败', + UPDATED_SESSION_NOT_FOUND: '更新的会话未找到', + CHECKOUT_SESSION_UPDATE_ERROR: '结账会话更新错误', + ORDER_API_NOT_FOUND: '订单 API 数据源未找到', + DRAFT_ORDER_RETRIEVAL_FAILED: '获取订单失败', + DATA_SOURCES_NOT_FOUND: '数据源未找到', + TRANSACTION_API_NOT_FOUND: '交易 API 数据源未找到', + TRANSACTION_PROCESSING_FAILED: '处理交易失败', + TRANSACTION_CREATION_FAILED: '查找或创建交易失败', + ORDER_OPENING_FAILED: '打开订单失败', + INVALID_FULFILLMENT_LOCATION: '履行地点无效', + NO_VALID_PICKUP_LOCATION: '没有有效的取货地点', + DRAFT_ORDER_FETCH_FAILED: '获取订单失败', + LINE_ITEMS_FETCH_FAILED: '获取订单项目失败', + CURRENT_ORDER_FETCH_FAILED: '获取当前订单失败', + DRAFT_ORDER_UPDATE_FAILED: '更新订单失败', + DISCOUNT_APPLICATION_FAILED: '应用优惠券失败', + CONTEXT_UNAVAILABLE: '会话或数据源不可用', + SHIPPING_LINES_UPDATE_FAILED: '更新配送线路失败', + ORDER_TOTALS_UPDATE_FAILED: '更新订单总计失败', + ORDER_TOTAL_CALCULATION_FAILED: '计算订单总计失败', + SHIPPING_METHOD_APPLICATION_FAILED: '应用配送方式失败', + SKU_FETCH_FAILED: '获取 SKU 失败', + SHIPPING_RATES_CALCULATION_FAILED: '计算配送费率失败', + SHIPPING_METHOD_NOT_FOUND: '配送方式未找到', + SHIPPING_METHOD_REMOVAL_FAILED: '移除配送方式失败', + SHIPPING_ADDRESS_REQUIRED: '需要配送地址', + INVENTORY_VALIDATION_ERROR: '库存验证错误', + INSUFFICIENT_INVENTORY: '库存不足', + INVALID_ORDER_STATUS: '订单状态无效', + TRANSACTION_CREATION_ERROR: '交易创建错误', + TRANSACTION_PROCESSING_ERROR: '交易处理错误', + UNKNOWN_ERROR: '未知错误', + FULFILLMENT_CREATION_ERROR: '履行创建错误', + TAX_CALCULATION_ERROR: '税费计算错误', + ADDRESS_VERIFICATION_ERROR: '地址验证错误', + ADDRESS_MATCHES_ERROR: '地址匹配错误', + SHIPPING_CONFLICT_ERROR: '配送冲突错误', + SHIPPING_ERROR: '配送错误', + PRICE_ADJUSTMENT_CALCULATION_ERROR: '价格调整计算错误', + ORDER_FETCH_ERROR: '订单获取错误', + DRAFT_ORDER_UPDATE_ERROR: '订单更新错误', + DISCOUNT_APPLICATION_ERROR: '优惠券应用错误', + DRAFT_ORDER_OPEN_ERROR: '订单打开错误', + ORDER_UPDATE_ERROR: '订单更新错误', + CATALOG_FETCH_ERROR: '目录获取错误', + STORE_ID_NOT_FOUND: '未找到商店ID', + ORDER_NOT_DRAFT: '订单不处于有效状态', + NO_LINE_ITEMS: '未找到商品', + BAD_USER_INPUT: '用户输入无效', + MISSING_SHIPPING_ADDRESS: '需要配送地址', + MISSING_REQUIRED_FIELD: '缺少必填字段', + CATALOG_API_ERROR: '目录服务错误', + TAX_SERVICE_UNAVAILABLE: '税务服务不可用', + SHIPPING_SERVICE_UNAVAILABLE: '配送服务不可用', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: '价格调整服务不可用', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: '价格调整计算失败', + SERVICE_UNAVAILABLE: '服务暂时不可用', + RATE_LIMITED: '请求过多,请稍后再试', + TIMEOUT: '请求超时', + INTERNAL_ERROR: '内部服务器错误', + SHIPPING_POSTAL_CODE_REQUIRED: '配送邮政编码是必需的', + SHIPPING_COUNTRY_CODE_REQUIRED: '配送国家代码是必需的', + SHIPPING_METHOD_REQUIRED: '配送方式是必需的', + SHIPPING_ADDRESS_VERIFICATION_FAILED: '配送地址验证失败', + BILLING_ADDRESS_VERIFICATION_FAILED: '账单地址验证失败', + MISSING_SHIPPING_INFO: '配送地址或方式应用失败', + DEPENDENCY_ERROR: '我们目前无法处理您的订单。请稍等片刻再试', + }, }; diff --git a/packages/localizations/src/zhSg.ts b/packages/localizations/src/zhSg.ts index a696239e..84cd9c20 100644 --- a/packages/localizations/src/zhSg.ts +++ b/packages/localizations/src/zhSg.ts @@ -1,307 +1,316 @@ export const zhSg = { - general: { - optional: "可选", - notes: "备注", - quantity: "数量", - free: "免费", - closed: "已关闭", - apply: "应用", - checkoutDisabled: "结账目前不可用。给您带来不便,深表歉意。", - }, - contact: { - title: "联系信息", - description: "", - email: "电子邮箱", - }, - pickup: { - title: "门店自取", - description: "我们将尽力满足您的预期取货时间。实际取货时间可能有所不同。", - location: "取货地点", - date: "取货日期", - time: "首选取货时间", - selectStore: "选择门店地点", - selectDate: "选择日期", - selectTime: "选择取货时间", - storeHours: "营业时间", - seeDetails: "查看详情", - noTimeSlots: "所选日期没有可用的时间段。请选择其他日期。", - hoursDisplayed: "显示的时间为您当地时区。", - storeOperatesIn: "门店以 {timezone} 时区运营。", - asap: "尽快", - hour: "小时", - hours: "小时", - minutes: "分钟", - searchCountry: "搜索国家...", - noCountryFound: "未找到国家。", - }, - days: { - sunday: "星期日", - monday: "星期一", - tuesday: "星期二", - wednesday: "星期三", - thursday: "星期四", - friday: "星期五", - saturday: "星期六", - }, - delivery: { - title: "配送", - method: "配送方式", - shipping: "运送", - shipToAddress: "运送到您的地址", - localPickup: "门店自取", - pickupFromStore: "从门店地点取货", - }, - tips: { - title: "添加小费", - noTip: "无小费", - customAmount: "自定义金额", - customTipAmount: "自定义小费金额", - placeholder: "S$0.00", - }, - shipping: { - title: "运送", - description: "运送地址", - method: "运送方式", - noShippingMethodAddress: "输入您的地址以查看可用的运送方式。", - noShippingMethods: "未找到运送方式。", - phone: "电话号码", - country: "国家", - selectCountry: "选择国家", - searchCountry: "搜索国家...", - noCountryFound: "未找到国家", - firstName: "姓名", - lastName: "姓氏", - address1: "地址", - address2: "公寓、套房等(可选)", - city: "城市", - region: "州/省", - postalCode: "邮政编码", - notesPlaceholder: "备注或特殊说明", - addressSuggestion: "您是否意思是", - addressSuggestionEnd: "?", - noShippingOriginAddress: "未提供运送起始地址。", - }, - billing: { - title: "账单", - description: "账单描述", - }, - payment: { - title: "付款", - description: "所有付款都是安全且加密的。", - billingAddress: { - title: "账单地址", - description: "输入您的账单地址。", - useShippingAddress: "使用运送地址作为账单地址", - }, - methods: { - creditCard: "信用卡或借记卡", - paypal: "PayPal", - applePay: "Apple Pay", - googlePay: "Google Pay", - paze: "Paze", - offline: "线下付款", - }, - descriptions: { - creditCard: "", - paypal: "", - applePay: "", - googlePay: "", - paze: "", - offline: "", - }, - noMethodsAvailable: "无可用付款方式", - cardNumber: "卡号", - cardNumberPlaceholder: "1234 1234 1234 1234", - expirationDate: "有效期(MM / YY)", - securityCode: "安全码", - cvvPlaceholder: "CVV", - nameOnCard: "持卡人姓名", - payNow: "立即付款", - standardShipping: "标准运送", - cardDetails: "卡片详情", - payWithApplePay: "使用 Apple Pay 付款", - expirationDatePlaceholder: "MM / YY", - failedToInitializePayment: "付款初始化失败。", - orderTotal: "订单总额", - subtotal: "小计", - tax: "税费", - shipping: "运费", - discount: "优惠券", - processingPayment: "正在处理付款...", - completingOrder: "正在完成订单...", - freePayment: "完成您的免费订单", - }, - phone: { - placeholder: "+65 9123 4567", - searchCountry: "搜索国家...", - noCountryFound: "未找到国家。", - }, - discounts: { - placeholder: "优惠券代码", - enterCode: "输入优惠券代码", - apply: "应用", - alreadyApplied: "此优惠券代码已经应用", - failedToApply: "优惠券代码应用失败", - enterCodeValidation: "请输入优惠券代码", - }, - totals: { - subtotal: "小计", - discount: "折扣", - shipping: "运费", - tip: "小费", - estimatedTaxes: "预估税费", - totalDue: "应付总额", - orderSummary: "订单摘要", - itemCount: "件商品", - noItems: "无商品", - }, - lineItems: { - note: "备注:", - }, - ui: { - autocomplete: { - addressPlaceholder: "地址", - suggestions: "建议", - }, - form: { - useFormFieldError: "useFormField 应在 内使用", - }, - pagination: { - ariaLabel: "分页", - previousPageAriaLabel: "转到上一页", - previous: "上一页", - nextPageAriaLabel: "转到下一页", - next: "下一页", - morePages: "更多页面", - }, - sidebar: { - useSidebarError: "useSidebar 必须在 SidebarProvider 内使用。", - toggleSidebar: "切换侧边栏", - }, - accessibility: { - payWithApplePay: "使用 Apple Pay 付款", - applePayLogo: "Apple Pay 标志", - }, - }, - errors: { - failedToGetAccessToken: "获取访问令牌失败", - invalidEnvironment: "无效环境", - noPublicAccessToken: "未提供公共访问令牌", - noSessionToken: "未提供会话令牌或ID", - errorCreatingSession: "创建结账会话错误:", - orderIdRequired: "需要订单ID", - errorTrackingEvent: "跟踪事件错误", - errorInTrackingSubscriber: "跟踪订阅者错误", - useTrackingProviderError: "useTracking 必须在 TrackingProvider 内使用", - usePoyntCollectProviderError: - "usePoyntCollect 必须在 PoyntCollectProvider 内使用", - useSquareProviderError: "useSquare 必须在 SquareProvider 内使用", - errorProcessingPayment: "处理付款错误", - stripeConfigMissing: "Stripe 配置缺失。请检查您的设置。", - paymentSuccessful: "付款成功", - paymentFailed: "付款失败", - paypalConfigMissing: "PayPal 配置缺失。请检查您的设置。", - stripeNotReady: "Stripe 未就绪", - cardElementNotFound: "未找到 CardElement", - errorProcessingCardPayment: "处理卡片付款错误。", - errorProcessingExpressPayment: "处理快速付款错误。", - failedToInitializePayment: "付款初始化失败。", - invalidPhoneNumber: "无效电话号码", - }, - validation: { - phoneRequired: "电话号码必填", - emailRequired: "输入电子邮箱", - emailInvalid: "输入有效的电子邮箱", - phoneTooLong: "电话号码过长", - invalidShippingAddress: "无效运送地址", - invalidBillingAddress: "无效账单地址", - selectPaymentMethod: "选择付款方式", - enterValidBillingPhone: "输入有效的账单电话号码", - enterValidShippingPhone: "输入有效的运送电话号码", - enterFirstName: "输入姓名", - enterLastName: "输入姓氏", - enterAddress: "输入地址", - enterCity: "输入城市", - enterZipCode: "输入邮政编码", - enterZipPostalCode: "输入邮政编码", - selectState: "选择州/省", - selectCountry: "选择国家", - enterCountry: "输入国家", - }, - apiErrors: { - INTERNAL_SERVER_ERROR: "服务器错误", - SESSION_NOT_FOUND: "会话未找到", - CHECKOUT_SESSION_RETRIEVAL_FAILED: "检索结账会话失败", - CHECKOUT_SESSION_NOT_FOUND: "结账会话未找到", - CHECKOUT_SESSION_FETCH_ERROR: "结账会话获取错误", - DRAFT_ORDER_NOT_FOUND: "草稿订单未找到", - CHECKOUT_SESSION_CREATION_FAILED: "创建结账会话失败", - CREATED_SESSION_DATA_NOT_FOUND: "创建的会话数据未找到", - CHECKOUT_SESSION_CREATION_ERROR: "结账会话创建错误", - CHECKOUT_SESSION_UPDATE_FAILED: "更新结账会话失败", - UPDATED_SESSION_NOT_FOUND: "更新的会话未找到", - CHECKOUT_SESSION_UPDATE_ERROR: "结账会话更新错误", - ORDER_API_NOT_FOUND: "订单API数据源未找到", - DRAFT_ORDER_RETRIEVAL_FAILED: "检索草稿订单失败", - DATA_SOURCES_NOT_FOUND: "数据源未找到", - TRANSACTION_API_NOT_FOUND: "交易API数据源未找到", - TRANSACTION_PROCESSING_FAILED: "处理交易失败", - TRANSACTION_CREATION_FAILED: "查找或创建交易失败", - ORDER_OPENING_FAILED: "打开订单失败", - INVALID_FULFILLMENT_LOCATION: "无效的履行地点", - NO_VALID_PICKUP_LOCATION: "无有效的取货地点", - DRAFT_ORDER_FETCH_FAILED: "获取草稿订单失败", - LINE_ITEMS_FETCH_FAILED: "获取行项目失败", - CURRENT_ORDER_FETCH_FAILED: "获取当前草稿订单失败", - DRAFT_ORDER_UPDATE_FAILED: "更新草稿订单失败", - DISCOUNT_APPLICATION_FAILED: "应用优惠券失败", - CONTEXT_UNAVAILABLE: "会话或数据源不可用", - SHIPPING_LINES_UPDATE_FAILED: "更新运送行失败", - ORDER_TOTALS_UPDATE_FAILED: "更新订单总额失败", - SHIPPING_METHOD_APPLICATION_FAILED: "应用运送方式失败", - SKU_FETCH_FAILED: "获取SKU失败", - SHIPPING_RATES_CALCULATION_FAILED: "计算运送费率失败", - SHIPPING_METHOD_NOT_FOUND: "运送方式未找到", - SHIPPING_METHOD_REMOVAL_FAILED: "移除运送方式失败", - SHIPPING_ADDRESS_REQUIRED: "需要运送地址", - INVENTORY_VALIDATION_ERROR: "库存验证错误", - INSUFFICIENT_INVENTORY: "库存不足", - INVALID_ORDER_STATUS: "无效订单状态", - TRANSACTION_CREATION_ERROR: "交易创建错误", - TRANSACTION_PROCESSING_ERROR: "交易处理错误", - UNKNOWN_ERROR: "未知错误", - FULFILLMENT_CREATION_ERROR: "履行创建错误", - TAX_CALCULATION_ERROR: "税费计算错误", - ADDRESS_VERIFICATION_ERROR: "地址验证错误", - ADDRESS_MATCHES_ERROR: "地址匹配错误", - SHIPPING_CONFLICT_ERROR: "运送冲突错误", - SHIPPING_ERROR: "运送错误", - PRICE_ADJUSTMENT_CALCULATION_ERROR: "价格调整计算错误", - ORDER_FETCH_ERROR: "订单获取错误", - DRAFT_ORDER_UPDATE_ERROR: "草稿订单更新错误", - DISCOUNT_APPLICATION_ERROR: "优惠券应用错误", - DRAFT_ORDER_OPEN_ERROR: "草稿订单打开错误", - ORDER_UPDATE_ERROR: "订单更新错误", - CATALOG_FETCH_ERROR: "目录获取错误", - STORE_ID_NOT_FOUND: "未找到商店ID", - ORDER_NOT_DRAFT: "订单不处于草稿状态", - NO_LINE_ITEMS: "未找到商品", - BAD_USER_INPUT: "用户输入无效", - MISSING_SHIPPING_ADDRESS: "需要运送地址", - MISSING_REQUIRED_FIELD: "缺少必填字段", - CATALOG_API_ERROR: "目录服务错误", - TAX_SERVICE_UNAVAILABLE: "税务服务不可用", - SHIPPING_SERVICE_UNAVAILABLE: "运送服务不可用", - PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: "价格调整服务不可用", - PRICE_ADJUSTMENTS_CALCULATION_FAILED: "价格调整计算失败", - SERVICE_UNAVAILABLE: "服务暂时不可用", - RATE_LIMITED: "请求过多,请稍后再试", - TIMEOUT: "请求超时", - INTERNAL_ERROR: "内部服务器错误", - SHIPPING_POSTAL_CODE_REQUIRED: "配送邮政编码是必需的", - SHIPPING_COUNTRY_CODE_REQUIRED: "配送国家代码是必需的", - SHIPPING_METHOD_REQUIRED: "配送方式是必需的", - SHIPPING_ADDRESS_VERIFICATION_FAILED: "配送地址验证失败", - BILLING_ADDRESS_VERIFICATION_FAILED: "账单地址验证失败", - }, + general: { + optional: '可选', + notes: '备注', + quantity: '数量', + free: '免费', + closed: '已关闭', + apply: '应用', + checkoutDisabled: '结账目前不可用。给您带来不便,深表歉意。', + }, + contact: { + title: '联系信息', + description: '', + email: '电子邮箱', + }, + pickup: { + title: '门店自取', + description: '我们将尽力满足您的预期取货时间。实际取货时间可能有所不同。', + location: '取货地点', + date: '取货日期', + time: '首选取货时间', + selectStore: '选择门店地点', + selectDate: '选择日期', + selectTime: '选择取货时间', + storeHours: '营业时间', + seeDetails: '查看详情', + noTimeSlots: '所选日期没有可用的时间段。请选择其他日期。', + hoursDisplayed: '显示的时间为您当地时区。', + storeOperatesIn: '门店以 {timezone} 时区运营。', + asap: '尽快', + hour: '小时', + hours: '小时', + minutes: '分钟', + searchCountry: '搜索国家...', + noCountryFound: '未找到国家。', + }, + days: { + sunday: '星期日', + monday: '星期一', + tuesday: '星期二', + wednesday: '星期三', + thursday: '星期四', + friday: '星期五', + saturday: '星期六', + }, + delivery: { + title: '配送', + method: '配送方式', + shipping: '运送', + shipToAddress: '运送到您的地址', + localPickup: '门店自取', + pickupFromStore: '从门店地点取货', + }, + tips: { + title: '添加小费', + noTip: '无小费', + customAmount: '自定义金额', + customTipAmount: '自定义小费金额', + placeholder: 'S$0.00', + }, + shipping: { + title: '运送', + description: '运送地址', + method: '运送方式', + noShippingMethodAddress: '输入您的地址以查看可用的运送方式。', + noShippingMethods: '未找到运送方式。', + phone: '电话号码', + country: '国家', + selectCountry: '选择国家', + searchCountry: '搜索国家...', + noCountryFound: '未找到国家', + firstName: '姓名', + lastName: '姓氏', + address1: '地址', + address2: '公寓、套房等(可选)', + city: '城市', + region: '州/省', + postalCode: '邮政编码', + notesPlaceholder: '备注或特殊说明', + addressSuggestion: '您是否意思是', + addressSuggestionEnd: '?', + noShippingOriginAddress: '未提供运送起始地址。', + }, + billing: { + title: '账单', + description: '账单描述', + }, + payment: { + title: '付款', + description: '所有付款都是安全且加密的。', + billingAddress: { + title: '账单地址', + description: '输入您的账单地址。', + useShippingAddress: '使用运送地址作为账单地址', + }, + methods: { + creditCard: '信用卡或借记卡', + paypal: 'PayPal', + applePay: 'Apple Pay', + googlePay: 'Google Pay', + paze: 'Paze', + offline: '线下付款', + }, + descriptions: { + creditCard: '', + paypal: '', + applePay: '', + googlePay: '', + paze: '', + offline: '', + }, + noMethodsAvailable: '无可用付款方式', + cardNumber: '卡号', + cardNumberPlaceholder: '1234 1234 1234 1234', + expirationDate: '有效期(MM / YY)', + securityCode: '安全码', + cvvPlaceholder: 'CVV', + nameOnCard: '持卡人姓名', + payNow: '立即付款', + standardShipping: '标准运送', + cardDetails: '卡片详情', + payWithApplePay: '使用 Apple Pay 付款', + expirationDatePlaceholder: 'MM / YY', + failedToInitializePayment: '付款初始化失败。', + orderTotal: '订单总额', + subtotal: '小计', + tax: '税费', + shipping: '运费', + discount: '优惠券', + processingPayment: '正在处理付款...', + completingOrder: '正在完成订单...', + completeOrder: '完成您的订单', + freePayment: '完成您的免费订单', + }, + phone: { + placeholder: '+65 9123 4567', + searchCountry: '搜索国家...', + noCountryFound: '未找到国家。', + }, + discounts: { + placeholder: '优惠券代码', + enterCode: '输入优惠券代码', + apply: '应用', + alreadyApplied: '此优惠券代码已经应用', + failedToApply: '优惠券代码应用失败', + enterCodeValidation: '请输入优惠券代码', + }, + totals: { + subtotal: '小计', + discount: '折扣', + shipping: '运费', + tip: '小费', + estimatedTaxes: '预估税费', + totalDue: '应付总额', + orderSummary: '订单摘要', + itemCount: '件商品', + noItems: '无商品', + }, + lineItems: { + note: '备注:', + }, + ui: { + autocomplete: { + addressPlaceholder: '地址', + suggestions: '建议', + }, + form: { + useFormFieldError: 'useFormField 应在 内使用', + }, + pagination: { + ariaLabel: '分页', + previousPageAriaLabel: '转到上一页', + previous: '上一页', + nextPageAriaLabel: '转到下一页', + next: '下一页', + morePages: '更多页面', + }, + sidebar: { + useSidebarError: 'useSidebar 必须在 SidebarProvider 内使用。', + toggleSidebar: '切换侧边栏', + }, + accessibility: { + payWithApplePay: '使用 Apple Pay 付款', + applePayLogo: 'Apple Pay 标志', + close: '关闭', + additionalTipOptions: '其他小费选项', + breadcrumb: '面包屑导航', + more: '更多', + previousSlide: '上一张幻灯片', + nextSlide: '下一张幻灯片', + }, + }, + errors: { + failedToGetAccessToken: '获取访问令牌失败', + invalidEnvironment: '无效环境', + noPublicAccessToken: '未提供公共访问令牌', + noSessionToken: '未提供会话令牌或ID', + errorCreatingSession: '创建结账会话错误:', + orderIdRequired: '需要订单ID', + errorTrackingEvent: '跟踪事件错误', + errorInTrackingSubscriber: '跟踪订阅者错误', + useTrackingProviderError: 'useTracking 必须在 TrackingProvider 内使用', + usePoyntCollectProviderError: 'usePoyntCollect 必须在 PoyntCollectProvider 内使用', + useSquareProviderError: 'useSquare 必须在 SquareProvider 内使用', + errorProcessingPayment: '处理付款错误', + stripeConfigMissing: 'Stripe 配置缺失。请检查您的设置。', + paymentSuccessful: '付款成功', + paymentFailed: '付款失败', + paypalConfigMissing: 'PayPal 配置缺失。请检查您的设置。', + stripeNotReady: 'Stripe 未就绪', + cardElementNotFound: '未找到 CardElement', + errorProcessingCardPayment: '处理卡片付款错误。', + errorProcessingExpressPayment: '处理快速付款错误。', + failedToInitializePayment: '付款初始化失败。', + invalidPhoneNumber: '无效电话号码', + }, + validation: { + phoneRequired: '电话号码必填', + emailRequired: '输入电子邮箱', + emailInvalid: '输入有效的电子邮箱', + phoneTooLong: '电话号码过长', + invalidShippingAddress: '无效运送地址', + invalidBillingAddress: '无效账单地址', + selectPaymentMethod: '选择付款方式', + enterValidBillingPhone: '输入有效的账单电话号码', + enterValidShippingPhone: '输入有效的运送电话号码', + enterFirstName: '输入姓名', + enterLastName: '输入姓氏', + enterAddress: '输入地址', + enterCity: '输入城市', + enterZipCode: '输入邮政编码', + enterZipPostalCode: '输入邮政编码', + selectState: '选择州/省', + selectCountry: '选择国家', + enterCountry: '输入国家', + }, + apiErrors: { + INTERNAL_SERVER_ERROR: '服务器错误', + SESSION_NOT_FOUND: '会话未找到', + CHECKOUT_SESSION_RETRIEVAL_FAILED: '检索结账会话失败', + CHECKOUT_SESSION_NOT_FOUND: '结账会话未找到', + CHECKOUT_SESSION_FETCH_ERROR: '结账会话获取错误', + DRAFT_ORDER_NOT_FOUND: '订单未找到', + CHECKOUT_SESSION_CREATION_FAILED: '创建结账会话失败', + CREATED_SESSION_DATA_NOT_FOUND: '创建的会话数据未找到', + CHECKOUT_SESSION_CREATION_ERROR: '结账会话创建错误', + CHECKOUT_SESSION_UPDATE_FAILED: '更新结账会话失败', + UPDATED_SESSION_NOT_FOUND: '更新的会话未找到', + CHECKOUT_SESSION_UPDATE_ERROR: '结账会话更新错误', + ORDER_API_NOT_FOUND: '订单API数据源未找到', + DRAFT_ORDER_RETRIEVAL_FAILED: '检索订单失败', + DATA_SOURCES_NOT_FOUND: '数据源未找到', + TRANSACTION_API_NOT_FOUND: '交易API数据源未找到', + TRANSACTION_PROCESSING_FAILED: '处理交易失败', + TRANSACTION_CREATION_FAILED: '查找或创建交易失败', + ORDER_OPENING_FAILED: '打开订单失败', + INVALID_FULFILLMENT_LOCATION: '无效的履行地点', + NO_VALID_PICKUP_LOCATION: '无有效的取货地点', + DRAFT_ORDER_FETCH_FAILED: '获取订单失败', + LINE_ITEMS_FETCH_FAILED: '获取行项目失败', + CURRENT_ORDER_FETCH_FAILED: '获取当前订单失败', + DRAFT_ORDER_UPDATE_FAILED: '更新订单失败', + DISCOUNT_APPLICATION_FAILED: '应用优惠券失败', + CONTEXT_UNAVAILABLE: '会话或数据源不可用', + SHIPPING_LINES_UPDATE_FAILED: '更新运送行失败', + ORDER_TOTALS_UPDATE_FAILED: '更新订单总额失败', + ORDER_TOTAL_CALCULATION_FAILED: '计算订单总额失败', + SHIPPING_METHOD_APPLICATION_FAILED: '应用运送方式失败', + SKU_FETCH_FAILED: '获取SKU失败', + SHIPPING_RATES_CALCULATION_FAILED: '计算运送费率失败', + SHIPPING_METHOD_NOT_FOUND: '运送方式未找到', + SHIPPING_METHOD_REMOVAL_FAILED: '移除运送方式失败', + SHIPPING_ADDRESS_REQUIRED: '需要运送地址', + INVENTORY_VALIDATION_ERROR: '库存验证错误', + INSUFFICIENT_INVENTORY: '库存不足', + INVALID_ORDER_STATUS: '无效订单状态', + TRANSACTION_CREATION_ERROR: '交易创建错误', + TRANSACTION_PROCESSING_ERROR: '交易处理错误', + UNKNOWN_ERROR: '未知错误', + FULFILLMENT_CREATION_ERROR: '履行创建错误', + TAX_CALCULATION_ERROR: '税费计算错误', + ADDRESS_VERIFICATION_ERROR: '地址验证错误', + ADDRESS_MATCHES_ERROR: '地址匹配错误', + SHIPPING_CONFLICT_ERROR: '运送冲突错误', + SHIPPING_ERROR: '运送错误', + PRICE_ADJUSTMENT_CALCULATION_ERROR: '价格调整计算错误', + ORDER_FETCH_ERROR: '订单获取错误', + DRAFT_ORDER_UPDATE_ERROR: '订单更新错误', + DISCOUNT_APPLICATION_ERROR: '优惠券应用错误', + DRAFT_ORDER_OPEN_ERROR: '订单打开错误', + ORDER_UPDATE_ERROR: '订单更新错误', + CATALOG_FETCH_ERROR: '目录获取错误', + STORE_ID_NOT_FOUND: '未找到商店ID', + ORDER_NOT_DRAFT: '订单不处于有效状态', + NO_LINE_ITEMS: '未找到商品', + BAD_USER_INPUT: '用户输入无效', + MISSING_SHIPPING_ADDRESS: '需要运送地址', + MISSING_REQUIRED_FIELD: '缺少必填字段', + CATALOG_API_ERROR: '目录服务错误', + TAX_SERVICE_UNAVAILABLE: '税务服务不可用', + SHIPPING_SERVICE_UNAVAILABLE: '运送服务不可用', + PRICE_ADJUSTMENTS_SERVICE_UNAVAILABLE: '价格调整服务不可用', + PRICE_ADJUSTMENTS_CALCULATION_FAILED: '价格调整计算失败', + SERVICE_UNAVAILABLE: '服务暂时不可用', + RATE_LIMITED: '请求过多,请稍后再试', + TIMEOUT: '请求超时', + INTERNAL_ERROR: '内部服务器错误', + SHIPPING_POSTAL_CODE_REQUIRED: '配送邮政编码是必需的', + SHIPPING_COUNTRY_CODE_REQUIRED: '配送国家代码是必需的', + SHIPPING_METHOD_REQUIRED: '配送方式是必需的', + SHIPPING_ADDRESS_VERIFICATION_FAILED: '配送地址验证失败', + BILLING_ADDRESS_VERIFICATION_FAILED: '账单地址验证失败', + MISSING_SHIPPING_INFO: '配送地址或方式应用失败', + DEPENDENCY_ERROR: '我們目前無法處理您的訂單。請稍等片刻再試', + }, }; diff --git a/packages/localizations/tsconfig.json b/packages/localizations/tsconfig.json index d8fb4de5..4aa7398c 100644 --- a/packages/localizations/tsconfig.json +++ b/packages/localizations/tsconfig.json @@ -1,15 +1,15 @@ { - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "isolatedModules": true, - "resolveJsonModule": true, - "moduleResolution": "bundler", - "module": "ESNext", - "target": "ES2022", - "lib": ["ES2022"], - "allowImportingTsExtensions": true, - "noEmit": true, - "skipLibCheck": true - }, - "exclude": ["node_modules"] + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "isolatedModules": true, + "resolveJsonModule": true, + "moduleResolution": "bundler", + "module": "ESNext", + "target": "ES2022", + "lib": ["ES2022"], + "allowImportingTsExtensions": true, + "noEmit": true, + "skipLibCheck": true + }, + "exclude": ["node_modules"] } diff --git a/packages/localizations/tsdown.config.ts b/packages/localizations/tsdown.config.ts index 898d0522..f757c551 100644 --- a/packages/localizations/tsdown.config.ts +++ b/packages/localizations/tsdown.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'tsdown' +import { defineConfig } from 'tsdown'; export default defineConfig({ entry: ['src/index.ts'], plugins: [], tsconfig: './tsconfig.json', - dts: true -}) + dts: true, +}); diff --git a/packages/react/biome.json b/packages/react/biome.json new file mode 100644 index 00000000..1867c26d --- /dev/null +++ b/packages/react/biome.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.3.2/schema.json", + "extends": ["biome-config-godaddy/biome.json"], + "files": { + "includes": ["**/*", "!!**/src/globals.css"] + }, + "linter": { + "rules": { + "correctness": { + "useUniqueElementIds": "off" + } + } + } +} diff --git a/packages/react/components.json b/packages/react/components.json index aa6f496d..bcf503b7 100644 --- a/packages/react/components.json +++ b/packages/react/components.json @@ -1,21 +1,21 @@ { - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "", - "css": "src/index.css", - "baseColor": "neutral", - "cssVariables": true, - "prefix": "gd" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - }, - "iconLibrary": "lucide" + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "gd" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" } diff --git a/packages/react/package.json b/packages/react/package.json index a2daee31..6bfd523a 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,115 +1,114 @@ { - "name": "@godaddy/react", - "private": false, - "version": "1.0.0", - "type": "module", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], - "exports": { - "./package.json": "./package.json", - "./styles.css": "./dist/index.css", - "./server": { - "types": "./dist/server.d.ts", - "import": "./dist/server.js", - "default": "./dist/server.js" - }, - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "default": "./dist/index.js" - } - }, - "typesVersions": { - "*": { - "server": [ - "./dist/server.d.ts" - ], - "*": [ - "./dist/index.d.ts" - ] - } - }, - "scripts": { - "dev": "tsdown --watch", - "dev:https": "tsdown --watch", - "build": "tsdown && pnpm dlx @tailwindcss/cli -i ./src/globals.css -o ./dist/index.css --minify", - "preview": "vite preview", - "typecheck": "tsc --noEmit", - "test": "vitest run" - }, - "peerDependencies": { - "@tanstack/react-query": ">=5", - "react": "18.x || 19.x", - "react-dom": "18.x || 19.x", - "react-hook-form": ">=7" - }, - "dependencies": { - "@floating-ui/react": "^0.27.8", - "@godaddy/localizations": "workspace:*", - "@hookform/resolvers": "^4.0.0", - "@paypal/react-paypal-js": "^8.8.3", - "@radix-ui/react-accordion": "^1.2.3", - "@radix-ui/react-alert-dialog": "^1.1.6", - "@radix-ui/react-aspect-ratio": "^1.1.2", - "@radix-ui/react-avatar": "^1.1.3", - "@radix-ui/react-checkbox": "^1.1.4", - "@radix-ui/react-collapsible": "^1.1.3", - "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-popover": "^1.1.6", - "@radix-ui/react-radio-group": "^1.2.3", - "@radix-ui/react-scroll-area": "^1.2.3", - "@radix-ui/react-select": "^2.1.6", - "@radix-ui/react-separator": "^1.1.2", - "@radix-ui/react-slot": "^1.1.2", - "@radix-ui/react-switch": "^1.1.3", - "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-toggle": "^1.1.2", - "@radix-ui/react-toggle-group": "^1.1.2", - "@radix-ui/react-tooltip": "^1.1.8", - "@stripe/react-stripe-js": "^3.7.0", - "@stripe/stripe-js": "^7.3.1", - "@tailwindcss/cli": "^4.1.10", - "@tailwindcss/vite": "^4.1.4", - "@tanstack/react-pacer": "^0.2.0", - "@tanstack/react-query": "^5.66.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "1.0.0", - "date-fns": "^4.1.0", - "date-fns-tz": "^3.2.0", - "embla-carousel-react": "^8.5.2", - "gql.tada": "^1.8.10", - "graphql": "^16.10.0", - "graphql-request": "^5.2.0", - "lucide-react": "^0.475.0", - "react-day-picker": "8.10.1", - "react-phone-number-input": "^3.4.12", - "react-resizable-panels": "^2.1.7", - "tailwind-merge": "^3.0.1", - "tailwindcss": "^4.1.4", - "ulid": "^3.0.0", - "vaul": "^1.1.2", - "zod": "^3.24.1" - }, - "devDependencies": { - "@types/node": "^22.13.1", - "@types/react": "^19.0.8", - "@types/react-dom": "^19.0.3", - "@vitejs/plugin-react": "^4.2.1", - "globals": "^15.14.0", - "jsdom": "^26.0.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-hook-form": "^7.54.2", - "tsdown": "^0.15.6", - "typescript": "~5.7.3", - "vite": "^5.1.6", - "vitest": "^3.0.6" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org/" - } + "name": "@godaddy/react", + "private": false, + "version": "1.0.0", + "type": "module", + "types": "./dist/index.d.ts", + "files": ["dist"], + "exports": { + "./package.json": "./package.json", + "./styles.css": "./dist/index.css", + "./server": { + "types": "./dist/server.d.ts", + "import": "./dist/server.js", + "default": "./dist/server.js" + }, + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + } + }, + "typesVersions": { + "*": { + "server": ["./dist/server.d.ts"], + "*": ["./dist/index.d.ts"] + } + }, + "scripts": { + "dev": "tsdown --watch", + "dev:https": "tsdown --watch", + "build": "tsdown && pnpm dlx @tailwindcss/cli -i ./src/globals.css -o ./dist/index.css --minify", + "preview": "vite preview", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "lint": "biome check .", + "lint:fix": "biome check --write ." + }, + "peerDependencies": { + "@tanstack/react-query": ">=5", + "react": "18.x || 19.x", + "react-dom": "18.x || 19.x", + "react-hook-form": ">=7" + }, + "dependencies": { + "@floating-ui/react": "^0.27.8", + "@godaddy/localizations": "workspace:*", + "@hookform/resolvers": "^4.0.0", + "@paypal/react-paypal-js": "^8.8.3", + "@radix-ui/react-accordion": "^1.2.3", + "@radix-ui/react-alert-dialog": "^1.1.6", + "@radix-ui/react-aspect-ratio": "^1.1.2", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.3", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-radio-group": "^1.2.3", + "@radix-ui/react-scroll-area": "^1.2.3", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-separator": "^1.1.2", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.1.3", + "@radix-ui/react-toast": "^1.2.6", + "@radix-ui/react-toggle": "^1.1.2", + "@radix-ui/react-toggle-group": "^1.1.2", + "@radix-ui/react-tooltip": "^1.1.8", + "@stripe/react-stripe-js": "^3.7.0", + "@stripe/stripe-js": "^7.3.1", + "@tailwindcss/cli": "^4.1.10", + "@tailwindcss/vite": "^4.1.4", + "@tanstack/react-pacer": "^0.2.0", + "@tanstack/react-query": "^5.66.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "1.0.0", + "date-fns": "^4.1.0", + "date-fns-tz": "^3.2.0", + "embla-carousel-react": "^8.5.2", + "fast-deep-equal": "^3.1.3", + "gql.tada": "^1.8.10", + "graphql": "^16.10.0", + "graphql-request": "^5.2.0", + "lucide-react": "^0.475.0", + "react-day-picker": "8.10.1", + "react-phone-number-input": "^3.4.12", + "react-resizable-panels": "^2.1.7", + "tailwind-merge": "^3.0.1", + "tailwindcss": "^4.1.4", + "ulid": "^3.0.0", + "vaul": "^1.1.2", + "zod": "^3.24.1" + }, + "devDependencies": { + "@biomejs/biome": "^2.3.2", + "@types/node": "^22.13.1", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "@vitejs/plugin-react": "^4.2.1", + "biome-config-godaddy": "workspace:*", + "globals": "^15.14.0", + "jsdom": "^26.0.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.54.2", + "tsdown": "^0.15.6", + "typescript": "~5.7.3", + "vite": "^5.1.6", + "vitest": "^3.0.6" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/" + } } diff --git a/packages/react/src/components/checkout/address/address-form.tsx b/packages/react/src/components/checkout/address/address-form.tsx index 3653881e..2c6707b9 100644 --- a/packages/react/src/components/checkout/address/address-form.tsx +++ b/packages/react/src/components/checkout/address/address-form.tsx @@ -1,760 +1,563 @@ -"use client"; - -import { - countries, - getRegions, - hasRegionData, -} from "@/components/checkout/address/get-country-region"; -// TEMPORARY: Comment out autocomplete/verification imports - will be restored later -// import { checkIsValidAddress } from "@/components/checkout/address/utils/check-is-valid-address"; -// import { formatSingleLineAddress } from "@/components/checkout/address/utils/format-address"; -// import { isAddressComplete } from "@/components/checkout/address/utils/is-address-complete"; -import { mapAddressFieldsToInput } from "@/components/checkout/address/utils/map-address-fields-to-input"; -// import { useAddressMatches } from "@/components/checkout/address/utils/use-address-matches"; -// import { useAddressVerification } from "@/components/checkout/address/utils/use-address-verification"; -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { PhoneInput } from "@/components/checkout/contact/phone-input"; -import { useDraftOrder } from "@/components/checkout/order/use-draft-order"; -import { useDraftOrderFieldSync } from "@/components/checkout/order/use-draft-order-sync"; -// import { AutoComplete } from "@/components/ui/autocomplete"; -import { Button } from "@/components/ui/button"; -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, - CommandList, -} from "@/components/ui/command"; -import { - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Input } from "@/components/ui/input"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/components/ui/popover"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { cn } from "@/lib/utils"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -// import type { Address } from "@/types"; -import { useDebouncedValue } from "@tanstack/react-pacer"; -import { Check, ChevronsUpDown } from "lucide-react"; -import * as React from "react"; -import { useFormContext } from "react-hook-form"; +'use client'; + +import { useDebouncedValue } from '@tanstack/react-pacer'; +import { Check, ChevronsUpDown } from 'lucide-react'; +import * as React from 'react'; +import { useFormContext } from 'react-hook-form'; +import { countries, getRegions, hasRegionData } from '@/components/checkout/address/get-country-region'; +import { isAddressComplete } from '@/components/checkout/address/utils/is-address-complete'; +import { mapAddressFieldsToInput } from '@/components/checkout/address/utils/map-address-fields-to-input'; +import { useAddressMatches } from '@/components/checkout/address/utils/use-address-matches'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { PhoneInput } from '@/components/checkout/contact/phone-input'; +import { useDraftOrder } from '@/components/checkout/order/use-draft-order'; +import { useDraftOrderFieldSync } from '@/components/checkout/order/use-draft-order-sync'; +import { AutoComplete } from '@/components/ui/autocomplete'; +import { Button } from '@/components/ui/button'; +import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command'; +import { FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; +import { Input } from '@/components/ui/input'; +import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { cn } from '@/lib/utils'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; +import type { Address } from '@/types'; export function AddressForm({ sectionKey }: { sectionKey: string }) { - const form = useFormContext(); - const { t } = useGoDaddyContext(); - const { isConfirmingCheckout, requiredFields } = useCheckoutContext(); - - const { data: draftOrder } = useDraftOrder(); - const countryTriggerRef = React.useRef(null); - const [triggerWidth, setTriggerWidth] = React.useState(null); - // TEMPORARY: Comment out suggested address state - will be restored later - // const [showSuggestedAddress, setShowSuggestedAddress] = React.useState(false); - const [isCountrySelectOpen, setCountrySelectOpen] = - React.useState(false); - - React.useEffect(() => { - function updateWidth() { - if (countryTriggerRef.current) { - setTriggerWidth(countryTriggerRef.current.clientWidth); - } - } - updateWidth(); - window.addEventListener("resize", updateWidth); - return () => window.removeEventListener("resize", updateWidth); - }, []); - - // TEMPORARY: Comment out address value watching for autocomplete - will be restored later - // const addressValue = form.watch(`${sectionKey}AddressLine1`); - const countryValue = form.watch(`${sectionKey}CountryCode`); - - // Reset AdminArea1 if current value is not valid for the selected country - React.useEffect(() => { - if (countryValue) { - const currentAdminArea1 = form.getValues(`${sectionKey}AdminArea1`); - if (hasRegionData(countryValue) && currentAdminArea1) { - const regions = getRegions(countryValue); - const isValidRegion = regions.some( - (region) => region.code === currentAdminArea1, - ); - if (!isValidRegion) { - form.setValue(`${sectionKey}AdminArea1`, "", { - shouldValidate: true, - shouldDirty: true, - shouldTouch: true, - }); - // Force validation for this specific field - form.trigger(`${sectionKey}AdminArea1`); - } - } - } - }, [countryValue, form, sectionKey]); - - const useShippingAddress = form.watch("paymentUseShippingAddress"); - - // const [debouncedAddressValue] = useDebouncedValue(addressValue, { - // wait: 200, - // }); - - const [ - firstName, - lastName, - addressLine1, - addressLine2, - addressLine3, - adminArea1, - adminArea2, - adminArea3, - adminArea4, - postalCode, - countryCode, - ] = form.watch([ - `${sectionKey}FirstName`, - `${sectionKey}LastName`, - `${sectionKey}AddressLine1`, - `${sectionKey}AddressLine2`, - `${sectionKey}AddressLine3`, - `${sectionKey}AdminArea1`, - `${sectionKey}AdminArea2`, - `${sectionKey}AdminArea3`, - `${sectionKey}AdminArea4`, - `${sectionKey}PostalCode`, - `${sectionKey}CountryCode`, - ]); - - const contact = React.useMemo( - () => ({ firstName, lastName }), - [firstName, lastName], - ); - - const [debouncedFullName] = useDebouncedValue( - Object.values(contact).join(""), - { - wait: 1000, - }, - ); - - // const addressMatchesQuery = useAddressMatches(debouncedAddressValue, { - // enabled: - // !!line1AddressIsDirty && - // !!debouncedAddressValue && - // countryValue === "US" && - // debouncedFullAddress === Object.values(address).join(""), - // }); - - // const shouldVerifyAddress = - // !!debouncedFullAddress && - // debouncedFullAddress !== "US" && - // addressLine1 !== "" && - // postalCode !== "" && - // countryCode !== "" && - // addressIsDirty && - // debouncedFullAddress === Object.values(address).join(""); - - // const verifyAddressQuery = useAddressVerification(address, { - // enabled: shouldVerifyAddress, - // }); - - // Check if name values differ from order values - const nameHasChanged = React.useMemo(() => { - if (!draftOrder) return true; // If no order, allow sync - const section = - sectionKey === "shipping" ? draftOrder.shipping : draftOrder.billing; - - return ( - (section?.firstName || "") !== (firstName || "") || - (section?.lastName || "") !== (lastName || "") - ); - }, [draftOrder, sectionKey, firstName, lastName]); - - const shouldVerifyName = - nameHasChanged && // Only sync if values differ from order - debouncedFullName !== "" && - debouncedFullName === Object.values(contact).join(""); - - useDraftOrderFieldSync({ - key: "name", - data: contact, - deps: [contact], - enabled: shouldVerifyName, - fieldNames: [`${sectionKey}FirstName`, `${sectionKey}LastName`], - mapToInput: (data) => { - return mapAddressFieldsToInput( - { - firstName: data.firstName.trim(), - lastName: data.lastName.trim(), - }, - sectionKey as "shipping" | "billing", - useShippingAddress, - ); - }, - }); - - // TEMPORARY: Comment out address validation logic - will be restored later - // const isAddressValid = React.useMemo(() => { - // if ( - // verifyAddressQuery.status === "success" && - // !verifyAddressQuery.isLoading && - // verifyAddressQuery.data?.[0] && - // address && - // addressIsDirty && - // debouncedFullAddress === Object.values(address).join("") - // ) { - // return checkIsValidAddress(address, verifyAddressQuery.data[0]); - // } - // return false; - // }, [ - // verifyAddressQuery.status, - // verifyAddressQuery.isLoading, - // verifyAddressQuery.data, - // address, - // debouncedFullAddress, - // addressIsDirty, - // ]); - - // TEMPORARY: Comment out suggested address effect - will be restored later - // React.useEffect(() => { - // if ( - // verifyAddressQuery.status === "success" && - // !verifyAddressQuery.isFetching && - // !isAddressValid && - // !!addressIsDirty - // ) { - // setShowSuggestedAddress(true); - // form.setValue(`${sectionKey}Valid`, false, { shouldValidate: true }); - // } else { - // setShowSuggestedAddress(false); - // form.setValue(`${sectionKey}Valid`, true, { shouldValidate: true }); - // } - // }, [ - // isAddressValid, - // verifyAddressQuery.status, - // verifyAddressQuery.isFetching, - // form.setValue, - // sectionKey, - // addressIsDirty, - // ]); - - // TEMPORARY: Simplified draft order sync without validation dependencies - const address = React.useMemo( - () => ({ - addressLine1, - addressLine2, - addressLine3, - adminArea1, - adminArea2, - adminArea3, - adminArea4, - postalCode, - countryCode, - }), - [ - addressLine1, - addressLine2, - addressLine3, - adminArea1, - adminArea2, - adminArea3, - adminArea4, - postalCode, - countryCode, - ], - ); - - const [debouncedFullAddress] = useDebouncedValue( - Object.values(address).join(""), - { wait: 1000 }, - ); - - // Get existing order address data for comparison - const orderAddress = React.useMemo(() => { - if (!draftOrder) return null; - const section = - sectionKey === "shipping" ? draftOrder.shipping : draftOrder.billing; - return section - ? { - addressLine1: section?.address?.addressLine1 || "", - addressLine2: section?.address?.addressLine2 || "", - addressLine3: section?.address?.addressLine3 || "", - adminArea1: section?.address?.adminArea1 || "", - adminArea2: section?.address?.adminArea2 || "", - adminArea3: section?.address?.adminArea3 || "", - adminArea4: section?.address?.adminArea4 || "", - postalCode: section?.address?.postalCode || "", - countryCode: section?.address?.countryCode || "", - } - : null; - }, [draftOrder, sectionKey]); - - // Check if current form values differ from order values - const addressHasChanged = React.useMemo(() => { - if (!orderAddress) return true; // If no order address, allow sync - - return ( - orderAddress.addressLine1 !== (addressLine1 || "") || - orderAddress.addressLine2 !== (addressLine2 || "") || - orderAddress.addressLine3 !== (addressLine3 || "") || - orderAddress.adminArea1 !== (adminArea1 || "") || - orderAddress.adminArea2 !== (adminArea2 || "") || - orderAddress.adminArea3 !== (adminArea3 || "") || - orderAddress.adminArea4 !== (adminArea4 || "") || - orderAddress.postalCode !== (postalCode || "") || - orderAddress.countryCode !== (countryCode || "") - ); - }, [ - orderAddress, - addressLine1, - addressLine2, - addressLine3, - adminArea1, - adminArea2, - adminArea3, - adminArea4, - postalCode, - countryCode, - ]); - - const shouldUpdateAddress = Boolean( - addressHasChanged && // Only sync if values differ from order - !!debouncedFullAddress && - addressLine1?.trim() !== "" && - postalCode?.trim() !== "" && - countryCode?.trim() !== "" && - debouncedFullAddress === Object.values(address).join("") && - debouncedFullAddress.trim() !== "", - ); - - useDraftOrderFieldSync({ - key: "address", - data: address, - deps: [address, shouldUpdateAddress], - enabled: shouldUpdateAddress, - fieldNames: [ - `${sectionKey}AddressLine1`, - `${sectionKey}AddressLine2`, - `${sectionKey}City`, - `${sectionKey}AdminArea1`, - `${sectionKey}PostalCode`, - `${sectionKey}CountryCode`, - ], - mapToInput: (data) => { - return mapAddressFieldsToInput( - { - address: data, - }, - sectionKey as "shipping" | "billing", - useShippingAddress, - ); - }, - }); - - // TEMPORARY: Comment out address update handler - will be restored later - // function handleUpdateAddress(address?: Address) { - // if (!address) return; - - // const fieldMap: Record = { - // AddressLine1: address.addressLine1, - // AddressLine2: address.addressLine2, - // AdminArea3: address.adminArea3, - // AdminArea1: address.adminArea1, - // PostalCode: address.postalCode, - // }; - - // for (const [key, value] of Object.entries(fieldMap)) { - // if (value) { - // form.setValue(`${sectionKey}${key}`, value, { shouldValidate: true }); - // } - // } - // } - - return ( -
- ( - - {t.shipping.country} - - - - - - - - - - - {t.shipping.noCountryFound} - - {countries.map((country) => ( - { - // Get current country before setting the new one - const previousCountry = form.getValues( - `${sectionKey}CountryCode`, - ); - const isChangingCountryType = - (hasRegionData(previousCountry) && - !hasRegionData(country.value)) || - (!hasRegionData(previousCountry) && - hasRegionData(country.value)); - - // Set the new country value - form.setValue( - `${sectionKey}CountryCode`, - country.value, - { - shouldValidate: true, - }, - ); - - // Reset AdminArea1 field when changing country types or when current value is invalid - const currentAdminArea1 = form.getValues( - `${sectionKey}AdminArea1`, - ); - const newCountryRegions = getRegions(country.value); - const isCurrentValueValid = newCountryRegions.some( - (region) => region.code === currentAdminArea1, - ); - - if ( - isChangingCountryType || - (hasRegionData(country.value) && - !isCurrentValueValid) - ) { - form.setValue(`${sectionKey}AdminArea1`, "", { - shouldDirty: true, - }); - } - - // Track country selection event - track({ - eventId: eventIds.changeCountry, - type: TrackingEventType.CLICK, - properties: { - sectionKey, - countryCode: country.value, - countryName: country.label, - }, - }); - - setCountrySelectOpen(false); - }} - disabled={isConfirmingCheckout} - > - {country.label} - - - ))} - - - - - - - - )} - /> - -
- ( - - - {t.shipping.firstName} ({t.general.optional}) - - - - - - - )} - /> - ( - - {t.shipping.lastName} - - - - - - )} - /> -
- - ( - - {t.shipping.address1} - - {/* TEMPORARY: Comment out autocomplete for US addresses - will be restored later */} - {/* {countryValue === "US" ? ( - - handleUpdateAddress(address as Address) - } - isLoading={ - addressMatchesQuery?.isLoading || - addressMatchesQuery?.isFetching - } - hasError={!!fieldState.error} - /> - ) : ( */} - - {/* )} */} - - - {/* TEMPORARY: Comment out validation error display - will be restored later */} - {/* {form?.formState?.errors?.[`${sectionKey}Valid`]?.message ? ( -

- {String(form.formState.errors[`${sectionKey}Valid`]?.message)} -

- ) : null} */} -
- )} - /> - - ( - - {t.shipping.address2} - - - - - - )} - /> - -
- ( - - {t.shipping.city} - - - - - - )} - /> - ( - - {t.shipping.region} - - {hasRegionData(countryValue) ? ( - - ) : ( - - )} - - - - )} - /> - - ( - - {t.shipping.postalCode} - - - - - - )} - /> -
- {/* TEMPORARY: Comment out suggested address display - will be restored later */} - {/* {showSuggestedAddress ? ( -
- {t.shipping.addressSuggestion}{" "} - - {t.shipping.addressSuggestionEnd} -
- ) : null} */} - - -
- ); + const form = useFormContext(); + const { session } = useCheckoutContext(); + const { t } = useGoDaddyContext(); + const { isConfirmingCheckout, requiredFields } = useCheckoutContext(); + + const { data: draftOrder } = useDraftOrder(); + const countryTriggerRef = React.useRef(null); + const [triggerWidth, setTriggerWidth] = React.useState(null); + const [isCountrySelectOpen, setCountrySelectOpen] = React.useState(false); + const [isAutocompleteOpen, setIsAutocompleteOpen] = React.useState(false); + + React.useEffect(() => { + function updateWidth() { + if (countryTriggerRef.current) { + setTriggerWidth(countryTriggerRef.current.clientWidth); + } + } + updateWidth(); + window.addEventListener('resize', updateWidth); + return () => window.removeEventListener('resize', updateWidth); + }, []); + + const addressValue = form.watch(`${sectionKey}AddressLine1`); + const countryValue = form.watch(`${sectionKey}CountryCode`); + const useShippingAddress = form.watch('paymentUseShippingAddress'); + + const [ + firstName, + lastName, + addressLine1, + addressLine2, + addressLine3, + adminArea1, + adminArea2, + adminArea3, + adminArea4, + postalCode, + countryCode, + ] = form.watch([ + `${sectionKey}FirstName`, + `${sectionKey}LastName`, + `${sectionKey}AddressLine1`, + `${sectionKey}AddressLine2`, + `${sectionKey}AddressLine3`, + `${sectionKey}AdminArea1`, + `${sectionKey}AdminArea2`, + `${sectionKey}AdminArea3`, + `${sectionKey}AdminArea4`, + `${sectionKey}PostalCode`, + `${sectionKey}CountryCode`, + ]); + + const contact = React.useMemo(() => ({ firstName, lastName }), [firstName, lastName]); + + const [debouncedFullName] = useDebouncedValue(Object.values(contact).join(''), { + wait: 1000, + }); + + const [debouncedAddressValue] = useDebouncedValue(addressValue, { + wait: 200, + }); + + // Check if name values differ from order values + const nameHasChanged = React.useMemo(() => { + if (!draftOrder) return true; // If no order, allow sync + const section = sectionKey === 'shipping' ? draftOrder.shipping : draftOrder.billing; + + return (section?.firstName || '') !== (firstName || '') || (section?.lastName || '') !== (lastName || ''); + }, [draftOrder, sectionKey, firstName, lastName]); + + const shouldVerifyName = + nameHasChanged && // Only sync if values differ from order + debouncedFullName !== '' && + debouncedFullName === Object.values(contact).join(''); + + useDraftOrderFieldSync({ + key: 'name', + data: contact, + deps: [contact], + enabled: shouldVerifyName, + fieldNames: [`${sectionKey}FirstName`, `${sectionKey}LastName`], + mapToInput: data => { + return mapAddressFieldsToInput( + { + firstName: data.firstName.trim(), + lastName: data.lastName.trim(), + }, + sectionKey as 'shipping' | 'billing', + useShippingAddress + ); + }, + }); + + const address = React.useMemo( + () => ({ + addressLine1, + addressLine2, + addressLine3, + adminArea1, + adminArea2, + adminArea3, + adminArea4, + postalCode, + countryCode, + }), + [addressLine1, addressLine2, addressLine3, adminArea1, adminArea2, adminArea3, adminArea4, postalCode, countryCode] + ); + + const [debouncedFullAddress] = useDebouncedValue(Object.values(address).join(''), { wait: 1000 }); + + // Get existing order address data for comparison + const orderAddress = React.useMemo(() => { + if (!draftOrder) return null; + const section = sectionKey === 'shipping' ? draftOrder.shipping : draftOrder.billing; + return section + ? { + addressLine1: section?.address?.addressLine1 || '', + addressLine2: section?.address?.addressLine2 || '', + addressLine3: section?.address?.addressLine3 || '', + adminArea1: section?.address?.adminArea1 || '', + adminArea2: section?.address?.adminArea2 || '', + adminArea3: section?.address?.adminArea3 || '', + adminArea4: section?.address?.adminArea4 || '', + postalCode: section?.address?.postalCode || '', + countryCode: section?.address?.countryCode || '', + } + : null; + }, [draftOrder, sectionKey]); + + // Check if current form values differ from order values + const addressHasChanged = React.useMemo(() => { + if (!orderAddress) return true; // If no order address, allow sync + + return ( + orderAddress.addressLine1 !== (addressLine1 || '') || + orderAddress.addressLine2 !== (addressLine2 || '') || + orderAddress.addressLine3 !== (addressLine3 || '') || + orderAddress.adminArea1 !== (adminArea1 || '') || + orderAddress.adminArea2 !== (adminArea2 || '') || + orderAddress.adminArea3 !== (adminArea3 || '') || + orderAddress.adminArea4 !== (adminArea4 || '') || + orderAddress.postalCode !== (postalCode || '') || + orderAddress.countryCode !== (countryCode || '') + ); + }, [ + orderAddress, + addressLine1, + addressLine2, + addressLine3, + adminArea1, + adminArea2, + adminArea3, + adminArea4, + postalCode, + countryCode, + ]); + + const addressLine1HasChanged = React.useMemo(() => { + if (!orderAddress) return true; + + return orderAddress.addressLine1 !== (addressLine1 || ''); + }, [orderAddress, addressLine1]); + + const addressMatchesQuery = useAddressMatches(debouncedAddressValue, { + enabled: !!session?.enableAddressAutocomplete && !!debouncedAddressValue && countryValue === 'US' && addressLine1HasChanged, + }); + + function handleUpdateAddress(selectedAddress?: Address) { + if (!selectedAddress) return; + + const fieldMap: Record = { + AddressLine1: selectedAddress.addressLine1, + AddressLine2: selectedAddress.addressLine2, + AdminArea2: selectedAddress.adminArea3, + AdminArea1: selectedAddress.adminArea1, + PostalCode: selectedAddress.postalCode, + }; + + for (const [key, value] of Object.entries(fieldMap)) { + if (value) { + form.setValue(`${sectionKey}${key}`, value, { shouldValidate: true }); + } + } + } + + const shouldUpdateAddress = Boolean( + addressHasChanged && // Only sync if values differ from order + !!debouncedFullAddress && + isAddressComplete(address) && + debouncedFullAddress === Object.values(address).join('') && + debouncedFullAddress.trim() !== '' && + !isAutocompleteOpen + ); + + useDraftOrderFieldSync({ + key: 'address', + data: address, + deps: [address, shouldUpdateAddress], + enabled: shouldUpdateAddress, + fieldNames: [ + `${sectionKey}AddressLine1`, + `${sectionKey}AddressLine2`, + `${sectionKey}City`, + `${sectionKey}AdminArea1`, + `${sectionKey}PostalCode`, + `${sectionKey}CountryCode`, + ], + mapToInput: data => { + return mapAddressFieldsToInput( + { + address: data, + }, + sectionKey as 'shipping' | 'billing', + useShippingAddress + ); + }, + }); + + return ( +
+ ( + + {t.shipping.country} + + + + + + + + + + + {t.shipping.noCountryFound} + + {countries.map(country => ( + { + // Get current country before setting the new one + const previousCountry = form.getValues(`${sectionKey}CountryCode`); + + // Set the new country value + form.setValue(`${sectionKey}CountryCode`, country.value, { + shouldValidate: true, + }); + + if (previousCountry !== country.value) { + form.setValue(`${sectionKey}AddressLine1`, '', { + shouldDirty: true, + shouldValidate: false, + }); + form.setValue(`${sectionKey}AdminArea1`, '', { + shouldDirty: true, + shouldValidate: false, + }); + form.setValue(`${sectionKey}AdminArea2`, '', { + shouldDirty: true, + shouldValidate: false, + }); + form.setValue(`${sectionKey}PostalCode`, '', { + shouldDirty: true, + shouldValidate: false, + }); + } + + // Track country selection event + track({ + eventId: eventIds.changeCountry, + type: TrackingEventType.CLICK, + properties: { + sectionKey, + countryCode: country.value, + countryName: country.label, + }, + }); + + setCountrySelectOpen(false); + }} + disabled={isConfirmingCheckout} + > + {country.label} + + + ))} + + + + + + + + )} + /> + +
+ ( + + + {t.shipping.firstName} ({t.general.optional}) + + + + + + + )} + /> + ( + + {t.shipping.lastName} + + + + + + )} + /> +
+ + ( + + {t.shipping.address1} + + {countryValue === 'US' && session?.enableAddressAutocomplete ? ( + { + handleUpdateAddress(selectedAddress as Address); + }} + onOpenChange={setIsAutocompleteOpen} + isLoading={addressMatchesQuery?.isLoading || addressMatchesQuery?.isFetching} + hasError={!!fieldState.error} + aria-required={requiredFields?.[`${sectionKey}AddressLine1`]} + disabled={isConfirmingCheckout} + /> + ) : ( + + )} + + + + )} + /> + + ( + + {t.shipping.address2} + + + + + + )} + /> + +
+ ( + + {t.shipping.city} + + + + + + )} + /> + ( + + {t.shipping.region} + + {hasRegionData(countryValue) ? ( + + ) : ( + + )} + + + + )} + /> + + ( + + {t.shipping.postalCode} + + + + + + )} + /> +
+ + +
+ ); } diff --git a/packages/react/src/components/checkout/address/country-region-data.ts b/packages/react/src/components/checkout/address/country-region-data.ts index d9c8e994..5c13d071 100644 --- a/packages/react/src/components/checkout/address/country-region-data.ts +++ b/packages/react/src/components/checkout/address/country-region-data.ts @@ -1,6291 +1,6266 @@ export const AF = [ - "Afghanistan", - "AF", - [ - ["Badakhshan", "BDS"], - ["Badghis", "BDG"], - ["Baghlan", "BGL"], - ["Balkh", "BAL"], - ["Bamyan", "BAM"], - ["Daykundi", "DAY"], - ["Farah", "FRA"], - ["Faryab", "FYB"], - ["Ghazni", "GHA"], - ["Ghor", "GHO"], - ["Helmand", "HEL"], - ["Herat", "HER"], - ["Jowzjan", "JOW"], - ["Kabul", "KAB"], - ["Kandahar", "KAN"], - ["Kapisa", "KAP"], - ["Khost", "KHO"], - ["Kunar", "KNR"], - ["Kunduz", "KDZ"], - ["Laghman", "LAG"], - ["Logar", "LOW"], - ["Maidan Wardak", "WAR"], - ["Nangarhar", "NAN"], - ["Nimruz", "NIM"], - ["Nuristan", "NUR"], - ["Paktia", "PIA"], - ["Paktika", "PKA"], - ["Panjshir", "PAN"], - ["Parwan", "PAR"], - ["Samangan", "SAM"], - ["Sar-e Pol", "SAR"], - ["Takhar", "TAK"], - ["Urozgan", "ORU"], - ["Zabul", "ZAB"], - ], + 'Afghanistan', + 'AF', + [ + ['Badakhshan', 'BDS'], + ['Badghis', 'BDG'], + ['Baghlan', 'BGL'], + ['Balkh', 'BAL'], + ['Bamyan', 'BAM'], + ['Daykundi', 'DAY'], + ['Farah', 'FRA'], + ['Faryab', 'FYB'], + ['Ghazni', 'GHA'], + ['Ghor', 'GHO'], + ['Helmand', 'HEL'], + ['Herat', 'HER'], + ['Jowzjan', 'JOW'], + ['Kabul', 'KAB'], + ['Kandahar', 'KAN'], + ['Kapisa', 'KAP'], + ['Khost', 'KHO'], + ['Kunar', 'KNR'], + ['Kunduz', 'KDZ'], + ['Laghman', 'LAG'], + ['Logar', 'LOW'], + ['Maidan Wardak', 'WAR'], + ['Nangarhar', 'NAN'], + ['Nimruz', 'NIM'], + ['Nuristan', 'NUR'], + ['Paktia', 'PIA'], + ['Paktika', 'PKA'], + ['Panjshir', 'PAN'], + ['Parwan', 'PAR'], + ['Samangan', 'SAM'], + ['Sar-e Pol', 'SAR'], + ['Takhar', 'TAK'], + ['Urozgan', 'ORU'], + ['Zabul', 'ZAB'], + ], ]; export const AX = [ - "Åland Islands", - "AX", - [ - ["Brändö", "BR"], - ["Eckerö", "EC"], - ["Finström", "FN"], - ["Föglö", "FG"], - ["Geta", "GT"], - ["Hammarland", "HM"], - ["Jomala", "JM"], - ["Kumlinge", "KM"], - ["Kökar", "KK"], - ["Lemland", "LE"], - ["Lumparland", "LU"], - ["Mariehamn", "MH"], - ["Saltvik", "SV"], - ["Sottunga", "ST"], - ["Sund", "SD"], - ["Vårdö", "VR"], - ], + 'Åland Islands', + 'AX', + [ + ['Brändö', 'BR'], + ['Eckerö', 'EC'], + ['Finström', 'FN'], + ['Föglö', 'FG'], + ['Geta', 'GT'], + ['Hammarland', 'HM'], + ['Jomala', 'JM'], + ['Kumlinge', 'KM'], + ['Kökar', 'KK'], + ['Lemland', 'LE'], + ['Lumparland', 'LU'], + ['Mariehamn', 'MH'], + ['Saltvik', 'SV'], + ['Sottunga', 'ST'], + ['Sund', 'SD'], + ['Vårdö', 'VR'], + ], ]; export const AL = [ - "Albania", - "AL", - [ - ["Berat", "01"], - ["Dibër", "09"], - ["Durrës", "02"], - ["Elbasan", "03"], - ["Fier", "04"], - ["Gjirokastër", "05"], - ["Korçë", "06"], - ["Kukës", "07"], - ["Lezhë", "08"], - ["Shkodër", "10"], - ["Tirana", "11"], - ["Vlorë", "12"], - ], + 'Albania', + 'AL', + [ + ['Berat', '01'], + ['Dibër', '09'], + ['Durrës', '02'], + ['Elbasan', '03'], + ['Fier', '04'], + ['Gjirokastër', '05'], + ['Korçë', '06'], + ['Kukës', '07'], + ['Lezhë', '08'], + ['Shkodër', '10'], + ['Tirana', '11'], + ['Vlorë', '12'], + ], ]; export const DZ = [ - "Algeria", - "DZ", - [ - ["Adrar", "01"], - ["Aïn Defla", "44"], - ["Aïn Témouchent", "46"], - ["Algiers", "16"], - ["Annaba", "23"], - ["Batna", "05"], - ["Béchar", "08"], - ["Béjaïa", "06"], - ["Biskra", "07"], - ["Blida", "09"], - ["Bordj Bou Arréridj", "34"], - ["Bouïra", "10"], - ["Boumerdès", "35"], - ["Chlef", "02"], - ["Constantine", "25"], - ["Djelfa", "17"], - ["El Bayadh", "32"], - ["El Oued", "39"], - ["El Tarf", "36"], - ["Ghardaïa", "47"], - ["Guelma", "24"], - ["Illizi", "33"], - ["Jijel", "18"], - ["Khenchela", "40"], - ["Laghouat", "03"], - ["Mascara", "29"], - ["Médéa", "26"], - ["Mila", "43"], - ["Mostaganem", "27"], - ["Msila", "28"], - ["Naâma", "45"], - ["Oran", "31"], - ["Ouargla", "30"], - ["Oum el Bouaghi", "04"], - ["Relizane", "48"], - ["Saïda", "20"], - ["Sétif", "19"], - ["Sidi Bel Abbès", "22"], - ["Skikda", "21"], - ["Souk Ahras", "41"], - ["Tamanghasset", "11"], - ["Tébessa", "12"], - ["Tiaret", "14"], - ["Tindouf", "37"], - ["Tipaza", "42"], - ["Tissemsilt", "38"], - ["Tizi Ouzou", "15"], - ["Tlemcen", "13"], - ], + 'Algeria', + 'DZ', + [ + ['Adrar', '01'], + ['Aïn Defla', '44'], + ['Aïn Témouchent', '46'], + ['Algiers', '16'], + ['Annaba', '23'], + ['Batna', '05'], + ['Béchar', '08'], + ['Béjaïa', '06'], + ['Biskra', '07'], + ['Blida', '09'], + ['Bordj Bou Arréridj', '34'], + ['Bouïra', '10'], + ['Boumerdès', '35'], + ['Chlef', '02'], + ['Constantine', '25'], + ['Djelfa', '17'], + ['El Bayadh', '32'], + ['El Oued', '39'], + ['El Tarf', '36'], + ['Ghardaïa', '47'], + ['Guelma', '24'], + ['Illizi', '33'], + ['Jijel', '18'], + ['Khenchela', '40'], + ['Laghouat', '03'], + ['Mascara', '29'], + ['Médéa', '26'], + ['Mila', '43'], + ['Mostaganem', '27'], + ['Msila', '28'], + ['Naâma', '45'], + ['Oran', '31'], + ['Ouargla', '30'], + ['Oum el Bouaghi', '04'], + ['Relizane', '48'], + ['Saïda', '20'], + ['Sétif', '19'], + ['Sidi Bel Abbès', '22'], + ['Skikda', '21'], + ['Souk Ahras', '41'], + ['Tamanghasset', '11'], + ['Tébessa', '12'], + ['Tiaret', '14'], + ['Tindouf', '37'], + ['Tipaza', '42'], + ['Tissemsilt', '38'], + ['Tizi Ouzou', '15'], + ['Tlemcen', '13'], + ], ]; export const AS = [ - "American Samoa", - "AS", - [ - ["Tutuila", "01"], - ["Aunu'u", "02"], - ["Ta'ū", "03"], - ["Ofu‑Olosega", "04"], - ["Rose Atoll", "21"], - ["Swains Island", "22"], - ], + 'American Samoa', + 'AS', + [ + ['Tutuila', '01'], + ["Aunu'u", '02'], + ["Ta'ū", '03'], + ['Ofu‑Olosega', '04'], + ['Rose Atoll', '21'], + ['Swains Island', '22'], + ], ]; export const AD = [ - "Andorra", - "AD", - [ - ["Andorra la Vella", "07"], - ["Canillo", "02"], - ["Encamp", "03"], - ["Escaldes-Engordany", "08"], - ["La Massana", "04"], - ["Ordino", "05"], - ["Sant Julià de Lòria", "06"], - ], + 'Andorra', + 'AD', + [ + ['Andorra la Vella', '07'], + ['Canillo', '02'], + ['Encamp', '03'], + ['Escaldes-Engordany', '08'], + ['La Massana', '04'], + ['Ordino', '05'], + ['Sant Julià de Lòria', '06'], + ], ]; export const AO = [ - "Angola", - "AO", - [ - ["Bengo", "BGO"], - ["Benguela", "BGU"], - ["Bié", "BIE"], - ["Cabinda", "CAB"], - ["Cuando Cubango", "CCU"], - ["Cuanza Norte", "CNO"], - ["Cuanza Sul", "CUS"], - ["Cunene", "CNN"], - ["Huambo", "HUA"], - ["Huíla", "HUI"], - ["Luanda", "LUA"], - ["Lunda Norte", "LNO"], - ["Lunda Sul", "LSU"], - ["Malanje", "MAL"], - ["Moxico", "MOX"], - ["Namibe", "NAM"], - ["Uíge", "UIG"], - ["Zaire", "ZAI"], - ], + 'Angola', + 'AO', + [ + ['Bengo', 'BGO'], + ['Benguela', 'BGU'], + ['Bié', 'BIE'], + ['Cabinda', 'CAB'], + ['Cuando Cubango', 'CCU'], + ['Cuanza Norte', 'CNO'], + ['Cuanza Sul', 'CUS'], + ['Cunene', 'CNN'], + ['Huambo', 'HUA'], + ['Huíla', 'HUI'], + ['Luanda', 'LUA'], + ['Lunda Norte', 'LNO'], + ['Lunda Sul', 'LSU'], + ['Malanje', 'MAL'], + ['Moxico', 'MOX'], + ['Namibe', 'NAM'], + ['Uíge', 'UIG'], + ['Zaire', 'ZAI'], + ], ]; export const AI = [ - "Anguilla", - "AI", - [ - ["Anguilla", "01"], - ["Anguillita Island", "02"], - ["Blowing Rock", "03"], - ["Cove Cay", "04"], - ["Crocus Cay", "05"], - ["Deadman's Cay", "06"], - ["Dog Island", "07"], - ["East Cay", "08"], - ["Little Island", "09"], - ["Little Scrub Island", "10"], - ["Mid Cay", "11"], - ["North Cay", "12"], - ["Prickly Pear Cays", "13"], - ["Rabbit Island", "14"], - ["Sandy Island/Sand Island", "15"], - ["Scilly Cay", "16"], - ["Scrub Island", "17"], - ["Seal Island", "18"], - ["Sombrero/Hat Island", "19"], - ["South Cay", "20"], - ["South Wager Island", "21"], - ["West Cay", "22"], - ], -]; -export const AQ = ["Antarctica", "AQ", [["Antarctica", "AQ"]]]; + 'Anguilla', + 'AI', + [ + ['Anguilla', '01'], + ['Anguillita Island', '02'], + ['Blowing Rock', '03'], + ['Cove Cay', '04'], + ['Crocus Cay', '05'], + ["Deadman's Cay", '06'], + ['Dog Island', '07'], + ['East Cay', '08'], + ['Little Island', '09'], + ['Little Scrub Island', '10'], + ['Mid Cay', '11'], + ['North Cay', '12'], + ['Prickly Pear Cays', '13'], + ['Rabbit Island', '14'], + ['Sandy Island/Sand Island', '15'], + ['Scilly Cay', '16'], + ['Scrub Island', '17'], + ['Seal Island', '18'], + ['Sombrero/Hat Island', '19'], + ['South Cay', '20'], + ['South Wager Island', '21'], + ['West Cay', '22'], + ], +]; +export const AQ = ['Antarctica', 'AQ', [['Antarctica', 'AQ']]]; export const AG = [ - "Antigua and Barbuda", - "AG", - [ - ["Antigua Island", "01"], - ["Barbuda Island", "02"], - ["Bird Island", "04"], - ["Bishop Island", "05"], - ["Blake Island", "06"], - ["Crump Island", "09"], - ["Dulcina Island", "10"], - ["Exchange Island", "11"], - ["Five Islands", "12"], - ["Great Bird Island", "13"], - ["Green Island", "14"], - ["Guiana Island", "15"], - ["Hawes Island", "17"], - ["Hells Gate Island", "16"], - ["Henry Island", "18"], - ["Johnson Island", "19"], - ["Kid Island", "20"], - ["Lobster Island", "22"], - ["Maiden Island", "24"], - ["Moor Island", "25"], - ["Nanny Island", "26"], - ["Pelican Island", "27"], - ["Prickly Pear Island", "28"], - ["Rabbit Island", "29"], - ["Red Head Island", "31"], - ["Redonda Island", "03"], - ["Sandy Island", "32"], - ["Smith Island", "33"], - ["The Sisters", "34"], - ["Vernon Island", "35"], - ["Wicked Will Island", "36"], - ["York Island", "37"], - ], + 'Antigua and Barbuda', + 'AG', + [ + ['Antigua Island', '01'], + ['Barbuda Island', '02'], + ['Bird Island', '04'], + ['Bishop Island', '05'], + ['Blake Island', '06'], + ['Crump Island', '09'], + ['Dulcina Island', '10'], + ['Exchange Island', '11'], + ['Five Islands', '12'], + ['Great Bird Island', '13'], + ['Green Island', '14'], + ['Guiana Island', '15'], + ['Hawes Island', '17'], + ['Hells Gate Island', '16'], + ['Henry Island', '18'], + ['Johnson Island', '19'], + ['Kid Island', '20'], + ['Lobster Island', '22'], + ['Maiden Island', '24'], + ['Moor Island', '25'], + ['Nanny Island', '26'], + ['Pelican Island', '27'], + ['Prickly Pear Island', '28'], + ['Rabbit Island', '29'], + ['Red Head Island', '31'], + ['Redonda Island', '03'], + ['Sandy Island', '32'], + ['Smith Island', '33'], + ['The Sisters', '34'], + ['Vernon Island', '35'], + ['Wicked Will Island', '36'], + ['York Island', '37'], + ], ]; export const AR = [ - "Argentina", - "AR", - [ - ["Buenos Aires", "B"], - ["Capital Federal", "C"], - ["Catamarca", "K"], - ["Chaco", "H"], - ["Chubut", "U"], - ["Córdoba", "X"], - ["Corrientes", "W"], - ["Entre Ríos", "E"], - ["Formosa", "P"], - ["Jujuy", "Y"], - ["La Pampa", "L"], - ["La Rioja", "F"], - ["Mendoza", "M"], - ["Misiones", "N"], - ["Neuquén", "Q"], - ["Río Negro", "R"], - ["Salta", "A"], - ["San Juan", "J"], - ["San Luis", "D"], - ["Santa Cruz", "Z"], - ["Santa Fe", "S"], - ["Santiago del Estero", "G"], - ["Tierra del Fuego", "V"], - ["Tucumán", "T"], - ], + 'Argentina', + 'AR', + [ + ['Buenos Aires', 'B'], + ['Capital Federal', 'C'], + ['Catamarca', 'K'], + ['Chaco', 'H'], + ['Chubut', 'U'], + ['Córdoba', 'X'], + ['Corrientes', 'W'], + ['Entre Ríos', 'E'], + ['Formosa', 'P'], + ['Jujuy', 'Y'], + ['La Pampa', 'L'], + ['La Rioja', 'F'], + ['Mendoza', 'M'], + ['Misiones', 'N'], + ['Neuquén', 'Q'], + ['Río Negro', 'R'], + ['Salta', 'A'], + ['San Juan', 'J'], + ['San Luis', 'D'], + ['Santa Cruz', 'Z'], + ['Santa Fe', 'S'], + ['Santiago del Estero', 'G'], + ['Tierra del Fuego', 'V'], + ['Tucumán', 'T'], + ], ]; export const AM = [ - "Armenia", - "AM", - [ - ["Aragatsotn", "AG"], - ["Ararat", "AR"], - ["Armavir", "AV"], - ["Gegharkunik", "GR"], - ["Kotayk", "KT"], - ["Lori", "LO"], - ["Shirak", "SH"], - ["Syunik", "SU"], - ["Tavush", "TV"], - ["Vayots Dzor", "VD"], - ["Yerevan", "ER"], - ], -]; -export const AW = ["Aruba", "AW", [["Aruba", "AW"]]]; + 'Armenia', + 'AM', + [ + ['Aragatsotn', 'AG'], + ['Ararat', 'AR'], + ['Armavir', 'AV'], + ['Gegharkunik', 'GR'], + ['Kotayk', 'KT'], + ['Lori', 'LO'], + ['Shirak', 'SH'], + ['Syunik', 'SU'], + ['Tavush', 'TV'], + ['Vayots Dzor', 'VD'], + ['Yerevan', 'ER'], + ], +]; +export const AW = ['Aruba', 'AW', [['Aruba', 'AW']]]; export const AU = [ - "Australia", - "AU", - [ - ["Australian Capital Territory", "ACT"], - ["New South Wales", "NSW"], - ["Northern Territory", "NT"], - ["Queensland", "QLD"], - ["South Australia", "SA"], - ["Tasmania", "TAS"], - ["Victoria", "VIC"], - ["Western Australia", "WA"], - ], + 'Australia', + 'AU', + [ + ['Australian Capital Territory', 'ACT'], + ['New South Wales', 'NSW'], + ['Northern Territory', 'NT'], + ['Queensland', 'QLD'], + ['South Australia', 'SA'], + ['Tasmania', 'TAS'], + ['Victoria', 'VIC'], + ['Western Australia', 'WA'], + ], ]; export const AT = [ - "Austria", - "AT", - [ - ["Burgenland", "1"], - ["Kärnten", "2"], - ["Niederösterreich", "3"], - ["Oberösterreich", "4"], - ["Salzburg", "5"], - ["Steiermark", "6"], - ["Tirol", "7"], - ["Vorarlberg", "8"], - ["Wien", "9"], - ], + 'Austria', + 'AT', + [ + ['Burgenland', '1'], + ['Kärnten', '2'], + ['Niederösterreich', '3'], + ['Oberösterreich', '4'], + ['Salzburg', '5'], + ['Steiermark', '6'], + ['Tirol', '7'], + ['Vorarlberg', '8'], + ['Wien', '9'], + ], ]; export const AZ = [ - "Azerbaijan", - "AZ", - [ - ["Abşeron", "ABS"], - ["Ağcabədi", "AGC"], - ["Ağdam", "AGM"], - ["Ağdaş", "AGS"], - ["Ağstafa", "AGA"], - ["Ağsu", "AGU"], - ["Astara", "AST"], - ["Bakı", "BAK"], - ["Babək", "BAB"], - ["Balakən", "BAL"], - ["Bərdə", "BAR"], - ["Beyləqan", "BEY"], - ["Biləsuvar", "BIL"], - ["Cəbrayıl", "CAB"], - ["Cəlilabad", "CAL"], - ["Culfa", "CUL"], - ["Daşkəsən", "DAS"], - ["Füzuli", "FUZ"], - ["Gədəbəy", "GAD"], - ["Goranboy", "GOR"], - ["Göyçay", "GOY"], - ["Göygöl", "GYG"], - ["Hacıqabul", "HAC"], - ["İmişli", "IMI"], - ["İsmayıllı", "ISM"], - ["Kəlbəcər", "KAL"], - ["Kǝngǝrli", "KAN"], - ["Kürdəmir", "KUR"], - ["Laçın", "LAC"], - ["Lənkəran", "LAN"], - ["Lerik", "LER"], - ["Masallı", "MAS"], - ["Neftçala", "NEF"], - ["Oğuz", "OGU"], - ["Ordubad", "ORD"], - ["Qəbələ", "QAB"], - ["Qax", "QAX"], - ["Qazax", "QAZ"], - ["Qobustan", "QOB"], - ["Quba", "QBA"], - ["Qubadli", "QBI"], - ["Qusar", "QUS"], - ["Saatlı", "SAT"], - ["Sabirabad", "SAB"], - ["Şabran", "SBN"], - ["Sədərək", "SAD"], - ["Şahbuz", "SAH"], - ["Şəki", "SAK"], - ["Salyan", "SAL"], - ["Şamaxı", "SMI"], - ["Şəmkir", "SKR"], - ["Samux", "SMX"], - ["Şərur", "SAR"], - ["Siyəzən", "SIY"], - ["Şuşa", "SUS"], - ["Tərtər", "TAR"], - ["Tovuz", "TOV"], - ["Ucar", "UCA"], - ["Xaçmaz", "XAC"], - ["Xızı", "XIZ"], - ["Xocalı", "XCI"], - ["Xocavənd", "XVD"], - ["Yardımlı", "YAR"], - ["Yevlax", "YEV"], - ["Zəngilan", "ZAN"], - ["Zaqatala", "ZAQ"], - ["Zərdab", "ZAR"], - ], + 'Azerbaijan', + 'AZ', + [ + ['Abşeron', 'ABS'], + ['Ağcabədi', 'AGC'], + ['Ağdam', 'AGM'], + ['Ağdaş', 'AGS'], + ['Ağstafa', 'AGA'], + ['Ağsu', 'AGU'], + ['Astara', 'AST'], + ['Bakı', 'BAK'], + ['Babək', 'BAB'], + ['Balakən', 'BAL'], + ['Bərdə', 'BAR'], + ['Beyləqan', 'BEY'], + ['Biləsuvar', 'BIL'], + ['Cəbrayıl', 'CAB'], + ['Cəlilabad', 'CAL'], + ['Culfa', 'CUL'], + ['Daşkəsən', 'DAS'], + ['Füzuli', 'FUZ'], + ['Gədəbəy', 'GAD'], + ['Goranboy', 'GOR'], + ['Göyçay', 'GOY'], + ['Göygöl', 'GYG'], + ['Hacıqabul', 'HAC'], + ['İmişli', 'IMI'], + ['İsmayıllı', 'ISM'], + ['Kəlbəcər', 'KAL'], + ['Kǝngǝrli', 'KAN'], + ['Kürdəmir', 'KUR'], + ['Laçın', 'LAC'], + ['Lənkəran', 'LAN'], + ['Lerik', 'LER'], + ['Masallı', 'MAS'], + ['Neftçala', 'NEF'], + ['Oğuz', 'OGU'], + ['Ordubad', 'ORD'], + ['Qəbələ', 'QAB'], + ['Qax', 'QAX'], + ['Qazax', 'QAZ'], + ['Qobustan', 'QOB'], + ['Quba', 'QBA'], + ['Qubadli', 'QBI'], + ['Qusar', 'QUS'], + ['Saatlı', 'SAT'], + ['Sabirabad', 'SAB'], + ['Şabran', 'SBN'], + ['Sədərək', 'SAD'], + ['Şahbuz', 'SAH'], + ['Şəki', 'SAK'], + ['Salyan', 'SAL'], + ['Şamaxı', 'SMI'], + ['Şəmkir', 'SKR'], + ['Samux', 'SMX'], + ['Şərur', 'SAR'], + ['Siyəzən', 'SIY'], + ['Şuşa', 'SUS'], + ['Tərtər', 'TAR'], + ['Tovuz', 'TOV'], + ['Ucar', 'UCA'], + ['Xaçmaz', 'XAC'], + ['Xızı', 'XIZ'], + ['Xocalı', 'XCI'], + ['Xocavənd', 'XVD'], + ['Yardımlı', 'YAR'], + ['Yevlax', 'YEV'], + ['Zəngilan', 'ZAN'], + ['Zaqatala', 'ZAQ'], + ['Zərdab', 'ZAR'], + ], ]; export const BS = [ - "Bahamas", - "BS", - [ - ["Acklins Island", "01"], - ["Berry Islands", "22"], - ["Bimini", "02"], - ["Black Point", "23"], - ["Cat Island", "03"], - ["Central Abaco", "24"], - ["Crooked Island and Long Cay", "28"], - ["East Grand Bahama", "29"], - ["Exuma", "04"], - ["Freeport", "05"], - ["Fresh Creek", "06"], - ["Governor's Harbour", "07"], - ["Green Turtle Cay", "08"], - ["Harbour Island", "09"], - ["High Rock", "10"], - ["Inagua", "11"], - ["Kemps Bay", "12"], - ["Long Island", "13"], - ["Marsh Harbour", "14"], - ["Mayaguana", "15"], - ["Moore’s Island", "40"], - ["New Providence", "16"], - ["Nichollstown and Berry Islands", "17"], - ["North Abaco", "42"], - ["North Andros", "41"], - ["North Eleuthera", "33"], - ["Ragged Island", "18"], - ["Rock Sound", "19"], - ["San Salvador and Rum Cay", "20"], - ["Sandy Point", "21"], - ["South Abaco", "35"], - ["South Andros", "36"], - ["South Eleuthera", "37"], - ["West Grand Bahama", "39"], - ["Central Andros", "43"], - ["Central Eleuthera", "44"], - ["Grand Cay", "45"], - ["Hope Town", "46"], - ["Mangrove Cay", "47"], - ["Spanish Wells", "48"], - ], + 'Bahamas', + 'BS', + [ + ['Acklins Island', '01'], + ['Berry Islands', '22'], + ['Bimini', '02'], + ['Black Point', '23'], + ['Cat Island', '03'], + ['Central Abaco', '24'], + ['Crooked Island and Long Cay', '28'], + ['East Grand Bahama', '29'], + ['Exuma', '04'], + ['Freeport', '05'], + ['Fresh Creek', '06'], + ["Governor's Harbour", '07'], + ['Green Turtle Cay', '08'], + ['Harbour Island', '09'], + ['High Rock', '10'], + ['Inagua', '11'], + ['Kemps Bay', '12'], + ['Long Island', '13'], + ['Marsh Harbour', '14'], + ['Mayaguana', '15'], + ['Moore’s Island', '40'], + ['New Providence', '16'], + ['Nichollstown and Berry Islands', '17'], + ['North Abaco', '42'], + ['North Andros', '41'], + ['North Eleuthera', '33'], + ['Ragged Island', '18'], + ['Rock Sound', '19'], + ['San Salvador and Rum Cay', '20'], + ['Sandy Point', '21'], + ['South Abaco', '35'], + ['South Andros', '36'], + ['South Eleuthera', '37'], + ['West Grand Bahama', '39'], + ['Central Andros', '43'], + ['Central Eleuthera', '44'], + ['Grand Cay', '45'], + ['Hope Town', '46'], + ['Mangrove Cay', '47'], + ['Spanish Wells', '48'], + ], ]; export const BH = [ - "Bahrain", - "BH", - [ - ["Al Janūbīyah", "14"], - ["Al Manāmah", "13"], - ["Al Muḩarraq", "15"], - ["Al Wusţá", "16"], - ["Ash Shamālīyah", "17"], - ], + 'Bahrain', + 'BH', + [ + ['Al Janūbīyah', '14'], + ['Al Manāmah', '13'], + ['Al Muḩarraq', '15'], + ['Al Wusţá', '16'], + ['Ash Shamālīyah', '17'], + ], ]; export const BD = [ - "Bangladesh", - "BD", - [ - ["Barisal", "A"], - ["Chittagong", "B"], - ["Dhaka", "C"], - ["Khulna", "D"], - ["Mymensingh", "M"], - ["Rajshahi", "E"], - ["Rangpur", "F"], - ["Sylhet", "G"], - ], + 'Bangladesh', + 'BD', + [ + ['Barisal', 'A'], + ['Chittagong', 'B'], + ['Dhaka', 'C'], + ['Khulna', 'D'], + ['Mymensingh', 'M'], + ['Rajshahi', 'E'], + ['Rangpur', 'F'], + ['Sylhet', 'G'], + ], ]; export const BB = [ - "Barbados", - "BB", - [ - ["Christ Church", "01"], - ["Saint Andrew", "02"], - ["Saint George", "03"], - ["Saint James", "04"], - ["Saint John", "05"], - ["Saint Joseph", "06"], - ["Saint Lucy", "07"], - ["Saint Michael", "08"], - ["Saint Peter", "09"], - ["Saint Philip", "10"], - ["Saint Thomas", "11"], - ], + 'Barbados', + 'BB', + [ + ['Christ Church', '01'], + ['Saint Andrew', '02'], + ['Saint George', '03'], + ['Saint James', '04'], + ['Saint John', '05'], + ['Saint Joseph', '06'], + ['Saint Lucy', '07'], + ['Saint Michael', '08'], + ['Saint Peter', '09'], + ['Saint Philip', '10'], + ['Saint Thomas', '11'], + ], ]; export const BY = [ - "Belarus", - "BY", - [ - ["Brest voblast", "BR"], - ["Gorod Minsk", "HM"], - ["Homiel voblast", "HO"], - ["Hrodna voblast", "HR"], - ["Mahilyow voblast", "MA"], - ["Minsk voblast", "MI"], - ["Vitsebsk voblast", "VI"], - ], + 'Belarus', + 'BY', + [ + ['Brest voblast', 'BR'], + ['Gorod Minsk', 'HM'], + ['Homiel voblast', 'HO'], + ['Hrodna voblast', 'HR'], + ['Mahilyow voblast', 'MA'], + ['Minsk voblast', 'MI'], + ['Vitsebsk voblast', 'VI'], + ], ]; export const BE = [ - "Belgium", - "BE", - [ - ["Brussels", "BRU"], - ["Flanders", "VLG"], - ["Wallonia", "WAL"], - ], + 'Belgium', + 'BE', + [ + ['Brussels', 'BRU'], + ['Flanders', 'VLG'], + ['Wallonia', 'WAL'], + ], ]; export const BZ = [ - "Belize", - "BZ", - [ - ["Belize District", "BZ"], - ["Cayo District", "CY"], - ["Corozal District", "CZL"], - ["Orange Walk District", "OW"], - ["Stann Creek District", "SC"], - ["Toledo District", "TOL"], - ], + 'Belize', + 'BZ', + [ + ['Belize District', 'BZ'], + ['Cayo District', 'CY'], + ['Corozal District', 'CZL'], + ['Orange Walk District', 'OW'], + ['Stann Creek District', 'SC'], + ['Toledo District', 'TOL'], + ], ]; export const BJ = [ - "Benin", - "BJ", - [ - ["Alibori", "AL"], - ["Atakora", "AK"], - ["Atlantique", "AQ"], - ["Borgou", "BO"], - ["Collines Department", "CO"], - ["Donga", "DO"], - ["Kouffo", "KO"], - ["Littoral Department", "LI"], - ["Mono Department", "MO"], - ["Ouémé", "OU"], - ["Plateau", "PL"], - ["Zou", "ZO"], - ], + 'Benin', + 'BJ', + [ + ['Alibori', 'AL'], + ['Atakora', 'AK'], + ['Atlantique', 'AQ'], + ['Borgou', 'BO'], + ['Collines Department', 'CO'], + ['Donga', 'DO'], + ['Kouffo', 'KO'], + ['Littoral Department', 'LI'], + ['Mono Department', 'MO'], + ['Ouémé', 'OU'], + ['Plateau', 'PL'], + ['Zou', 'ZO'], + ], ]; export const BM = [ - "Bermuda", - "BM", - [ - ["City of Hamilton", "03"], - ["Devonshire Parish", "01"], - ["Hamilton Parish", "02"], - ["Paget Parish", "04"], - ["Pembroke Parish", "05"], - ["Sandys Parish", "08"], - ["Smith's Parish", "09"], - ["Southampton Parish", "10"], - ["St. George's Parish", "07"], - ["Town of St. George", "06"], - ["Warwick Parish", "11"], - ], + 'Bermuda', + 'BM', + [ + ['City of Hamilton', '03'], + ['Devonshire Parish', '01'], + ['Hamilton Parish', '02'], + ['Paget Parish', '04'], + ['Pembroke Parish', '05'], + ['Sandys Parish', '08'], + ["Smith's Parish", '09'], + ['Southampton Parish', '10'], + ["St. George's Parish", '07'], + ['Town of St. George', '06'], + ['Warwick Parish', '11'], + ], ]; export const BT = [ - "Bhutan", - "BT", - [ - ["Bumthang", "33"], - ["Chhukha", "12"], - ["Dagana", "22"], - ["Gasa", "GA"], - ["Haa", "13"], - ["Lhuntse", "44"], - ["Mongar", "42"], - ["Paro", "11"], - ["Pemagatshel", "43"], - ["Punakha", "23"], - ["Samdrup Jongkhar", "45"], - ["Samtse", "14"], - ["Sarpang", "31"], - ["Thimphu", "15"], - ["Trashigang", "41"], - ["Trashiyangtse", "TY"], - ["Trongsa", "32"], - ["Tsirang", "21"], - ["Wangdue Phodrang", "24"], - ["Zhemgang", "34"], - ], + 'Bhutan', + 'BT', + [ + ['Bumthang', '33'], + ['Chhukha', '12'], + ['Dagana', '22'], + ['Gasa', 'GA'], + ['Haa', '13'], + ['Lhuntse', '44'], + ['Mongar', '42'], + ['Paro', '11'], + ['Pemagatshel', '43'], + ['Punakha', '23'], + ['Samdrup Jongkhar', '45'], + ['Samtse', '14'], + ['Sarpang', '31'], + ['Thimphu', '15'], + ['Trashigang', '41'], + ['Trashiyangtse', 'TY'], + ['Trongsa', '32'], + ['Tsirang', '21'], + ['Wangdue Phodrang', '24'], + ['Zhemgang', '34'], + ], ]; export const BO = [ - "Bolivia", - "BO", - [ - ["Beni", "BE"], - ["Chuquisaca", "CH"], - ["Cochabamba", "CB"], - ["La Paz", "LP"], - ["Oruro", "OR"], - ["Pando", "PD"], - ["Potosí", "PT"], - ["Santa Cruz", "SC"], - ["Tarija", "TJ"], - ], + 'Bolivia', + 'BO', + [ + ['Beni', 'BE'], + ['Chuquisaca', 'CH'], + ['Cochabamba', 'CB'], + ['La Paz', 'LP'], + ['Oruro', 'OR'], + ['Pando', 'PD'], + ['Potosí', 'PT'], + ['Santa Cruz', 'SC'], + ['Tarija', 'TJ'], + ], ]; export const BQ = [ - "Bonaire, Sint Eustatius and Saba", - "BQ", - [ - ["Bonaire", "BO"], - ["Saba Isand", "SA"], - ["Sint Eustatius", "SE"], - ], + 'Bonaire, Sint Eustatius and Saba', + 'BQ', + [ + ['Bonaire', 'BO'], + ['Saba Isand', 'SA'], + ['Sint Eustatius', 'SE'], + ], ]; export const BA = [ - "Bosnia and Herzegovina", - "BA", - [ - ["Brčko Distrikt", "BRC"], - ["Federacija Bosne i Hercegovine", "BIH"], - ["Republika Srpska", "SRP"], - ], + 'Bosnia and Herzegovina', + 'BA', + [ + ['Brčko Distrikt', 'BRC'], + ['Federacija Bosne i Hercegovine', 'BIH'], + ['Republika Srpska', 'SRP'], + ], ]; export const BW = [ - "Botswana", - "BW", - [ - ["Central", "CE"], - ["Ghanzi", "GH"], - ["Kgalagadi", "KG"], - ["Kgatleng", "KL"], - ["Kweneng", "KW"], - ["North West", "NW"], - ["North-East", "NE"], - ["South East", "SE"], - ["Southern", "SO"], - ], -]; -export const BV = ["Bouvet Island", "BV", [["Bouvet Island", "BV"]]]; + 'Botswana', + 'BW', + [ + ['Central', 'CE'], + ['Ghanzi', 'GH'], + ['Kgalagadi', 'KG'], + ['Kgatleng', 'KL'], + ['Kweneng', 'KW'], + ['North West', 'NW'], + ['North-East', 'NE'], + ['South East', 'SE'], + ['Southern', 'SO'], + ], +]; +export const BV = ['Bouvet Island', 'BV', [['Bouvet Island', 'BV']]]; export const BR = [ - "Brazil", - "BR", - [ - ["Acre", "AC"], - ["Alagoas", "AL"], - ["Amapá", "AP"], - ["Amazonas", "AM"], - ["Bahia", "BA"], - ["Ceará", "CE"], - ["Distrito Federal", "DF"], - ["Espírito Santo", "ES"], - ["Goiás", "GO"], - ["Maranhão", "MA"], - ["Mato Grosso", "MT"], - ["Mato Grosso do Sul", "MS"], - ["Minas Gerais", "MG"], - ["Pará", "PA"], - ["Paraíba", "PB"], - ["Paraná", "PR"], - ["Pernambuco", "PE"], - ["Piauí", "PI"], - ["Rio de Janeiro", "RJ"], - ["Rio Grande do Norte", "RN"], - ["Rio Grande do Sul", "RS"], - ["Rondônia", "RO"], - ["Roraima", "RR"], - ["Santa Catarina", "SC"], - ["São Paulo", "SP"], - ["Sergipe", "SE"], - ["Tocantins", "TO"], - ], -]; -export const IO = [ - "British Indian Ocean Territory", - "IO", - [["British Indian Ocean Territory", "IO"]], -]; + 'Brazil', + 'BR', + [ + ['Acre', 'AC'], + ['Alagoas', 'AL'], + ['Amapá', 'AP'], + ['Amazonas', 'AM'], + ['Bahia', 'BA'], + ['Ceará', 'CE'], + ['Distrito Federal', 'DF'], + ['Espírito Santo', 'ES'], + ['Goiás', 'GO'], + ['Maranhão', 'MA'], + ['Mato Grosso', 'MT'], + ['Mato Grosso do Sul', 'MS'], + ['Minas Gerais', 'MG'], + ['Pará', 'PA'], + ['Paraíba', 'PB'], + ['Paraná', 'PR'], + ['Pernambuco', 'PE'], + ['Piauí', 'PI'], + ['Rio de Janeiro', 'RJ'], + ['Rio Grande do Norte', 'RN'], + ['Rio Grande do Sul', 'RS'], + ['Rondônia', 'RO'], + ['Roraima', 'RR'], + ['Santa Catarina', 'SC'], + ['São Paulo', 'SP'], + ['Sergipe', 'SE'], + ['Tocantins', 'TO'], + ], +]; +export const IO = ['British Indian Ocean Territory', 'IO', [['British Indian Ocean Territory', 'IO']]]; export const BN = [ - "Brunei Darussalam", - "BN", - [ - ["Belait", "BE"], - ["Brunei Muara", "BM"], - ["Temburong", "TE"], - ["Tutong", "TU"], - ], + 'Brunei Darussalam', + 'BN', + [ + ['Belait', 'BE'], + ['Brunei Muara', 'BM'], + ['Temburong', 'TE'], + ['Tutong', 'TU'], + ], ]; export const BG = [ - "Bulgaria", - "BG", - [ - ["Blagoevgrad", "01"], - ["Burgas", "02"], - ["Dobrich", "08"], - ["Gabrovo", "07"], - ["Jambol", "28"], - ["Khaskovo", "26"], - ["Kjustendil", "10"], - ["Kurdzhali", "09"], - ["Lovech", "11"], - ["Montana", "12"], - ["Pazardzhik", "13"], - ["Pernik", "14"], - ["Pleven", "15"], - ["Plovdiv", "16"], - ["Razgrad", "17"], - ["Ruse", "18"], - ["Shumen", "27"], - ["Silistra", "19"], - ["Sliven", "20"], - ["Smoljan", "21"], - ["Sofija", "23"], - ["Sofija-Grad", "22"], - ["Stara Zagora", "24"], - ["Turgovishhe", "25"], - ["Varna", "03"], - ["Veliko Turnovo", "04"], - ["Vidin", "05"], - ["Vraca", "06"], - ], + 'Bulgaria', + 'BG', + [ + ['Blagoevgrad', '01'], + ['Burgas', '02'], + ['Dobrich', '08'], + ['Gabrovo', '07'], + ['Jambol', '28'], + ['Khaskovo', '26'], + ['Kjustendil', '10'], + ['Kurdzhali', '09'], + ['Lovech', '11'], + ['Montana', '12'], + ['Pazardzhik', '13'], + ['Pernik', '14'], + ['Pleven', '15'], + ['Plovdiv', '16'], + ['Razgrad', '17'], + ['Ruse', '18'], + ['Shumen', '27'], + ['Silistra', '19'], + ['Sliven', '20'], + ['Smoljan', '21'], + ['Sofija', '23'], + ['Sofija-Grad', '22'], + ['Stara Zagora', '24'], + ['Turgovishhe', '25'], + ['Varna', '03'], + ['Veliko Turnovo', '04'], + ['Vidin', '05'], + ['Vraca', '06'], + ], ]; export const BF = [ - "Burkina Faso", - "BF", - [ - ["Balé", "BAL"], - ["Bam/Lake Bam", "BAM"], - ["Banwa Province", "BAN"], - ["Bazèga", "BAZ"], - ["Bougouriba", "BGR"], - ["Boulgou Province", "BLG"], - ["Boulkiemdé", "BLK"], - ["Comoé/Komoe", "COM"], - ["Ganzourgou Province", "GAN"], - ["Gnagna", "GNA"], - ["Gourma Province", "GOU"], - ["Houet", "HOU"], - ["Ioba", "IOB"], - ["Kadiogo", "KAD"], - ["Kénédougou", "KEN"], - ["Komondjari", "KMD"], - ["Kompienga", "KMP"], - ["Kossi Province", "KOS"], - ["Koulpélogo", "KOP"], - ["Kouritenga", "KOT"], - ["Kourwéogo", "KOW"], - ["Léraba", "LER"], - ["Loroum", "LOR"], - ["Mouhoun", "MOU"], - ["Namentenga", "NAM"], - ["Naouri/Nahouri", "NAO"], - ["Nayala", "NAY"], - ["Noumbiel", "NOU"], - ["Oubritenga", "OUB"], - ["Oudalan", "OUD"], - ["Passoré", "PAS"], - ["Poni", "PON"], - ["Sanguié", "SNG"], - ["Sanmatenga", "SMT"], - ["Séno", "SEN"], - ["Sissili", "SIS"], - ["Soum", "SOM"], - ["Sourou", "SOR"], - ["Tapoa", "TAP"], - ["Tui/Tuy", "TUI"], - ["Yagha", "YAG"], - ["Yatenga", "YAT"], - ["Ziro", "ZIR"], - ["Zondoma", "ZON"], - ["Zoundwéogo", "ZOU"], - ], + 'Burkina Faso', + 'BF', + [ + ['Balé', 'BAL'], + ['Bam/Lake Bam', 'BAM'], + ['Banwa Province', 'BAN'], + ['Bazèga', 'BAZ'], + ['Bougouriba', 'BGR'], + ['Boulgou Province', 'BLG'], + ['Boulkiemdé', 'BLK'], + ['Comoé/Komoe', 'COM'], + ['Ganzourgou Province', 'GAN'], + ['Gnagna', 'GNA'], + ['Gourma Province', 'GOU'], + ['Houet', 'HOU'], + ['Ioba', 'IOB'], + ['Kadiogo', 'KAD'], + ['Kénédougou', 'KEN'], + ['Komondjari', 'KMD'], + ['Kompienga', 'KMP'], + ['Kossi Province', 'KOS'], + ['Koulpélogo', 'KOP'], + ['Kouritenga', 'KOT'], + ['Kourwéogo', 'KOW'], + ['Léraba', 'LER'], + ['Loroum', 'LOR'], + ['Mouhoun', 'MOU'], + ['Namentenga', 'NAM'], + ['Naouri/Nahouri', 'NAO'], + ['Nayala', 'NAY'], + ['Noumbiel', 'NOU'], + ['Oubritenga', 'OUB'], + ['Oudalan', 'OUD'], + ['Passoré', 'PAS'], + ['Poni', 'PON'], + ['Sanguié', 'SNG'], + ['Sanmatenga', 'SMT'], + ['Séno', 'SEN'], + ['Sissili', 'SIS'], + ['Soum', 'SOM'], + ['Sourou', 'SOR'], + ['Tapoa', 'TAP'], + ['Tui/Tuy', 'TUI'], + ['Yagha', 'YAG'], + ['Yatenga', 'YAT'], + ['Ziro', 'ZIR'], + ['Zondoma', 'ZON'], + ['Zoundwéogo', 'ZOU'], + ], ]; export const BI = [ - "Burundi", - "BI", - [ - ["Bubanza", "BB"], - ["Bujumbura Mairie", "BM"], - ["Bujumbura Rural", "BL"], - ["Bururi", "BR"], - ["Cankuzo", "CA"], - ["Cibitoke", "CI"], - ["Gitega", "GI"], - ["Karuzi", "KR"], - ["Kayanza", "KY"], - ["Kirundo", "KI"], - ["Makamba", "MA"], - ["Muramvya", "MU"], - ["Muyinga", "MY"], - ["Mwaro", "MW"], - ["Ngozi", "NG"], - ["Rutana", "RT"], - ["Ruyigi", "RY"], - ], + 'Burundi', + 'BI', + [ + ['Bubanza', 'BB'], + ['Bujumbura Mairie', 'BM'], + ['Bujumbura Rural', 'BL'], + ['Bururi', 'BR'], + ['Cankuzo', 'CA'], + ['Cibitoke', 'CI'], + ['Gitega', 'GI'], + ['Karuzi', 'KR'], + ['Kayanza', 'KY'], + ['Kirundo', 'KI'], + ['Makamba', 'MA'], + ['Muramvya', 'MU'], + ['Muyinga', 'MY'], + ['Mwaro', 'MW'], + ['Ngozi', 'NG'], + ['Rutana', 'RT'], + ['Ruyigi', 'RY'], + ], ]; export const KH = [ - "Cambodia", - "KH", - [ - ["Baat Dambang", "2"], - ["Banteay Mean Chey", "1"], - ["Kampong Chaam", "3"], - ["Kampong Chhnang", "4"], - ["Kampong Spueu", "5"], - ["Kampong Thum", "6"], - ["Kampot", "7"], - ["Kandaal", "8"], - ["Kaoh Kong", "9"], - ["Kracheh", "10"], - ["Krong Kaeb", "23"], - ["Krong Pailin", "24"], - ["Krong Preah Sihanouk", "18"], - ["Mondol Kiri", "11"], - ["Otdar Mean Chey", "22"], - ["Phnom Penh", "12"], - ["Pousaat", "15"], - ["Preah Vihear", "13"], - ["Prey Veaeng", "14"], - ["Rotanah Kiri", "16"], - ["Siem Reab", "17"], - ["Stueng Treng", "19"], - ["Svaay Rieng", "20"], - ["Taakaev", "21"], - ["Tbong Khmum", "25"], - ], + 'Cambodia', + 'KH', + [ + ['Baat Dambang', '2'], + ['Banteay Mean Chey', '1'], + ['Kampong Chaam', '3'], + ['Kampong Chhnang', '4'], + ['Kampong Spueu', '5'], + ['Kampong Thum', '6'], + ['Kampot', '7'], + ['Kandaal', '8'], + ['Kaoh Kong', '9'], + ['Kracheh', '10'], + ['Krong Kaeb', '23'], + ['Krong Pailin', '24'], + ['Krong Preah Sihanouk', '18'], + ['Mondol Kiri', '11'], + ['Otdar Mean Chey', '22'], + ['Phnom Penh', '12'], + ['Pousaat', '15'], + ['Preah Vihear', '13'], + ['Prey Veaeng', '14'], + ['Rotanah Kiri', '16'], + ['Siem Reab', '17'], + ['Stueng Treng', '19'], + ['Svaay Rieng', '20'], + ['Taakaev', '21'], + ['Tbong Khmum', '25'], + ], ]; export const CM = [ - "Cameroon", - "CM", - [ - ["Adamaoua", "AD"], - ["Centre", "CE"], - ["Est", "ES"], - ["Extrême-Nord", "EN"], - ["Littoral", "LT"], - ["Nord", "NO"], - ["Nord-Ouest", "NW"], - ["Ouest", "OU"], - ["Sud", "SU"], - ["Sud-Ouest", "SW"], - ], + 'Cameroon', + 'CM', + [ + ['Adamaoua', 'AD'], + ['Centre', 'CE'], + ['Est', 'ES'], + ['Extrême-Nord', 'EN'], + ['Littoral', 'LT'], + ['Nord', 'NO'], + ['Nord-Ouest', 'NW'], + ['Ouest', 'OU'], + ['Sud', 'SU'], + ['Sud-Ouest', 'SW'], + ], ]; export const CA = [ - "Canada", - "CA", - [ - ["Alberta", "AB"], - ["British Columbia", "BC"], - ["Manitoba", "MB"], - ["New Brunswick", "NB"], - ["Newfoundland and Labrador", "NL"], - ["Northwest Territories", "NT"], - ["Nova Scotia", "NS"], - ["Nunavut", "NU"], - ["Ontario", "ON"], - ["Prince Edward Island", "PE"], - ["Quebec", "QC"], - ["Saskatchewan", "SK"], - ["Yukon", "YT"], - ], + 'Canada', + 'CA', + [ + ['Alberta', 'AB'], + ['British Columbia', 'BC'], + ['Manitoba', 'MB'], + ['New Brunswick', 'NB'], + ['Newfoundland and Labrador', 'NL'], + ['Northwest Territories', 'NT'], + ['Nova Scotia', 'NS'], + ['Nunavut', 'NU'], + ['Ontario', 'ON'], + ['Prince Edward Island', 'PE'], + ['Quebec', 'QC'], + ['Saskatchewan', 'SK'], + ['Yukon', 'YT'], + ], ]; export const CV = [ - "Cape Verde", - "CV", - [ - ["Boa Vista", "BV"], - ["Brava", "BR"], - ["Calheta de São Miguel", "CS"], - ["Maio", "MA"], - ["Mosteiros", "MO"], - ["Paúl", "PA"], - ["Porto Novo", "PN"], - ["Praia", "PR"], - ["Ribeira Brava", "RB"], - ["Ribeira Grande", "RG"], - ["Sal", "SL"], - ["Santa Catarina", "CA"], - ["Santa Cruz", "CR"], - ["São Domingos", "SD"], - ["São Filipe", "SF"], - ["São Nicolau", "SN"], - ["São Vicente", "SV"], - ["Tarrafal", "TA"], - ["Tarrafal de São Nicolau", "TS"], - ], + 'Cape Verde', + 'CV', + [ + ['Boa Vista', 'BV'], + ['Brava', 'BR'], + ['Calheta de São Miguel', 'CS'], + ['Maio', 'MA'], + ['Mosteiros', 'MO'], + ['Paúl', 'PA'], + ['Porto Novo', 'PN'], + ['Praia', 'PR'], + ['Ribeira Brava', 'RB'], + ['Ribeira Grande', 'RG'], + ['Sal', 'SL'], + ['Santa Catarina', 'CA'], + ['Santa Cruz', 'CR'], + ['São Domingos', 'SD'], + ['São Filipe', 'SF'], + ['São Nicolau', 'SN'], + ['São Vicente', 'SV'], + ['Tarrafal', 'TA'], + ['Tarrafal de São Nicolau', 'TS'], + ], ]; export const KY = [ - "Cayman Islands", - "KY", - [ - ["Bodden Town", "BT"], - ["East End", "EE"], - ["George Town", "GT"], - ["North Side", "NS"], - ["Sister Islands", "SI"], - ["West Bay", "WB"], - ], + 'Cayman Islands', + 'KY', + [ + ['Bodden Town', 'BT'], + ['East End', 'EE'], + ['George Town', 'GT'], + ['North Side', 'NS'], + ['Sister Islands', 'SI'], + ['West Bay', 'WB'], + ], ]; export const CF = [ - "Central African Republic", - "CF", - [ - ["Bamingui-Bangoran", "BB"], - ["Bangui", "BGF"], - ["Basse-Kotto", "BK"], - ["Haute-Kotto", "HK"], - ["Haut-Mbomou", "HM"], - ["Kémo", "KG"], - ["Lobaye", "LB"], - ["Mambéré-Kadéï", "HS"], - ["Mbomou", "MB"], - ["Nana-Grebizi", "10"], - ["Nana-Mambéré", "NM"], - ["Ombella-M'Poko", "MP"], - ["Ouaka", "UK"], - ["Ouham", "AC"], - ["Ouham Péndé", "OP"], - ["Sangha-Mbaéré", "SE"], - ["Vakaga", "VK"], - ], + 'Central African Republic', + 'CF', + [ + ['Bamingui-Bangoran', 'BB'], + ['Bangui', 'BGF'], + ['Basse-Kotto', 'BK'], + ['Haute-Kotto', 'HK'], + ['Haut-Mbomou', 'HM'], + ['Kémo', 'KG'], + ['Lobaye', 'LB'], + ['Mambéré-Kadéï', 'HS'], + ['Mbomou', 'MB'], + ['Nana-Grebizi', '10'], + ['Nana-Mambéré', 'NM'], + ["Ombella-M'Poko", 'MP'], + ['Ouaka', 'UK'], + ['Ouham', 'AC'], + ['Ouham Péndé', 'OP'], + ['Sangha-Mbaéré', 'SE'], + ['Vakaga', 'VK'], + ], ]; export const TD = [ - "Chad", - "TD", - [ - ["Bahr el Ghazal", "BG"], - ["Batha", "BA"], - ["Borkou", "BO"], - ["Chari-Baguirmi", "CB"], - ["Ennedi-Est", "EE"], - ["Ennedi-Ouest", "EO"], - ["Guéra", "GR"], - ["Hadjer Lamis", "HL"], - ["Kanem", "KA"], - ["Lac", "LC"], - ["Logone Occidental", "LO"], - ["Logone Oriental", "LR"], - ["Mondoul", "MA"], - ["Mayo-Kébbi-Est", "ME"], - ["Moyen-Chari", "MC"], - ["Ouaddai", "OD"], - ["Salamat", "SA"], - ["Sila", "SI"], - ["Tandjilé", "TA"], - ["Tibesti", "TI"], - ["Ville de Ndjamena", "ND"], - ["Wadi Fira", "WF"], - ], + 'Chad', + 'TD', + [ + ['Bahr el Ghazal', 'BG'], + ['Batha', 'BA'], + ['Borkou', 'BO'], + ['Chari-Baguirmi', 'CB'], + ['Ennedi-Est', 'EE'], + ['Ennedi-Ouest', 'EO'], + ['Guéra', 'GR'], + ['Hadjer Lamis', 'HL'], + ['Kanem', 'KA'], + ['Lac', 'LC'], + ['Logone Occidental', 'LO'], + ['Logone Oriental', 'LR'], + ['Mondoul', 'MA'], + ['Mayo-Kébbi-Est', 'ME'], + ['Moyen-Chari', 'MC'], + ['Ouaddai', 'OD'], + ['Salamat', 'SA'], + ['Sila', 'SI'], + ['Tandjilé', 'TA'], + ['Tibesti', 'TI'], + ['Ville de Ndjamena', 'ND'], + ['Wadi Fira', 'WF'], + ], ]; export const CL = [ - "Chile", - "CL", - [ - ["Aisén del General Carlos Ibáñez del Campo", "AI"], - ["Antofagasta", "AN"], - ["Araucanía", "AR"], - ["Arica y Parinacota", "AP"], - ["Atacama", "AT"], - ["Bío-Bío", "BI"], - ["Coquimbo", "CO"], - ["Libertador General Bernardo O'Higgins", "LI"], - ["Los Lagos", "LL"], - ["Los Ríos", "LR"], - ["Magallanes y Antartica Chilena", "MA"], - ["Marga-Marga", ""], - ["Maule", "ML"], - ["Ñuble", "NB"], - ["Región Metropolitana de Santiago", "RM"], - ["Tarapacá", "TA"], - ["Valparaíso", "VS"], - ], + 'Chile', + 'CL', + [ + ['Aisén del General Carlos Ibáñez del Campo', 'AI'], + ['Antofagasta', 'AN'], + ['Araucanía', 'AR'], + ['Arica y Parinacota', 'AP'], + ['Atacama', 'AT'], + ['Bío-Bío', 'BI'], + ['Coquimbo', 'CO'], + ["Libertador General Bernardo O'Higgins", 'LI'], + ['Los Lagos', 'LL'], + ['Los Ríos', 'LR'], + ['Magallanes y Antartica Chilena', 'MA'], + ['Maule', 'ML'], + ['Ñuble', 'NB'], + ['Región Metropolitana de Santiago', 'RM'], + ['Tarapacá', 'TA'], + ['Valparaíso', 'VS'], + ], ]; export const CN = [ - "China", - "CN", - [ - ["Anhui", "AH"], - ["Beijing", "BJ"], - ["Chongqing", "CQ"], - ["Fujian", "FJ"], - ["Gansu", "GS"], - ["Guangdong", "GD"], - ["Guangxi", "GX"], - ["Guizhou", "GZ"], - ["Hainan", "HI"], - ["Hebei", "HE"], - ["Heilongjiang", "HL"], - ["Henan", "HA"], - ["Hong Kong", "HK"], - ["Hubei", "HB"], - ["Hunan", "HN"], - ["Inner Mongolia", "NM"], - ["Jiangsu", "JS"], - ["Jiangxi", "JX"], - ["Jilin", "JL"], - ["Liaoning", "LN"], - ["Macau", "MO"], - ["Ningxia", "NX"], - ["Qinghai", "QH"], - ["Shaanxi", "SN"], - ["Shandong", "SD"], - ["Shanghai", "SH"], - ["Shanxi", "SX"], - ["Sichuan", "SC"], - ["Tianjin", "TJ"], - ["Tibet", "XZ"], - ["Xinjiang", "XJ"], - ["Yunnan", "YN"], - ["Zhejiang", "ZJ"], - ], -]; -export const CX = ["Christmas Island", "CX", [["Christmas Island", "CX"]]]; + 'China', + 'CN', + [ + ['Anhui', 'AH'], + ['Beijing', 'BJ'], + ['Chongqing', 'CQ'], + ['Fujian', 'FJ'], + ['Gansu', 'GS'], + ['Guangdong', 'GD'], + ['Guangxi', 'GX'], + ['Guizhou', 'GZ'], + ['Hainan', 'HI'], + ['Hebei', 'HE'], + ['Heilongjiang', 'HL'], + ['Henan', 'HA'], + ['Hong Kong', 'HK'], + ['Hubei', 'HB'], + ['Hunan', 'HN'], + ['Inner Mongolia', 'NM'], + ['Jiangsu', 'JS'], + ['Jiangxi', 'JX'], + ['Jilin', 'JL'], + ['Liaoning', 'LN'], + ['Macau', 'MO'], + ['Ningxia', 'NX'], + ['Qinghai', 'QH'], + ['Shaanxi', 'SN'], + ['Shandong', 'SD'], + ['Shanghai', 'SH'], + ['Shanxi', 'SX'], + ['Sichuan', 'SC'], + ['Tianjin', 'TJ'], + ['Tibet', 'XZ'], + ['Xinjiang', 'XJ'], + ['Yunnan', 'YN'], + ['Zhejiang', 'ZJ'], + ], +]; +export const CX = ['Christmas Island', 'CX', [['Christmas Island', 'CX']]]; export const CC = [ - "Cocos (Keeling) Islands", - "CC", - [ - ["Direction Island", "DI"], - ["Home Island", "HM"], - ["Horsburgh Island", "HR"], - ["North Keeling Island", "NK"], - ["South Island", "SI"], - ["West Island", "WI"], - ], + 'Cocos (Keeling) Islands', + 'CC', + [ + ['Direction Island', 'DI'], + ['Home Island', 'HM'], + ['Horsburgh Island', 'HR'], + ['North Keeling Island', 'NK'], + ['South Island', 'SI'], + ['West Island', 'WI'], + ], ]; export const CO = [ - "Colombia", - "CO", - [ - ["Amazonas", "AMA"], - ["Antioquia", "ANT"], - ["Arauca", "ARA"], - ["Archipiélago de San Andrés", "SAP"], - ["Atlántico", "ATL"], - ["Bogotá D.C.", "DC"], - ["Bolívar", "BOL"], - ["Boyacá", "BOY"], - ["Caldas", "CAL"], - ["Caquetá", "CAQ"], - ["Casanare", "CAS"], - ["Cauca", "CAU"], - ["Cesar", "CES"], - ["Chocó", "CHO"], - ["Córdoba", "COR"], - ["Cundinamarca", "CUN"], - ["Guainía", "GUA"], - ["Guaviare", "GUV"], - ["Huila", "HUI"], - ["La Guajira", "LAG"], - ["Magdalena", "MAG"], - ["Meta", "MET"], - ["Nariño", "NAR"], - ["Norte de Santander", "NSA"], - ["Putumayo", "PUT"], - ["Quindío", "QUI"], - ["Risaralda", "RIS"], - ["Santander", "SAN"], - ["Sucre", "SUC"], - ["Tolima", "TOL"], - ["Valle del Cauca", "VAC"], - ["Vaupés", "VAU"], - ["Vichada", "VID"], - ], + 'Colombia', + 'CO', + [ + ['Amazonas', 'AMA'], + ['Antioquia', 'ANT'], + ['Arauca', 'ARA'], + ['Archipiélago de San Andrés', 'SAP'], + ['Atlántico', 'ATL'], + ['Bogotá D.C.', 'DC'], + ['Bolívar', 'BOL'], + ['Boyacá', 'BOY'], + ['Caldas', 'CAL'], + ['Caquetá', 'CAQ'], + ['Casanare', 'CAS'], + ['Cauca', 'CAU'], + ['Cesar', 'CES'], + ['Chocó', 'CHO'], + ['Córdoba', 'COR'], + ['Cundinamarca', 'CUN'], + ['Guainía', 'GUA'], + ['Guaviare', 'GUV'], + ['Huila', 'HUI'], + ['La Guajira', 'LAG'], + ['Magdalena', 'MAG'], + ['Meta', 'MET'], + ['Nariño', 'NAR'], + ['Norte de Santander', 'NSA'], + ['Putumayo', 'PUT'], + ['Quindío', 'QUI'], + ['Risaralda', 'RIS'], + ['Santander', 'SAN'], + ['Sucre', 'SUC'], + ['Tolima', 'TOL'], + ['Valle del Cauca', 'VAC'], + ['Vaupés', 'VAU'], + ['Vichada', 'VID'], + ], ]; export const KM = [ - "Comoros", - "KM", - [ - ["Andjazîdja", "G"], - ["Andjouân", "A"], - ["Moûhîlî", "M"], - ], + 'Comoros', + 'KM', + [ + ['Andjazîdja', 'G'], + ['Andjouân', 'A'], + ['Moûhîlî', 'M'], + ], ]; export const CG = [ - "Congo, Republic of the (Brazzaville)", - "CG", - [ - ["Bouenza", "11"], - ["Brazzaville", "BZV"], - ["Cuvette", "8"], - ["Cuvette-Ouest", "15"], - ["Kouilou", "5"], - ["Lékoumou", "2"], - ["Likouala", "7"], - ["Niari", "9"], - ["Plateaux", "14"], - ["Pointe-Noire", "16"], - ["Pool", "12"], - ["Sangha", "13"], - ], + 'Congo, Republic of the (Brazzaville)', + 'CG', + [ + ['Bouenza', '11'], + ['Brazzaville', 'BZV'], + ['Cuvette', '8'], + ['Cuvette-Ouest', '15'], + ['Kouilou', '5'], + ['Lékoumou', '2'], + ['Likouala', '7'], + ['Niari', '9'], + ['Plateaux', '14'], + ['Pointe-Noire', '16'], + ['Pool', '12'], + ['Sangha', '13'], + ], ]; export const CD = [ - "Congo, the Democratic Republic of the (Kinshasa)", - "CD", - [ - ["Bandundu", "BN"], - ["Bas-Congo", "BC"], - ["Équateur", "EQ"], - ["Kasaï-Occidental", "KE"], - ["Kasaï-Oriental", "KW"], - ["Katanga", "KA"], - ["Kinshasa", "KN"], - ["Maniema", "MA"], - ["Nord-Kivu", "NK"], - ["Orientale", "OR"], - ["Sud-Kivu", "SK"], - ], + 'Congo, the Democratic Republic of the (Kinshasa)', + 'CD', + [ + ['Bandundu', 'BN'], + ['Bas-Congo', 'BC'], + ['Équateur', 'EQ'], + ['Kasaï-Occidental', 'KE'], + ['Kasaï-Oriental', 'KW'], + ['Katanga', 'KA'], + ['Kinshasa', 'KN'], + ['Maniema', 'MA'], + ['Nord-Kivu', 'NK'], + ['Orientale', 'OR'], + ['Sud-Kivu', 'SK'], + ], ]; export const CK = [ - "Cook Islands", - "CK", - [ - ["Aitutaki", "undefined"], - ["Atiu", "undefined"], - ["Avarua", "undefined"], - ["Mangaia", "undefined"], - ["Manihiki", "undefined"], - ["Ma'uke", "undefined"], - ["Mitiaro", "undefined"], - ["Nassau", "undefined"], - ["Palmerston", "undefined"], - ["Penrhyn", "undefined"], - ["Pukapuka", "undefined"], - ["Rakahanga", "undefined"], - ], + 'Cook Islands', + 'CK', + [ + ['Aitutaki', undefined], + ['Atiu', undefined], + ['Avarua', undefined], + ['Mangaia', undefined], + ['Manihiki', undefined], + ["Ma'uke", undefined], + ['Mitiaro', undefined], + ['Nassau', undefined], + ['Palmerston', undefined], + ['Penrhyn', undefined], + ['Pukapuka', undefined], + ['Rakahanga', undefined], + ], ]; export const CR = [ - "Costa Rica", - "CR", - [ - ["Alajuela", "2"], - ["Cartago", "3"], - ["Guanacaste", "5"], - ["Heredia", "4"], - ["Limón", "7"], - ["Puntarenas", "6"], - ["San José", "1"], - ], + 'Costa Rica', + 'CR', + [ + ['Alajuela', '2'], + ['Cartago', '3'], + ['Guanacaste', '5'], + ['Heredia', '4'], + ['Limón', '7'], + ['Puntarenas', '6'], + ['San José', '1'], + ], ]; export const CI = [ - "Côte d'Ivoire, Republic of", - "CI", - [ - ["Agnéby", "16"], - ["Bafing", "17"], - ["Bas-Sassandra", "09"], - ["Denguélé", "10"], - ["Dix-Huit Montagnes", "06"], - ["Fromager", "18"], - ["Haut-Sassandra", "02"], - ["Lacs", "07"], - ["Lagunes", "01"], - ["Marahoué", "12"], - ["Moyen-Cavally", "19"], - ["Moyen-Comoé", "05"], - ["N'zi-Comoé", "11"], - ["Savanes", "03"], - ["Sud-Bandama", "15"], - ["Sud-Comoé", "13"], - ["Vallée du Bandama", "04"], - ["Worodougou", "14"], - ["Zanzan", "08"], - ], + "Côte d'Ivoire, Republic of", + 'CI', + [ + ['Agnéby', '16'], + ['Bafing', '17'], + ['Bas-Sassandra', '09'], + ['Denguélé', '10'], + ['Dix-Huit Montagnes', '06'], + ['Fromager', '18'], + ['Haut-Sassandra', '02'], + ['Lacs', '07'], + ['Lagunes', '01'], + ['Marahoué', '12'], + ['Moyen-Cavally', '19'], + ['Moyen-Comoé', '05'], + ["N'zi-Comoé", '11'], + ['Savanes', '03'], + ['Sud-Bandama', '15'], + ['Sud-Comoé', '13'], + ['Vallée du Bandama', '04'], + ['Worodougou', '14'], + ['Zanzan', '08'], + ], ]; export const HR = [ - "Croatia", - "HR", - [ - ["Bjelovarsko-bilogorska županija", "07"], - ["Brodsko-posavska županija", "12"], - ["Dubrovačko-neretvanska županija", "19"], - ["Grad Zagreb", "21"], - ["Istarska županija", "18"], - ["Karlovačka županija", "04"], - ["Koprivničko-križevačka županija", "06"], - ["Krapinsko-zagorska županija", "02"], - ["Ličko-senjska županija", "09"], - ["Međimurska županija", "20"], - ["Osječko-baranjska županija", "14"], - ["Požeško-slavonska županija", "11"], - ["Primorsko-goranska županija", "08"], - ["Sisačko-moslavačka županija", "03"], - ["Splitsko-dalmatinska županija", "17"], - ["Šibensko-kninska županija", "15"], - ["Varaždinska županija", "05"], - ["Virovitičko-podravska županija", "10"], - ["Vukovarsko-srijemska županija", "16"], - ["Zadarska županija", "13"], - ["Zagrebačka županija", "01"], - ], + 'Croatia', + 'HR', + [ + ['Bjelovarsko-bilogorska županija', '07'], + ['Brodsko-posavska županija', '12'], + ['Dubrovačko-neretvanska županija', '19'], + ['Grad Zagreb', '21'], + ['Istarska županija', '18'], + ['Karlovačka županija', '04'], + ['Koprivničko-križevačka županija', '06'], + ['Krapinsko-zagorska županija', '02'], + ['Ličko-senjska županija', '09'], + ['Međimurska županija', '20'], + ['Osječko-baranjska županija', '14'], + ['Požeško-slavonska županija', '11'], + ['Primorsko-goranska županija', '08'], + ['Sisačko-moslavačka županija', '03'], + ['Splitsko-dalmatinska županija', '17'], + ['Šibensko-kninska županija', '15'], + ['Varaždinska županija', '05'], + ['Virovitičko-podravska županija', '10'], + ['Vukovarsko-srijemska županija', '16'], + ['Zadarska županija', '13'], + ['Zagrebačka županija', '01'], + ], ]; export const CU = [ - "Cuba", - "CU", - [ - ["Artemisa", "15"], - ["Camagüey", "09"], - ["Ciego de Ávila", "08"], - ["Cienfuegos", "06"], - ["Granma", "12"], - ["Guantánamo", "14"], - ["Holguín", "11"], - ["Isla de la Juventud", "99"], - ["La Habana", "03"], - ["Las Tunas", "10"], - ["Matanzas", "04"], - ["Mayabeque", "16"], - ["Pinar del Río", "01"], - ["Sancti Spíritus", "07"], - ["Santiago de Cuba", "13"], - ["Villa Clara", "05"], - ], -]; -export const CW = ["Curaçao", "CW", [["Curaçao", "CW"]]]; + 'Cuba', + 'CU', + [ + ['Artemisa', '15'], + ['Camagüey', '09'], + ['Ciego de Ávila', '08'], + ['Cienfuegos', '06'], + ['Granma', '12'], + ['Guantánamo', '14'], + ['Holguín', '11'], + ['Isla de la Juventud', '99'], + ['La Habana', '03'], + ['Las Tunas', '10'], + ['Matanzas', '04'], + ['Mayabeque', '16'], + ['Pinar del Río', '01'], + ['Sancti Spíritus', '07'], + ['Santiago de Cuba', '13'], + ['Villa Clara', '05'], + ], +]; +export const CW = ['Curaçao', 'CW', [['Curaçao', 'CW']]]; export const CY = [ - "Cyprus", - "CY", - [ - ["Ammochostos", "04"], - ["Keryneia", "06"], - ["Larnaka", "03"], - ["Lefkosia", "01"], - ["Lemesos", "02"], - ["Pafos", "05"], - ], + 'Cyprus', + 'CY', + [ + ['Ammochostos', '04'], + ['Keryneia', '06'], + ['Larnaka', '03'], + ['Lefkosia', '01'], + ['Lemesos', '02'], + ['Pafos', '05'], + ], ]; export const CZ = [ - "Czech Republic", - "CZ", - [ - ["Hlavní město Praha", "10"], - ["Jihočeský kraj", "31"], - ["Jihomoravský kraj", "64"], - ["Karlovarský kraj", "41"], - ["Královéhradecký kraj", "52"], - ["Liberecký kraj", "51"], - ["Moravskoslezský kraj", "80"], - ["Olomoucký kraj", "71"], - ["Pardubický kraj", "53"], - ["Plzeňský kraj", "32"], - ["Středočeský kraj", "20"], - ["Ústecký kraj", "42"], - ["Vysočina", "63"], - ["Zlínský kraj", "72"], - ], + 'Czech Republic', + 'CZ', + [ + ['Hlavní město Praha', '10'], + ['Jihočeský kraj', '31'], + ['Jihomoravský kraj', '64'], + ['Karlovarský kraj', '41'], + ['Královéhradecký kraj', '52'], + ['Liberecký kraj', '51'], + ['Moravskoslezský kraj', '80'], + ['Olomoucký kraj', '71'], + ['Pardubický kraj', '53'], + ['Plzeňský kraj', '32'], + ['Středočeský kraj', '20'], + ['Ústecký kraj', '42'], + ['Vysočina', '63'], + ['Zlínský kraj', '72'], + ], ]; export const DK = [ - "Denmark", - "DK", - [ - ["Hovedstaden", "DK-84"], - ["Midtjylland", "DK-82"], - ["Nordjylland", "DK-81"], - ["Sjælland", "DK-85"], - ["Syddanmark", "DK-83"], - ], + 'Denmark', + 'DK', + [ + ['Hovedstaden', 'DK-84'], + ['Midtjylland', 'DK-82'], + ['Nordjylland', 'DK-81'], + ['Sjælland', 'DK-85'], + ['Syddanmark', 'DK-83'], + ], ]; export const DJ = [ - "Djibouti", - "DJ", - [ - ["Ali Sabieh", "AS"], - ["Arta", "AR"], - ["Dikhil", "DI"], - ["Obock", "OB"], - ["Tadjourah", "TA"], - ], + 'Djibouti', + 'DJ', + [ + ['Ali Sabieh', 'AS'], + ['Arta', 'AR'], + ['Dikhil', 'DI'], + ['Obock', 'OB'], + ['Tadjourah', 'TA'], + ], ]; export const DM = [ - "Dominica", - "DM", - [ - ["Saint Andrew Parish", "02"], - ["Saint David Parish", "03"], - ["Saint George Parish", "04"], - ["Saint John Parish", "05"], - ["Saint Joseph Parish", "06"], - ["Saint Luke Parish", "07"], - ["Saint Mark Parish", "08"], - ["Saint Patrick Parish", "09"], - ["Saint Paul Parish", "10"], - ["Saint Peter Parish", "11"], - ], + 'Dominica', + 'DM', + [ + ['Saint Andrew Parish', '02'], + ['Saint David Parish', '03'], + ['Saint George Parish', '04'], + ['Saint John Parish', '05'], + ['Saint Joseph Parish', '06'], + ['Saint Luke Parish', '07'], + ['Saint Mark Parish', '08'], + ['Saint Patrick Parish', '09'], + ['Saint Paul Parish', '10'], + ['Saint Peter Parish', '11'], + ], ]; export const DO = [ - "Dominican Republic", - "DO", - [ - ["Cibao Central", "02"], - ["Del Valle", "37"], - ["Distrito Nacional", "01"], - ["Enriquillo", "38"], - ["Norcentral", "04"], - ["Nordeste", "33"], - ["Noroeste", "34"], - ["Norte", "35"], - ["Valdesia", "42"], - ], + 'Dominican Republic', + 'DO', + [ + ['Cibao Central', '02'], + ['Del Valle', '37'], + ['Distrito Nacional', '01'], + ['Enriquillo', '38'], + ['Norcentral', '04'], + ['Nordeste', '33'], + ['Noroeste', '34'], + ['Norte', '35'], + ['Valdesia', '42'], + ], ]; export const EC = [ - "Ecuador", - "EC", - [ - ["Azuay", "A"], - ["Bolívar", "B"], - ["Cañar", "F"], - ["Carchi", "C"], - ["Chimborazo", "H"], - ["Cotopaxi", "X"], - ["El Oro", "O"], - ["Esmeraldas", "E"], - ["Galápagos", "W"], - ["Guayas", "G"], - ["Imbabura", "I"], - ["Loja", "L"], - ["Los Ríos", "R"], - ["Manabí", "M"], - ["Morona-Santiago", "S"], - ["Napo", "N"], - ["Orellana", "D"], - ["Pastaza", "Y"], - ["Pichincha", "P"], - ["Santa Elena", "SE"], - ["Santo Domingo de los Tsáchilas", "SD"], - ["Sucumbíos", "U"], - ["Tungurahua", "T"], - ["Zamora-Chinchipe", "Z"], - ], + 'Ecuador', + 'EC', + [ + ['Azuay', 'A'], + ['Bolívar', 'B'], + ['Cañar', 'F'], + ['Carchi', 'C'], + ['Chimborazo', 'H'], + ['Cotopaxi', 'X'], + ['El Oro', 'O'], + ['Esmeraldas', 'E'], + ['Galápagos', 'W'], + ['Guayas', 'G'], + ['Imbabura', 'I'], + ['Loja', 'L'], + ['Los Ríos', 'R'], + ['Manabí', 'M'], + ['Morona-Santiago', 'S'], + ['Napo', 'N'], + ['Orellana', 'D'], + ['Pastaza', 'Y'], + ['Pichincha', 'P'], + ['Santa Elena', 'SE'], + ['Santo Domingo de los Tsáchilas', 'SD'], + ['Sucumbíos', 'U'], + ['Tungurahua', 'T'], + ['Zamora-Chinchipe', 'Z'], + ], ]; export const EG = [ - "Egypt", - "EG", - [ - ["Alexandria", "ALX"], - ["Aswan", "ASN"], - ["Asyout", "AST"], - ["Bani Sueif", "BNS"], - ["Beheira", "BH"], - ["Cairo", "C"], - ["Daqahlia", "DK"], - ["Dumiat", "DT"], - ["El Bahr El Ahmar", "BA"], - ["El Ismailia", "IS"], - ["El Suez", "SUZ"], - ["El Wadi El Gedeed", "WAD"], - ["Fayoum", "FYM"], - ["Gharbia", "GH"], - ["Giza", "GZ"], - ["Helwan", "HU"], - ["Kafr El Sheikh", "KFS"], - ["Luxor", "LX"], - ["Matrouh", "MT"], - ["Menia", "MN"], - ["Menofia", "MNF"], - ["North Sinai", "SIN"], - ["Port Said", "PTS"], - ["Qalubia", "KB"], - ["Qena", "KN"], - ["Sharqia", "SHR"], - ["Sixth of October", "SU"], - ["Sohag", "SHG"], - ["South Sinai", "JS"], - ], + 'Egypt', + 'EG', + [ + ['Alexandria', 'ALX'], + ['Aswan', 'ASN'], + ['Asyout', 'AST'], + ['Bani Sueif', 'BNS'], + ['Beheira', 'BH'], + ['Cairo', 'C'], + ['Daqahlia', 'DK'], + ['Dumiat', 'DT'], + ['El Bahr El Ahmar', 'BA'], + ['El Ismailia', 'IS'], + ['El Suez', 'SUZ'], + ['El Wadi El Gedeed', 'WAD'], + ['Fayoum', 'FYM'], + ['Gharbia', 'GH'], + ['Giza', 'GZ'], + ['Helwan', 'HU'], + ['Kafr El Sheikh', 'KFS'], + ['Luxor', 'LX'], + ['Matrouh', 'MT'], + ['Menia', 'MN'], + ['Menofia', 'MNF'], + ['North Sinai', 'SIN'], + ['Port Said', 'PTS'], + ['Qalubia', 'KB'], + ['Qena', 'KN'], + ['Sharqia', 'SHR'], + ['Sixth of October', 'SU'], + ['Sohag', 'SHG'], + ['South Sinai', 'JS'], + ], ]; export const SV = [ - "El Salvador", - "SV", - [ - ["Ahuachapán", "AH"], - ["Cabañas", "CA"], - ["Cuscatlán", "CU"], - ["Chalatenango", "CH"], - ["La Libertad", "LI"], - ["La Paz", "PA"], - ["La Unión", "UN"], - ["Morazán", "MO"], - ["San Miguel", "SM"], - ["San Salvador", "SS"], - ["Santa Ana", "SA"], - ["San Vicente", "SV"], - ["Sonsonate", "SO"], - ["Usulután", "US"], - ], + 'El Salvador', + 'SV', + [ + ['Ahuachapán', 'AH'], + ['Cabañas', 'CA'], + ['Cuscatlán', 'CU'], + ['Chalatenango', 'CH'], + ['La Libertad', 'LI'], + ['La Paz', 'PA'], + ['La Unión', 'UN'], + ['Morazán', 'MO'], + ['San Miguel', 'SM'], + ['San Salvador', 'SS'], + ['Santa Ana', 'SA'], + ['San Vicente', 'SV'], + ['Sonsonate', 'SO'], + ['Usulután', 'US'], + ], ]; export const GQ = [ - "Equatorial Guinea", - "GQ", - [ - ["Annobón", "AN"], - ["Bioko Norte", "BN"], - ["Bioko Sur", "BS"], - ["Centro Sur", "CS"], - ["Kié-Ntem", "KN"], - ["Litoral", "LI"], - ["Wele-Nzas", "WN"], - ], + 'Equatorial Guinea', + 'GQ', + [ + ['Annobón', 'AN'], + ['Bioko Norte', 'BN'], + ['Bioko Sur', 'BS'], + ['Centro Sur', 'CS'], + ['Kié-Ntem', 'KN'], + ['Litoral', 'LI'], + ['Wele-Nzas', 'WN'], + ], ]; export const ER = [ - "Eritrea", - "ER", - [ - ["Anseba", "AN"], - ["Debub", "DU"], - ["Debub-Keih-Bahri", "DK"], - ["Gash-Barka", "GB"], - ["Maekel", "MA"], - ["Semien-Keih-Bahri", "SK"], - ], + 'Eritrea', + 'ER', + [ + ['Anseba', 'AN'], + ['Debub', 'DU'], + ['Debub-Keih-Bahri', 'DK'], + ['Gash-Barka', 'GB'], + ['Maekel', 'MA'], + ['Semien-Keih-Bahri', 'SK'], + ], ]; export const EE = [ - "Estonia", - "EE", - [ - ["Harjumaa (Tallinn)", "37"], - ["Hiiumaa (Kardla)", "39"], - ["Ida-Virumaa (Johvi)", "44"], - ["Järvamaa (Paide)", "41"], - ["Jõgevamaa (Jogeva)", "49"], - ["Läänemaa", "57"], - ["Lääne-Virumaa (Rakvere)", "59"], - ["Pärnumaa (Parnu)", "67"], - ["Põlvamaa (Polva)", "65"], - ["Raplamaa (Rapla)", "70"], - ["Saaremaa (Kuessaare)", "74"], - ["Tartumaa (Tartu)", "78"], - ["Valgamaa (Valga)", "82"], - ["Viljandimaa (Viljandi)", "84"], - ["Võrumaa (Voru)", "86"], - ], + 'Estonia', + 'EE', + [ + ['Harjumaa (Tallinn)', '37'], + ['Hiiumaa (Kardla)', '39'], + ['Ida-Virumaa (Johvi)', '44'], + ['Järvamaa (Paide)', '41'], + ['Jõgevamaa (Jogeva)', '49'], + ['Läänemaa', '57'], + ['Lääne-Virumaa (Rakvere)', '59'], + ['Pärnumaa (Parnu)', '67'], + ['Põlvamaa (Polva)', '65'], + ['Raplamaa (Rapla)', '70'], + ['Saaremaa (Kuessaare)', '74'], + ['Tartumaa (Tartu)', '78'], + ['Valgamaa (Valga)', '82'], + ['Viljandimaa (Viljandi)', '84'], + ['Võrumaa (Voru)', '86'], + ], ]; export const ET = [ - "Ethiopia", - "ET", - [ - ["Addis Ababa", "AA"], - ["Afar", "AF"], - ["Amhara", "AM"], - ["Benshangul-Gumaz", "BE"], - ["Dire Dawa", "DD"], - ["Gambela", "GA"], - ["Harari", "HA"], - ["Oromia", "OR"], - ["Somali", "SO"], - ["Southern Nations Nationalities and People's Region", "SN"], - ["Tigray", "TI"], - ], -]; -export const FK = [ - "Falkland Islands (Islas Malvinas)", - "FK", - [["Falkland Islands (Islas Malvinas)", "undefined"]], -]; + 'Ethiopia', + 'ET', + [ + ['Addis Ababa', 'AA'], + ['Afar', 'AF'], + ['Amhara', 'AM'], + ['Benshangul-Gumaz', 'BE'], + ['Dire Dawa', 'DD'], + ['Gambela', 'GA'], + ['Harari', 'HA'], + ['Oromia', 'OR'], + ['Somali', 'SO'], + ["Southern Nations Nationalities and People's Region", 'SN'], + ['Tigray', 'TI'], + ], +]; +export const FK = ['Falkland Islands (Islas Malvinas)', 'FK', [['Falkland Islands (Islas Malvinas)', undefined]]]; export const FO = [ - "Faroe Islands", - "FO", - [ - ["Bordoy", "undefined"], - ["Eysturoy", "undefined"], - ["Mykines", "undefined"], - ["Sandoy", "undefined"], - ["Skuvoy", "undefined"], - ["Streymoy", "undefined"], - ["Suduroy", "undefined"], - ["Tvoroyri", "undefined"], - ["Vagar", "undefined"], - ], + 'Faroe Islands', + 'FO', + [ + ['Bordoy', undefined], + ['Eysturoy', undefined], + ['Mykines', undefined], + ['Sandoy', undefined], + ['Skuvoy', undefined], + ['Streymoy', undefined], + ['Suduroy', undefined], + ['Tvoroyri', undefined], + ['Vagar', undefined], + ], ]; export const FJ = [ - "Fiji", - "FJ", - [ - ["Ba", "01"], - ["Bua", "02"], - ["Cakaudrove", "03"], - ["Kadavu", "04"], - ["Lau", "05"], - ["Lomaiviti", "06"], - ["Macuata", "07"], - ["Nadroga and Navosa", "08"], - ["Naitasiri", "09"], - ["Namosi", "10"], - ["Ra", "11"], - ["Rewa", "12"], - ["Rotuma", "R"], - ["Serua", "13"], - ["Tailevu", "14"], - ], + 'Fiji', + 'FJ', + [ + ['Ba', '01'], + ['Bua', '02'], + ['Cakaudrove', '03'], + ['Kadavu', '04'], + ['Lau', '05'], + ['Lomaiviti', '06'], + ['Macuata', '07'], + ['Nadroga and Navosa', '08'], + ['Naitasiri', '09'], + ['Namosi', '10'], + ['Ra', '11'], + ['Rewa', '12'], + ['Rotuma', 'R'], + ['Serua', '13'], + ['Tailevu', '14'], + ], ]; export const FI = [ - "Finland", - "FI", - [ - ["Ahvenanmaan maakunta", "FI-01"], - ["Etelä-Karjala", "FI-02"], - ["Etelä-Pohjanmaa", "FI-03"], - ["Etelä-Savo", "FI-04"], - ["Kainuu", "FI-05"], - ["Kanta-Häme", "FI-06"], - ["Keski-Pohjanmaa", "FI-07"], - ["Keski-Suomi", "FI-08"], - ["Kymenlaakso", "FI-09"], - ["Lappi", "FI-10"], - ["Pirkanmaa", "FI-11"], - ["Pohjanmaa", "FI-12"], - ["Pohjois-Karjala", "FI-13"], - ["Pohjois-Pohjanmaa", "FI-14"], - ["Pohjois-Savo", "FI-15"], - ["Päijät-Häme", "FI-16"], - ["Satakunta", "FI-17"], - ["Uusimaa", "FI-18"], - ["Varsinais-Suomi", "FI-19"], - ], + 'Finland', + 'FI', + [ + ['Ahvenanmaan maakunta', 'FI-01'], + ['Etelä-Karjala', 'FI-02'], + ['Etelä-Pohjanmaa', 'FI-03'], + ['Etelä-Savo', 'FI-04'], + ['Kainuu', 'FI-05'], + ['Kanta-Häme', 'FI-06'], + ['Keski-Pohjanmaa', 'FI-07'], + ['Keski-Suomi', 'FI-08'], + ['Kymenlaakso', 'FI-09'], + ['Lappi', 'FI-10'], + ['Pirkanmaa', 'FI-11'], + ['Pohjanmaa', 'FI-12'], + ['Pohjois-Karjala', 'FI-13'], + ['Pohjois-Pohjanmaa', 'FI-14'], + ['Pohjois-Savo', 'FI-15'], + ['Päijät-Häme', 'FI-16'], + ['Satakunta', 'FI-17'], + ['Uusimaa', 'FI-18'], + ['Varsinais-Suomi', 'FI-19'], + ], ]; export const FR = [ - "France", - "FR", - [ - ["Auvergne-Rhône-Alpes", "ARA"], - ["Bourgogne-Franche-Comté", "BFC"], - ["Bretagne", "BRE"], - ["Centre-Val de Loire", "CVL"], - ["Corse", "COR"], - ["Grand Est", "GES"], - ["Hauts-de-France", "HDF"], - ["Île-de-France", "IDF"], - ["Normandie", "NOR"], - ["Nouvelle-Aquitaine", "NAQ"], - ["Occitanie", "OCC"], - ["Pays de la Loire", "PDL"], - ["Provence-Alpes-Côte d'Azur", "PAC"], - ["Clipperton", "CP"], - ["Guadeloupe", "GP"], - ["Guyane", "GF"], - ["Martinique", "MQ"], - ["Mayotte", "YT"], - ["Nouvelle-Calédonie", "NC"], - ["Polynésie", "PF"], - ["Saint-Pierre-et-Miquelon", "PM"], - ["Saint Barthélemy", "BL"], - ["Saint Martin", "MF"], - ["Réunion", "RE"], - ["Terres Australes Françaises", "TF"], - ["Wallis-et-Futuna", "WF"], - ], -]; -export const GF = ["French Guiana", "GF", [["French Guiana", "undefined"]]]; + 'France', + 'FR', + [ + ['Auvergne-Rhône-Alpes', 'ARA'], + ['Bourgogne-Franche-Comté', 'BFC'], + ['Bretagne', 'BRE'], + ['Centre-Val de Loire', 'CVL'], + ['Corse', 'COR'], + ['Grand Est', 'GES'], + ['Hauts-de-France', 'HDF'], + ['Île-de-France', 'IDF'], + ['Normandie', 'NOR'], + ['Nouvelle-Aquitaine', 'NAQ'], + ['Occitanie', 'OCC'], + ['Pays de la Loire', 'PDL'], + ["Provence-Alpes-Côte d'Azur", 'PAC'], + ['Clipperton', 'CP'], + ['Guadeloupe', 'GP'], + ['Guyane', 'GF'], + ['Martinique', 'MQ'], + ['Mayotte', 'YT'], + ['Nouvelle-Calédonie', 'NC'], + ['Polynésie', 'PF'], + ['Saint-Pierre-et-Miquelon', 'PM'], + ['Saint Barthélemy', 'BL'], + ['Saint Martin', 'MF'], + ['Réunion', 'RE'], + ['Terres Australes Françaises', 'TF'], + ['Wallis-et-Futuna', 'WF'], + ], +]; +export const GF = ['French Guiana', 'GF', [['French Guiana', undefined]]]; export const PF = [ - "French Polynesia", - "PF", - [ - ["Archipel des Marquises", "undefined"], - ["Archipel des Tuamotu", "undefined"], - ["Archipel des Tubuai", "undefined"], - ["Iles du Vent", "undefined"], - ["Iles Sous-le-Vent", "undefined"], - ], + 'French Polynesia', + 'PF', + [ + ['Archipel des Marquises', undefined], + ['Archipel des Tuamotu', undefined], + ['Archipel des Tubuai', undefined], + ['Iles du Vent', undefined], + ['Iles Sous-le-Vent', undefined], + ], ]; export const TF = [ - "French Southern and Antarctic Lands", - "TF", - [ - ["Adelie Land", "undefined"], - ["Ile Crozet", "undefined"], - ["Iles Kerguelen", "undefined"], - ["Iles Saint-Paul et Amsterdam", "undefined"], - ], + 'French Southern and Antarctic Lands', + 'TF', + [ + ['Adelie Land', undefined], + ['Ile Crozet', undefined], + ['Iles Kerguelen', undefined], + ['Iles Saint-Paul et Amsterdam', undefined], + ], ]; export const GA = [ - "Gabon", - "GA", - [ - ["Estuaire", "1"], - ["Haut-Ogooué", "2"], - ["Moyen-Ogooué", "3"], - ["Ngounié", "4"], - ["Nyanga", "5"], - ["Ogooué-Ivindo", "6"], - ["Ogooué-Lolo", "7"], - ["Ogooué-Maritime", "8"], - ["Woleu-Ntem", "9"], - ], + 'Gabon', + 'GA', + [ + ['Estuaire', '1'], + ['Haut-Ogooué', '2'], + ['Moyen-Ogooué', '3'], + ['Ngounié', '4'], + ['Nyanga', '5'], + ['Ogooué-Ivindo', '6'], + ['Ogooué-Lolo', '7'], + ['Ogooué-Maritime', '8'], + ['Woleu-Ntem', '9'], + ], ]; export const GM = [ - "Gambia, The", - "GM", - [ - ["Banjul", "B"], - ["Central River", "M"], - ["Lower River", "L"], - ["North Bank", "N"], - ["Upper River", "U"], - ["Western", "W"], - ], + 'Gambia, The', + 'GM', + [ + ['Banjul', 'B'], + ['Central River', 'M'], + ['Lower River', 'L'], + ['North Bank', 'N'], + ['Upper River', 'U'], + ['Western', 'W'], + ], ]; export const GE = [ - "Georgia", - "GE", - [ - ["Abkhazia (Sokhumi)", "AB"], - ["Ajaria (Bat'umi)", "AJ"], - ["Guria", "GU"], - ["Imereti", "IM"], - ["K'akheti", "KA"], - ["Kvemo Kartli", "KK"], - ["Mtshkheta-Mtianeti", "MM"], - ["Rach'a-Lexhkumi-KvemoSvaneti", "RL"], - ["Samegrelo-Zemo Svaneti", "SZ"], - ["Samtskhe-Javakheti", "SJ"], - ["Shida Kartli", "SK"], - ["Tbilisi", "TB"], - ], + 'Georgia', + 'GE', + [ + ['Abkhazia (Sokhumi)', 'AB'], + ["Ajaria (Bat'umi)", 'AJ'], + ['Guria', 'GU'], + ['Imereti', 'IM'], + ["K'akheti", 'KA'], + ['Kvemo Kartli', 'KK'], + ['Mtshkheta-Mtianeti', 'MM'], + ["Rach'a-Lexhkumi-KvemoSvaneti", 'RL'], + ['Samegrelo-Zemo Svaneti', 'SZ'], + ['Samtskhe-Javakheti', 'SJ'], + ['Shida Kartli', 'SK'], + ['Tbilisi', 'TB'], + ], ]; export const DE = [ - "Germany", - "DE", - [ - ["Baden-Württemberg", "BW"], - ["Bayern", "BY"], - ["Berlin", "BE"], - ["Brandenburg", "BB"], - ["Bremen", "HB"], - ["Hamburg", "HH"], - ["Hessen", "HE"], - ["Mecklenburg-Vorpommern", "MV"], - ["Niedersachsen", "NI"], - ["Nordrhein-Westfalen", "NW"], - ["Rheinland-Pfalz", "RP"], - ["Saarland", "SL"], - ["Sachsen", "SN"], - ["Sachsen-Anhalt", "ST"], - ["Schleswig-Holstein", "SH"], - ["Thüringen", "TH"], - ], + 'Germany', + 'DE', + [ + ['Baden-Württemberg', 'BW'], + ['Bayern', 'BY'], + ['Berlin', 'BE'], + ['Brandenburg', 'BB'], + ['Bremen', 'HB'], + ['Hamburg', 'HH'], + ['Hessen', 'HE'], + ['Mecklenburg-Vorpommern', 'MV'], + ['Niedersachsen', 'NI'], + ['Nordrhein-Westfalen', 'NW'], + ['Rheinland-Pfalz', 'RP'], + ['Saarland', 'SL'], + ['Sachsen', 'SN'], + ['Sachsen-Anhalt', 'ST'], + ['Schleswig-Holstein', 'SH'], + ['Thüringen', 'TH'], + ], ]; export const GH = [ - "Ghana", - "GH", - [ - ["Ahafo", "AF"], - ["Ashanti", "AH"], - ["Bono", "BO"], - ["Bono East", "BE"], - ["Central", "CP"], - ["Eastern", "EP"], - ["Greater Accra", "AA"], - ["Northern", "NP"], - ["North East", "NE"], - ["Oti", "OT"], - ["Savannah", "SV"], - ["Upper East", "UE"], - ["Upper West", "UW"], - ["Volta", "TV"], - ["Western", "WP"], - ["Western North", "WN"], - ], -]; -export const GI = ["Gibraltar", "GI", [["Gibraltar", "undefined"]]]; + 'Ghana', + 'GH', + [ + ['Ahafo', 'AF'], + ['Ashanti', 'AH'], + ['Bono', 'BO'], + ['Bono East', 'BE'], + ['Central', 'CP'], + ['Eastern', 'EP'], + ['Greater Accra', 'AA'], + ['Northern', 'NP'], + ['North East', 'NE'], + ['Oti', 'OT'], + ['Savannah', 'SV'], + ['Upper East', 'UE'], + ['Upper West', 'UW'], + ['Volta', 'TV'], + ['Western', 'WP'], + ['Western North', 'WN'], + ], +]; +export const GI = ['Gibraltar', 'GI', [['Gibraltar', undefined]]]; export const GR = [ - "Greece", - "GR", - [ - ["Anatolikí Makedonía kai Thráki", "A"], - ["Attikḯ", "I"], - ["Dytikí Elláda", "G"], - ["Dytikí Makedonía", "C"], - ["Ionía Nísia", "F"], - ["Kentrikí Makedonía", "B"], - ["Krítí", "M"], - ["Notío Aigaío", "L"], - ["Peloponnísos", "J"], - ["Stereá Elláda", "H"], - ["Thessalía", "E"], - ["Voreío Aigaío", "K"], - ["Ípeiros", "D"], - ["Ágion Óros", "69"], - ], + 'Greece', + 'GR', + [ + ['Anatolikí Makedonía kai Thráki', 'A'], + ['Attikḯ', 'I'], + ['Dytikí Elláda', 'G'], + ['Dytikí Makedonía', 'C'], + ['Ionía Nísia', 'F'], + ['Kentrikí Makedonía', 'B'], + ['Krítí', 'M'], + ['Notío Aigaío', 'L'], + ['Peloponnísos', 'J'], + ['Stereá Elláda', 'H'], + ['Thessalía', 'E'], + ['Voreío Aigaío', 'K'], + ['Ípeiros', 'D'], + ['Ágion Óros', '69'], + ], ]; export const GL = [ - "Greenland", - "GL", - [ - ["Kommune Kujalleq", "KU"], - ["Kommuneqarfik Sermersooq", "SM"], - ["Qaasuitsup Kommunia", "QA"], - ["Qeqqata Kommunia", "QE"], - ], + 'Greenland', + 'GL', + [ + ['Kommune Kujalleq', 'KU'], + ['Kommuneqarfik Sermersooq', 'SM'], + ['Qaasuitsup Kommunia', 'QA'], + ['Qeqqata Kommunia', 'QE'], + ], ]; export const GD = [ - "Grenada", - "GD", - [ - ["Saint Andrew", "01"], - ["Saint David", "02"], - ["Saint George", "03"], - ["Saint John", "04"], - ["Saint Mark", "05"], - ["Saint Patrick", "06"], - ["Southern Grenadine Islands", "10"], - ], -]; -export const GP = ["Guadeloupe", "GP", [["Guadeloupe", "undefined"]]]; -export const GU = ["Guam", "GU", [["Guam", "undefined"]]]; + 'Grenada', + 'GD', + [ + ['Saint Andrew', '01'], + ['Saint David', '02'], + ['Saint George', '03'], + ['Saint John', '04'], + ['Saint Mark', '05'], + ['Saint Patrick', '06'], + ['Southern Grenadine Islands', '10'], + ], +]; +export const GP = ['Guadeloupe', 'GP', [['Guadeloupe', undefined]]]; +export const GU = ['Guam', 'GU', [['Guam', undefined]]]; export const GT = [ - "Guatemala", - "GT", - [ - ["Alta Verapaz", "AV"], - ["Baja Verapaz", "BV"], - ["Chimaltenango", "CM"], - ["Chiquimula", "CQ"], - ["El Progreso", "PR"], - ["Escuintla", "ES"], - ["Guatemala", "GU"], - ["Huehuetenango", "HU"], - ["Izabal", "IZ"], - ["Jalapa", "JA"], - ["Jutiapa", "JU"], - ["Petén", "PE"], - ["Quetzaltenango", "QZ"], - ["Quiché", "QC"], - ["Retalhuleu", "Re"], - ["Sacatepéquez", "SA"], - ["San Marcos", "SM"], - ["Santa Rosa", "SR"], - ["Sololá", "SO"], - ["Suchitepéquez", "SU"], - ["Totonicapán", "TO"], - ["Zacapa", "ZA"], - ], + 'Guatemala', + 'GT', + [ + ['Alta Verapaz', 'AV'], + ['Baja Verapaz', 'BV'], + ['Chimaltenango', 'CM'], + ['Chiquimula', 'CQ'], + ['El Progreso', 'PR'], + ['Escuintla', 'ES'], + ['Guatemala', 'GU'], + ['Huehuetenango', 'HU'], + ['Izabal', 'IZ'], + ['Jalapa', 'JA'], + ['Jutiapa', 'JU'], + ['Petén', 'PE'], + ['Quetzaltenango', 'QZ'], + ['Quiché', 'QC'], + ['Retalhuleu', 'Re'], + ['Sacatepéquez', 'SA'], + ['San Marcos', 'SM'], + ['Santa Rosa', 'SR'], + ['Sololá', 'SO'], + ['Suchitepéquez', 'SU'], + ['Totonicapán', 'TO'], + ['Zacapa', 'ZA'], + ], ]; export const GG = [ - "Guernsey", - "GG", - [ - ["Castel", "undefined"], - ["Forest", "undefined"], - ["St. Andrew", "undefined"], - ["St. Martin", "undefined"], - ["St. Peter Port", "undefined"], - ["St. Pierre du Bois", "undefined"], - ["St. Sampson", "undefined"], - ["St. Saviour", "undefined"], - ["Torteval", "undefined"], - ["Vale", "undefined"], - ], + 'Guernsey', + 'GG', + [ + ['Castel', undefined], + ['Forest', undefined], + ['St. Andrew', undefined], + ['St. Martin', undefined], + ['St. Peter Port', undefined], + ['St. Pierre du Bois', undefined], + ['St. Sampson', undefined], + ['St. Saviour', undefined], + ['Torteval', undefined], + ['Vale', undefined], + ], ]; export const GN = [ - "Guinea", - "GN", - [ - ["Boké", "B"], - ["Conakry", "C"], - ["Faranah", "F"], - ["Kankan", "K"], - ["Kindia", "D"], - ["Labé", "L"], - ["Mamou", "M"], - ["Nzérékoré", "N"], - ], + 'Guinea', + 'GN', + [ + ['Boké', 'B'], + ['Conakry', 'C'], + ['Faranah', 'F'], + ['Kankan', 'K'], + ['Kindia', 'D'], + ['Labé', 'L'], + ['Mamou', 'M'], + ['Nzérékoré', 'N'], + ], ]; export const GW = [ - "Guinea-Bissau", - "GW", - [ - ["Bafatá", "BA"], - ["Biombo", "BM"], - ["Bissau", "BS"], - ["Bolama-Bijagos", "BL"], - ["Cacheu", "CA"], - ["Gabú", "GA"], - ["Oio", "OI"], - ["Quinara", "QU"], - ["Tombali", "TO"], - ], + 'Guinea-Bissau', + 'GW', + [ + ['Bafatá', 'BA'], + ['Biombo', 'BM'], + ['Bissau', 'BS'], + ['Bolama-Bijagos', 'BL'], + ['Cacheu', 'CA'], + ['Gabú', 'GA'], + ['Oio', 'OI'], + ['Quinara', 'QU'], + ['Tombali', 'TO'], + ], ]; export const GY = [ - "Guyana", - "GY", - [ - ["Barima-Waini", "BA"], - ["Cuyuni-Mazaruni", "CU"], - ["Demerara-Mahaica", "DE"], - ["East Berbice-Corentyne", "EB"], - ["Essequibo Islands-West Demerara", "ES"], - ["Mahaica-Berbice", "MA"], - ["Pomeroon-Supenaam", "PM"], - ["Potaro-Siparuni", "PT"], - ["Upper Demerara-Berbice", "UD"], - ["Upper Takutu-Upper Essequibo", "UT"], - ], + 'Guyana', + 'GY', + [ + ['Barima-Waini', 'BA'], + ['Cuyuni-Mazaruni', 'CU'], + ['Demerara-Mahaica', 'DE'], + ['East Berbice-Corentyne', 'EB'], + ['Essequibo Islands-West Demerara', 'ES'], + ['Mahaica-Berbice', 'MA'], + ['Pomeroon-Supenaam', 'PM'], + ['Potaro-Siparuni', 'PT'], + ['Upper Demerara-Berbice', 'UD'], + ['Upper Takutu-Upper Essequibo', 'UT'], + ], ]; export const HT = [ - "Haiti", - "HT", - [ - ["Artibonite", "AR"], - ["Centre", "CE"], - ["Grand'Anse", "GA"], - ["Nippes", "NI"], - ["Nord", "ND"], - ["Nord-Est", "NE"], - ["Nord-Ouest", "NO"], - ["Ouest", "OU"], - ["Sud", "SD"], - ["Sud-Est", "SE"], - ], -]; -export const HM = [ - "Heard Island and McDonald Islands", - "HM", - [["Heard Island and McDonald Islands", "undefined"]], -]; -export const VA = [ - "Holy See (Vatican City)", - "VA", - [["Holy See (Vatican City)", "01"]], -]; + 'Haiti', + 'HT', + [ + ['Artibonite', 'AR'], + ['Centre', 'CE'], + ["Grand'Anse", 'GA'], + ['Nippes', 'NI'], + ['Nord', 'ND'], + ['Nord-Est', 'NE'], + ['Nord-Ouest', 'NO'], + ['Ouest', 'OU'], + ['Sud', 'SD'], + ['Sud-Est', 'SE'], + ], +]; +export const HM = ['Heard Island and McDonald Islands', 'HM', [['Heard Island and McDonald Islands', undefined]]]; +export const VA = ['Holy See (Vatican City)', 'VA', [['Holy See (Vatican City)', '01']]]; export const HN = [ - "Honduras", - "HN", - [ - ["Atlántida", "AT"], - ["Choluteca", "CH"], - ["Colón", "CL"], - ["Comayagua", "CM"], - ["Copán", "CP"], - ["Cortés", "CR"], - ["El Paraíso", "EP"], - ["Francisco Morazán", "FM"], - ["Gracias a Dios", "GD"], - ["Intibucá", "IN"], - ["Islas de la Bahía", "IB"], - ["La Paz", "LP"], - ["Lempira", "LE"], - ["Ocotepeque", "OC"], - ["Olancho", "OL"], - ["Santa Bárbara", "SB"], - ["Valle", "VA"], - ["Yoro", "YO"], - ], -]; -export const HK = ["Hong Kong", "HK", [["Hong Kong", "HK"]]]; + 'Honduras', + 'HN', + [ + ['Atlántida', 'AT'], + ['Choluteca', 'CH'], + ['Colón', 'CL'], + ['Comayagua', 'CM'], + ['Copán', 'CP'], + ['Cortés', 'CR'], + ['El Paraíso', 'EP'], + ['Francisco Morazán', 'FM'], + ['Gracias a Dios', 'GD'], + ['Intibucá', 'IN'], + ['Islas de la Bahía', 'IB'], + ['La Paz', 'LP'], + ['Lempira', 'LE'], + ['Ocotepeque', 'OC'], + ['Olancho', 'OL'], + ['Santa Bárbara', 'SB'], + ['Valle', 'VA'], + ['Yoro', 'YO'], + ], +]; +export const HK = ['Hong Kong', 'HK', [['Hong Kong', 'HK']]]; export const HU = [ - "Hungary", - "HU", - [ - ["Bács-Kiskun", "BK"], - ["Baranya", "BA"], - ["Békés", "BE"], - ["Békéscsaba", "BC"], - ["Borsod-Abauj-Zemplen", "BZ"], - ["Budapest", "BU"], - ["Csongrád", "CS"], - ["Debrecen", "DE"], - ["Dunaújváros", "DU"], - ["Eger", "EG"], - ["Érd", "ER"], - ["Fejér", "FE"], - ["Győr", "GY"], - ["Győr-Moson-Sopron", "GS"], - ["Hajdú-Bihar", "HB"], - ["Heves", "HE"], - ["Hódmezővásárhely", "HV"], - ["Jász-Nagykun-Szolnok", "JN"], - ["Kaposvár", "KV"], - ["Kecskemét", "KM"], - ["Komárom-Esztergom", "KE"], - ["Miskolc", "MI"], - ["Nagykanizsa", "NK"], - ["Nógrád", "NO"], - ["Nyíregyháza", "NY"], - ["Pécs", "PS"], - ["Pest", "PE"], - ["Salgótarján", "ST"], - ["Somogy", "SO"], - ["Sopron", "SN"], - ["Szabolcs-á-Bereg", "SZ"], - ["Szeged", "SD"], - ["Székesfehérvár", "SF"], - ["Szekszárd", "SS"], - ["Szolnok", "SK"], - ["Szombathely", "SH"], - ["Tatabánya", "TB"], - ["Tolna", "TO"], - ["Vas", "VA"], - ["Veszprém", "VE"], - ["Veszprém (City)", "VM"], - ["Zala", "ZA"], - ["Zalaegerszeg", "ZE"], - ], + 'Hungary', + 'HU', + [ + ['Bács-Kiskun', 'BK'], + ['Baranya', 'BA'], + ['Békés', 'BE'], + ['Békéscsaba', 'BC'], + ['Borsod-Abauj-Zemplen', 'BZ'], + ['Budapest', 'BU'], + ['Csongrád', 'CS'], + ['Debrecen', 'DE'], + ['Dunaújváros', 'DU'], + ['Eger', 'EG'], + ['Érd', 'ER'], + ['Fejér', 'FE'], + ['Győr', 'GY'], + ['Győr-Moson-Sopron', 'GS'], + ['Hajdú-Bihar', 'HB'], + ['Heves', 'HE'], + ['Hódmezővásárhely', 'HV'], + ['Jász-Nagykun-Szolnok', 'JN'], + ['Kaposvár', 'KV'], + ['Kecskemét', 'KM'], + ['Komárom-Esztergom', 'KE'], + ['Miskolc', 'MI'], + ['Nagykanizsa', 'NK'], + ['Nógrád', 'NO'], + ['Nyíregyháza', 'NY'], + ['Pécs', 'PS'], + ['Pest', 'PE'], + ['Salgótarján', 'ST'], + ['Somogy', 'SO'], + ['Sopron', 'SN'], + ['Szabolcs-á-Bereg', 'SZ'], + ['Szeged', 'SD'], + ['Székesfehérvár', 'SF'], + ['Szekszárd', 'SS'], + ['Szolnok', 'SK'], + ['Szombathely', 'SH'], + ['Tatabánya', 'TB'], + ['Tolna', 'TO'], + ['Vas', 'VA'], + ['Veszprém', 'VE'], + ['Veszprém (City)', 'VM'], + ['Zala', 'ZA'], + ['Zalaegerszeg', 'ZE'], + ], ]; export const IS = [ - "Iceland", - "IS", - [ - ["Austurland", "7"], - ["Höfuðborgarsvæði", "1"], - ["Norðurland eystra", "6"], - ["Norðurland vestra", "5"], - ["Suðurland", "8"], - ["Suðurnes", "2"], - ["Vestfirðir", "4"], - ["Vesturland", "3"], - ], + 'Iceland', + 'IS', + [ + ['Austurland', '7'], + ['Höfuðborgarsvæði', '1'], + ['Norðurland eystra', '6'], + ['Norðurland vestra', '5'], + ['Suðurland', '8'], + ['Suðurnes', '2'], + ['Vestfirðir', '4'], + ['Vesturland', '3'], + ], ]; export const IN = [ - "India", - "IN", - [ - ["Andaman and Nicobar Islands", "AN"], - ["Andhra Pradesh", "AP"], - ["Arunachal Pradesh", "AR"], - ["Assam", "AS"], - ["Bihar", "BR"], - ["Chandigarh", "CH"], - ["Chhattisgarh", "CT"], - ["Dadra and Nagar Haveli and Daman and Diu", "DH"], - ["Delhi", "DL"], - ["Goa", "GA"], - ["Gujarat", "GJ"], - ["Haryana", "HR"], - ["Himachal Pradesh", "HP"], - ["Jammu and Kashmir", "JK"], - ["Jharkhand", "JH"], - ["Karnataka", "KA"], - ["Kerala", "KL"], - ["Ladakh", "LA"], - ["Lakshadweep", "LD"], - ["Madhya Pradesh", "MP"], - ["Maharashtra", "MH"], - ["Manipur", "MN"], - ["Meghalaya", "ML"], - ["Mizoram", "MZ"], - ["Nagaland", "NL"], - ["Odisha", "OR"], - ["Puducherry", "PY"], - ["Punjab", "PB"], - ["Rajasthan", "RJ"], - ["Sikkim", "SK"], - ["Tamil Nadu", "TN"], - ["Telangana", "TG"], - ["Tripura", "TR"], - ["Uttarakhand", "UT"], - ["Uttar Pradesh", "UP"], - ["West Bengal", "WB"], - ], + 'India', + 'IN', + [ + ['Andaman and Nicobar Islands', 'AN'], + ['Andhra Pradesh', 'AP'], + ['Arunachal Pradesh', 'AR'], + ['Assam', 'AS'], + ['Bihar', 'BR'], + ['Chandigarh', 'CH'], + ['Chhattisgarh', 'CT'], + ['Dadra and Nagar Haveli and Daman and Diu', 'DH'], + ['Delhi', 'DL'], + ['Goa', 'GA'], + ['Gujarat', 'GJ'], + ['Haryana', 'HR'], + ['Himachal Pradesh', 'HP'], + ['Jammu and Kashmir', 'JK'], + ['Jharkhand', 'JH'], + ['Karnataka', 'KA'], + ['Kerala', 'KL'], + ['Ladakh', 'LA'], + ['Lakshadweep', 'LD'], + ['Madhya Pradesh', 'MP'], + ['Maharashtra', 'MH'], + ['Manipur', 'MN'], + ['Meghalaya', 'ML'], + ['Mizoram', 'MZ'], + ['Nagaland', 'NL'], + ['Odisha', 'OR'], + ['Puducherry', 'PY'], + ['Punjab', 'PB'], + ['Rajasthan', 'RJ'], + ['Sikkim', 'SK'], + ['Tamil Nadu', 'TN'], + ['Telangana', 'TG'], + ['Tripura', 'TR'], + ['Uttarakhand', 'UT'], + ['Uttar Pradesh', 'UP'], + ['West Bengal', 'WB'], + ], ]; export const ID = [ - "Indonesia", - "ID", - [ - ["Aceh", "AC"], - ["Bali", "BA"], - ["Bangka Belitung", "BB"], - ["Banten", "BT"], - ["Bengkulu", "BE"], - ["Gorontalo", "GO"], - ["Jakarta Raya", "JK"], - ["Jambi", "JA"], - ["Jawa Barat", "JB"], - ["Jawa Tengah", "JT"], - ["Jawa Timur", "JI"], - ["Kalimantan Barat", "KB"], - ["Kalimantan Selatan", "KS"], - ["Kalimantan Tengah", "KT"], - ["Kalimantan Timur", "KI"], - ["Kalimantan Utara", "KU"], - ["Kepulauan Riau", "KR"], - ["Lampung", "LA"], - ["Maluku", "MA"], - ["Maluku Utara", "MU"], - ["Nusa Tenggara Barat", "NB"], - ["Nusa Tenggara Timur", "NT"], - ["Papua", "PA"], - ["Papua Barat", "PB"], - ["Riau", "RI"], - ["Sulawesi Selatan", "SR"], - ["Sulawesi Tengah", "ST"], - ["Sulawesi Tenggara", "SG"], - ["Sulawesi Utara", "SA"], - ["Sumatera Barat", "SB"], - ["Sumatera Selatan", "SS"], - ["Sumatera Utara", "SU"], - ["Yogyakarta", "YO"], - ], + 'Indonesia', + 'ID', + [ + ['Aceh', 'AC'], + ['Bali', 'BA'], + ['Bangka Belitung', 'BB'], + ['Banten', 'BT'], + ['Bengkulu', 'BE'], + ['Gorontalo', 'GO'], + ['Jakarta Raya', 'JK'], + ['Jambi', 'JA'], + ['Jawa Barat', 'JB'], + ['Jawa Tengah', 'JT'], + ['Jawa Timur', 'JI'], + ['Kalimantan Barat', 'KB'], + ['Kalimantan Selatan', 'KS'], + ['Kalimantan Tengah', 'KT'], + ['Kalimantan Timur', 'KI'], + ['Kalimantan Utara', 'KU'], + ['Kepulauan Riau', 'KR'], + ['Lampung', 'LA'], + ['Maluku', 'MA'], + ['Maluku Utara', 'MU'], + ['Nusa Tenggara Barat', 'NB'], + ['Nusa Tenggara Timur', 'NT'], + ['Papua', 'PA'], + ['Papua Barat', 'PB'], + ['Riau', 'RI'], + ['Sulawesi Selatan', 'SR'], + ['Sulawesi Tengah', 'ST'], + ['Sulawesi Tenggara', 'SG'], + ['Sulawesi Utara', 'SA'], + ['Sumatera Barat', 'SB'], + ['Sumatera Selatan', 'SS'], + ['Sumatera Utara', 'SU'], + ['Yogyakarta', 'YO'], + ], ]; export const IR = [ - "Iran, Islamic Republic of", - "IR", - [ - ["Alborz", "32"], - ["Ardabīl", "03"], - ["Āz̄arbāyjān-e Gharbī", "02"], - ["Āz̄arbāyjān-e Sharqī", "01"], - ["Būshehr", "06"], - ["Chahār Maḩāl va Bakhtīārī", "08"], - ["Eşfahān", "04"], - ["Fārs", "14"], - ["Gīlān", "19"], - ["Golestān", "27"], - ["Hamadān", "24"], - ["Hormozgān", "23"], - ["Īlām", "05"], - ["Kermān", "15"], - ["Kermānshāh", "17"], - ["Khorāsān-e Jonūbī", "29"], - ["Khorāsān-e Raẕavī", "30"], - ["Khorāsān-e Shomālī", "61"], - ["Khūzestān", "10"], - ["Kohgīlūyeh va Bowyer Aḩmad", "18"], - ["Kordestān", "16"], - ["Lorestān", "20"], - ["Markazi", "22"], - ["Māzandarān", "21"], - ["Qazvīn", "28"], - ["Qom", "26"], - ["Semnān", "12"], - ["Sīstān va Balūchestān", "13"], - ["Tehrān", "07"], - ["Yazd", "25"], - ["Zanjān", "11"], - ], + 'Iran, Islamic Republic of', + 'IR', + [ + ['Alborz', '32'], + ['Ardabīl', '03'], + ['Āz̄arbāyjān-e Gharbī', '02'], + ['Āz̄arbāyjān-e Sharqī', '01'], + ['Būshehr', '06'], + ['Chahār Maḩāl va Bakhtīārī', '08'], + ['Eşfahān', '04'], + ['Fārs', '14'], + ['Gīlān', '19'], + ['Golestān', '27'], + ['Hamadān', '24'], + ['Hormozgān', '23'], + ['Īlām', '05'], + ['Kermān', '15'], + ['Kermānshāh', '17'], + ['Khorāsān-e Jonūbī', '29'], + ['Khorāsān-e Raẕavī', '30'], + ['Khorāsān-e Shomālī', '61'], + ['Khūzestān', '10'], + ['Kohgīlūyeh va Bowyer Aḩmad', '18'], + ['Kordestān', '16'], + ['Lorestān', '20'], + ['Markazi', '22'], + ['Māzandarān', '21'], + ['Qazvīn', '28'], + ['Qom', '26'], + ['Semnān', '12'], + ['Sīstān va Balūchestān', '13'], + ['Tehrān', '07'], + ['Yazd', '25'], + ['Zanjān', '11'], + ], ]; export const IQ = [ - "Iraq", - "IQ", - [ - ["Al Anbār", "AN"], - ["Al Başrah", "BA"], - ["Al Muthanná", "MU"], - ["Al Qādisīyah", "QA"], - ["An Najaf", "NA"], - ["Arbīl", "AR"], - ["As Sulaymānīyah", "SU"], - ["Bābil", "BB"], - ["Baghdād", "BG"], - ["Dohuk", "DA"], - ["Dhī Qār", "DQ"], - ["Diyālá", "DI"], - ["Karbalā'", "KA"], - ["Kirkuk", "KI"], - ["Maysān", "MA"], - ["Nīnawá", "NI"], - ["Şalāḩ ad Dīn", "SD"], - ["Wāsiţ", "WA"], - ], + 'Iraq', + 'IQ', + [ + ['Al Anbār', 'AN'], + ['Al Başrah', 'BA'], + ['Al Muthanná', 'MU'], + ['Al Qādisīyah', 'QA'], + ['An Najaf', 'NA'], + ['Arbīl', 'AR'], + ['As Sulaymānīyah', 'SU'], + ['Bābil', 'BB'], + ['Baghdād', 'BG'], + ['Dohuk', 'DA'], + ['Dhī Qār', 'DQ'], + ['Diyālá', 'DI'], + ["Karbalā'", 'KA'], + ['Kirkuk', 'KI'], + ['Maysān', 'MA'], + ['Nīnawá', 'NI'], + ['Şalāḩ ad Dīn', 'SD'], + ['Wāsiţ', 'WA'], + ], ]; export const IE = [ - "Ireland", - "IE", - [ - ["Carlow", "CW"], - ["Cavan", "CN"], - ["Clare", "CE"], - ["Cork", "CO"], - ["Donegal", "DL"], - ["Dublin", "D"], - ["Galway", "G"], - ["Kerry", "KY"], - ["Kildare", "KE"], - ["Kilkenny", "KK"], - ["Laois", "LS"], - ["Leitrim", "LM"], - ["Limerick", "LK"], - ["Longford", "LD"], - ["Louth", "LH"], - ["Mayo", "MO"], - ["Meath", "MH"], - ["Monaghan", "MN"], - ["Offaly", "OY"], - ["Roscommon", "RN"], - ["Sligo", "SO"], - ["Tipperary", "TA"], - ["Waterford", "WD"], - ["Westmeath", "WH"], - ["Wexford", "WX"], - ["Wicklow", "WW"], - ], -]; -export const IM = ["Isle of Man", "IM", [["Isle of Man", "undefined"]]]; + 'Ireland', + 'IE', + [ + ['Carlow', 'CW'], + ['Cavan', 'CN'], + ['Clare', 'CE'], + ['Cork', 'CO'], + ['Donegal', 'DL'], + ['Dublin', 'D'], + ['Galway', 'G'], + ['Kerry', 'KY'], + ['Kildare', 'KE'], + ['Kilkenny', 'KK'], + ['Laois', 'LS'], + ['Leitrim', 'LM'], + ['Limerick', 'LK'], + ['Longford', 'LD'], + ['Louth', 'LH'], + ['Mayo', 'MO'], + ['Meath', 'MH'], + ['Monaghan', 'MN'], + ['Offaly', 'OY'], + ['Roscommon', 'RN'], + ['Sligo', 'SO'], + ['Tipperary', 'TA'], + ['Waterford', 'WD'], + ['Westmeath', 'WH'], + ['Wexford', 'WX'], + ['Wicklow', 'WW'], + ], +]; +export const IM = ['Isle of Man', 'IM', [['Isle of Man', undefined]]]; export const IL = [ - "Israel", - "IL", - [ - ["HaDarom", "D"], - ["HaMerkaz", "M"], - ["HaTsafon", "Z"], - ["H̱efa", "HA"], - ["Tel-Aviv", "TA"], - ["Yerushalayim", "JM"], - ], + 'Israel', + 'IL', + [ + ['HaDarom', 'D'], + ['HaMerkaz', 'M'], + ['HaTsafon', 'Z'], + ['H̱efa', 'HA'], + ['Tel-Aviv', 'TA'], + ['Yerushalayim', 'JM'], + ], ]; export const IT = [ - "Italy", - "IT", - [ - ["Abruzzo", "65"], - ["Basilicata", "77"], - ["Calabria", "78"], - ["Campania", "72"], - ["Emilia-Romagna", "45"], - ["Friuli-Venezia Giulia", "36"], - ["Lazio", "62"], - ["Liguria", "42"], - ["Lombardia", "25"], - ["Marche", "57"], - ["Molise", "67"], - ["Piemonte", "21"], - ["Puglia", "75"], - ["Sardegna", "88"], - ["Sicilia", "82"], - ["Toscana", "52"], - ["Trentino-Alto Adige", "32"], - ["Umbria", "55"], - ["Valle d'Aosta", "23"], - ["Veneto", "34"], - ], + 'Italy', + 'IT', + [ + ['Abruzzo', '65'], + ['Basilicata', '77'], + ['Calabria', '78'], + ['Campania', '72'], + ['Emilia-Romagna', '45'], + ['Friuli-Venezia Giulia', '36'], + ['Lazio', '62'], + ['Liguria', '42'], + ['Lombardia', '25'], + ['Marche', '57'], + ['Molise', '67'], + ['Piemonte', '21'], + ['Puglia', '75'], + ['Sardegna', '88'], + ['Sicilia', '82'], + ['Toscana', '52'], + ['Trentino-Alto Adige', '32'], + ['Umbria', '55'], + ["Valle d'Aosta", '23'], + ['Veneto', '34'], + ], ]; export const JM = [ - "Jamaica", - "JM", - [ - ["Clarendon", "13"], - ["Hanover", "09"], - ["Kingston", "01"], - ["Manchester", "12"], - ["Portland", "04"], - ["Saint Andrew", "02"], - ["Saint Ann", "06"], - ["Saint Catherine", "14"], - ["Saint Elizabeth", "11"], - ["Saint James", "08"], - ["Saint Mary", "05"], - ["Saint Thomas", "03"], - ["Trelawny", "07"], - ["Westmoreland", "10"], - ], + 'Jamaica', + 'JM', + [ + ['Clarendon', '13'], + ['Hanover', '09'], + ['Kingston', '01'], + ['Manchester', '12'], + ['Portland', '04'], + ['Saint Andrew', '02'], + ['Saint Ann', '06'], + ['Saint Catherine', '14'], + ['Saint Elizabeth', '11'], + ['Saint James', '08'], + ['Saint Mary', '05'], + ['Saint Thomas', '03'], + ['Trelawny', '07'], + ['Westmoreland', '10'], + ], ]; export const JP = [ - "Japan", - "JP", - [ - ["Aichi", "23"], - ["Akita", "05"], - ["Aomori", "02"], - ["Chiba", "12"], - ["Ehime", "38"], - ["Fukui", "18"], - ["Fukuoka", "40"], - ["Fukushima", "07"], - ["Gifu", "21"], - ["Gunma", "10"], - ["Hiroshima", "34"], - ["Hokkaido", "01"], - ["Hyogo", "28"], - ["Ibaraki", "08"], - ["Ishikawa", "17"], - ["Iwate", "03"], - ["Kagawa", "37"], - ["Kagoshima", "46"], - ["Kanagawa", "14"], - ["Kochi", "39"], - ["Kumamoto", "43"], - ["Kyoto", "26"], - ["Mie", "24"], - ["Miyagi", "04"], - ["Miyazaki", "45"], - ["Nagano", "20"], - ["Nagasaki", "42"], - ["Nara", "29"], - ["Niigata", "15"], - ["Oita", "44"], - ["Okayama", "33"], - ["Okinawa", "47"], - ["Osaka", "27"], - ["Saga", "41"], - ["Saitama", "11"], - ["Shiga", "25"], - ["Shimane", "32"], - ["Shizuoka", "22"], - ["Tochigi", "09"], - ["Tokushima", "36"], - ["Tokyo", "13"], - ["Tottori", "31"], - ["Toyama", "16"], - ["Wakayama", "30"], - ["Yamagata", "06"], - ["Yamaguchi", "35"], - ["Yamanashi", "19"], - ], -]; -export const JE = ["Jersey", "JE", [["Jersey", "undefined"]]]; + 'Japan', + 'JP', + [ + ['Aichi', '23'], + ['Akita', '05'], + ['Aomori', '02'], + ['Chiba', '12'], + ['Ehime', '38'], + ['Fukui', '18'], + ['Fukuoka', '40'], + ['Fukushima', '07'], + ['Gifu', '21'], + ['Gunma', '10'], + ['Hiroshima', '34'], + ['Hokkaido', '01'], + ['Hyogo', '28'], + ['Ibaraki', '08'], + ['Ishikawa', '17'], + ['Iwate', '03'], + ['Kagawa', '37'], + ['Kagoshima', '46'], + ['Kanagawa', '14'], + ['Kochi', '39'], + ['Kumamoto', '43'], + ['Kyoto', '26'], + ['Mie', '24'], + ['Miyagi', '04'], + ['Miyazaki', '45'], + ['Nagano', '20'], + ['Nagasaki', '42'], + ['Nara', '29'], + ['Niigata', '15'], + ['Oita', '44'], + ['Okayama', '33'], + ['Okinawa', '47'], + ['Osaka', '27'], + ['Saga', '41'], + ['Saitama', '11'], + ['Shiga', '25'], + ['Shimane', '32'], + ['Shizuoka', '22'], + ['Tochigi', '09'], + ['Tokushima', '36'], + ['Tokyo', '13'], + ['Tottori', '31'], + ['Toyama', '16'], + ['Wakayama', '30'], + ['Yamagata', '06'], + ['Yamaguchi', '35'], + ['Yamanashi', '19'], + ], +]; +export const JE = ['Jersey', 'JE', [['Jersey', undefined]]]; export const JO = [ - "Jordan", - "JO", - [ - ["‘Ajlūn", "AJ"], - ["Al 'Aqabah", "AQ"], - ["Al Balqā’", "BA"], - ["Al Karak", "KA"], - ["Al Mafraq", "MA"], - ["Al ‘A̅şimah", "AM"], - ["Aţ Ţafīlah", "AT"], - ["Az Zarqā’", "AZ"], - ["Irbid", "IR"], - ["Jarash", "JA"], - ["Ma‘ān", "MN"], - ["Mādabā", "MD"], - ], + 'Jordan', + 'JO', + [ + ['‘Ajlūn', 'AJ'], + ["Al 'Aqabah", 'AQ'], + ['Al Balqā’', 'BA'], + ['Al Karak', 'KA'], + ['Al Mafraq', 'MA'], + ['Al ‘A̅şimah', 'AM'], + ['Aţ Ţafīlah', 'AT'], + ['Az Zarqā’', 'AZ'], + ['Irbid', 'IR'], + ['Jarash', 'JA'], + ['Ma‘ān', 'MN'], + ['Mādabā', 'MD'], + ], ]; export const KZ = [ - "Kazakhstan", - "KZ", - [ - ["Almaty", "ALA"], - ["Aqmola", "AKM"], - ["Aqtobe", "AKT"], - ["Astana", "AST"], - ["Atyrau", "ATY"], - ["Batys Qazaqstan", "ZAP"], - ["Bayqongyr", "undefined"], - ["Mangghystau", "MAN"], - ["Ongtustik Qazaqstan", "YUZ"], - ["Pavlodar", "PAV"], - ["Qaraghandy", "KAR"], - ["Qostanay", "KUS"], - ["Qyzylorda", "KZY"], - ["Shyghys Qazaqstan", "VOS"], - ["Soltustik Qazaqstan", "SEV"], - ["Zhambyl", "ZHA"], - ], + 'Kazakhstan', + 'KZ', + [ + ['Almaty', 'ALA'], + ['Aqmola', 'AKM'], + ['Aqtobe', 'AKT'], + ['Astana', 'AST'], + ['Atyrau', 'ATY'], + ['Batys Qazaqstan', 'ZAP'], + ['Bayqongyr', undefined], + ['Mangghystau', 'MAN'], + ['Ongtustik Qazaqstan', 'YUZ'], + ['Pavlodar', 'PAV'], + ['Qaraghandy', 'KAR'], + ['Qostanay', 'KUS'], + ['Qyzylorda', 'KZY'], + ['Shyghys Qazaqstan', 'VOS'], + ['Soltustik Qazaqstan', 'SEV'], + ['Zhambyl', 'ZHA'], + ], ]; export const KE = [ - "Kenya", - "KE", - [ - ["Baringo", "01"], - ["Bomet", "02"], - ["Bungoma", "03"], - ["Busia", "04"], - ["Eleyo/Marakwet", "05"], - ["Embu", "06"], - ["Garissa", "07"], - ["Homa Bay", "08"], - ["Isiolo", "09"], - ["Kajiado", "10"], - ["Kakamega", "11"], - ["Kericho", "12"], - ["Kiambu", "13"], - ["Kilifi", "14"], - ["Kirinyaga", "15"], - ["Kisii", "16"], - ["Kisumu", "17"], - ["Kitui", "18"], - ["Kwale", "19"], - ["Laikipia", "20"], - ["Lamu", "21"], - ["Machakos", "22"], - ["Makueni", "23"], - ["Mandera", "24"], - ["Marsabit", "25"], - ["Meru", "26"], - ["Migori", "27"], - ["Mombasa", "28"], - ["Murang'a", "29"], - ["Nairobi City", "30"], - ["Nakuru", "31"], - ["Nandi", "32"], - ["Narok", "33"], - ["Nyamira", "34"], - ["Nyandarua", "35"], - ["Nyeri", "36"], - ["Samburu", "37"], - ["Siaya", "38"], - ["Taita/Taveta", "39"], - ["Tana River", "40"], - ["Tharaka-Nithi", "41"], - ["Trans Nzoia", "42"], - ["Turkana", "43"], - ["Uasin Gishu", "44"], - ["Vihiga", "45"], - ["Wajir", "46"], - ["West Pokot", "47"], - ], + 'Kenya', + 'KE', + [ + ['Baringo', '01'], + ['Bomet', '02'], + ['Bungoma', '03'], + ['Busia', '04'], + ['Eleyo/Marakwet', '05'], + ['Embu', '06'], + ['Garissa', '07'], + ['Homa Bay', '08'], + ['Isiolo', '09'], + ['Kajiado', '10'], + ['Kakamega', '11'], + ['Kericho', '12'], + ['Kiambu', '13'], + ['Kilifi', '14'], + ['Kirinyaga', '15'], + ['Kisii', '16'], + ['Kisumu', '17'], + ['Kitui', '18'], + ['Kwale', '19'], + ['Laikipia', '20'], + ['Lamu', '21'], + ['Machakos', '22'], + ['Makueni', '23'], + ['Mandera', '24'], + ['Marsabit', '25'], + ['Meru', '26'], + ['Migori', '27'], + ['Mombasa', '28'], + ["Murang'a", '29'], + ['Nairobi City', '30'], + ['Nakuru', '31'], + ['Nandi', '32'], + ['Narok', '33'], + ['Nyamira', '34'], + ['Nyandarua', '35'], + ['Nyeri', '36'], + ['Samburu', '37'], + ['Siaya', '38'], + ['Taita/Taveta', '39'], + ['Tana River', '40'], + ['Tharaka-Nithi', '41'], + ['Trans Nzoia', '42'], + ['Turkana', '43'], + ['Uasin Gishu', '44'], + ['Vihiga', '45'], + ['Wajir', '46'], + ['West Pokot', '47'], + ], ]; export const KI = [ - "Kiribati", - "KI", - [ - ["Abaiang", "undefined"], - ["Abemama", "undefined"], - ["Aranuka", "undefined"], - ["Arorae", "undefined"], - ["Banaba", "undefined"], - ["Beru", "undefined"], - ["Butaritari", "undefined"], - ["Central Gilberts", "undefined"], - ["Gilbert Islands", "G"], - ["Kanton", "undefined"], - ["Kiritimati", "undefined"], - ["Kuria", "undefined"], - ["Line Islands", "L"], - ["Maiana", "undefined"], - ["Makin", "undefined"], - ["Marakei", "undefined"], - ["Nikunau", "undefined"], - ["Nonouti", "undefined"], - ["Northern Gilberts", "undefined"], - ["Onotoa", "undefined"], - ["Phoenix Islands", "P"], - ["Southern Gilberts", "undefined"], - ["Tabiteuea", "undefined"], - ["Tabuaeran", "undefined"], - ["Tamana", "undefined"], - ["Tarawa", "undefined"], - ["Teraina", "undefined"], - ], + 'Kiribati', + 'KI', + [ + ['Abaiang', undefined], + ['Abemama', undefined], + ['Aranuka', undefined], + ['Arorae', undefined], + ['Banaba', undefined], + ['Beru', undefined], + ['Butaritari', undefined], + ['Central Gilberts', undefined], + ['Gilbert Islands', 'G'], + ['Kanton', undefined], + ['Kiritimati', undefined], + ['Kuria', undefined], + ['Line Islands', 'L'], + ['Maiana', undefined], + ['Makin', undefined], + ['Marakei', undefined], + ['Nikunau', undefined], + ['Nonouti', undefined], + ['Northern Gilberts', undefined], + ['Onotoa', undefined], + ['Phoenix Islands', 'P'], + ['Southern Gilberts', undefined], + ['Tabiteuea', undefined], + ['Tabuaeran', undefined], + ['Tamana', undefined], + ['Tarawa', undefined], + ['Teraina', undefined], + ], ]; export const KP = [ - "Korea, Democratic People's Republic of", - "KP", - [ - ["Chagang-do (Chagang Province)", "04"], - ["Hamgyong-bukto (North Hamgyong Province)", "09"], - ["Hamgyong-namdo (South Hamgyong Province)", "08"], - ["Hwanghae-bukto (North Hwanghae Province)", "06"], - ["Hwanghae-namdo (South Hwanghae Province)", "05"], - ["Kangwon-do (Kangwon Province)", "07"], - ["Nasŏn (Najin-Sŏnbong)", "13"], - ["P'yongan-bukto (North P'yongan Province)", "03"], - ["P'yongan-namdo (South P'yongan Province)", "02"], - ["P'yongyang-si (P'yongyang City)", "01"], - ["Yanggang-do (Yanggang Province)", "10"], - ], + "Korea, Democratic People's Republic of", + 'KP', + [ + ['Chagang-do (Chagang Province)', '04'], + ['Hamgyong-bukto (North Hamgyong Province)', '09'], + ['Hamgyong-namdo (South Hamgyong Province)', '08'], + ['Hwanghae-bukto (North Hwanghae Province)', '06'], + ['Hwanghae-namdo (South Hwanghae Province)', '05'], + ['Kangwon-do (Kangwon Province)', '07'], + ['Nasŏn (Najin-Sŏnbong)', '13'], + ["P'yongan-bukto (North P'yongan Province)", '03'], + ["P'yongan-namdo (South P'yongan Province)", '02'], + ["P'yongyang-si (P'yongyang City)", '01'], + ['Yanggang-do (Yanggang Province)', '10'], + ], ]; export const KR = [ - "Korea, Republic of", - "KR", - [ - ["Chungcheongbuk-do", "43"], - ["Chungcheongnam-do", "44"], - ["Jeju-teukbyeoljachido", "49"], - ["Jeollabuk-do", "45"], - ["Jeollanam-do", "46"], - ["Incheon-gwangyeoksi", "28"], - ["Gangwon-do", "42"], - ["Gwangju-gwangyeoksi", "29"], - ["Gyeonggi-do", "41"], - ["Gyeongsangbuk-do", "47"], - ["Gyeongsangnam-do", "48"], - ["Busan-gwangyeoksi", "26"], - ["Seoul-teukbyeolsi", "11"], - ["Sejong-teukbyeoljachisi", "50"], - ["Daegu-gwangyeoksi", "27"], - ["Daejeon-gwangyeoksi", "30"], - ["Ulsan-gwangyeoksi", "31"], - ], + 'Korea, Republic of', + 'KR', + [ + ['Chungcheongbuk-do', '43'], + ['Chungcheongnam-do', '44'], + ['Jeju-teukbyeoljachido', '49'], + ['Jeollabuk-do', '45'], + ['Jeollanam-do', '46'], + ['Incheon-gwangyeoksi', '28'], + ['Gangwon-do', '42'], + ['Gwangju-gwangyeoksi', '29'], + ['Gyeonggi-do', '41'], + ['Gyeongsangbuk-do', '47'], + ['Gyeongsangnam-do', '48'], + ['Busan-gwangyeoksi', '26'], + ['Seoul-teukbyeolsi', '11'], + ['Sejong-teukbyeoljachisi', '50'], + ['Daegu-gwangyeoksi', '27'], + ['Daejeon-gwangyeoksi', '30'], + ['Ulsan-gwangyeoksi', '31'], + ], ]; export const XK = [ - "Kosovo", - "XK", - [ - ["Farizaj", "FZ"], - ["Gjakova", "GK"], - ["Gjilan", "GL"], - ["Mitrovica", "MI"], - ["Peja/Peć", "PE"], - ["Pristina", "PR"], - ["Prizren", "PZ"], - ], + 'Kosovo', + 'XK', + [ + ['Farizaj', 'FZ'], + ['Gjakova', 'GK'], + ['Gjilan', 'GL'], + ['Mitrovica', 'MI'], + ['Peja/Peć', 'PE'], + ['Pristina', 'PR'], + ['Prizren', 'PZ'], + ], ]; export const KW = [ - "Kuwait", - "KW", - [ - ["Al Aḩmadi", "AH"], - ["Al Farwānīyah", "FA"], - ["Al Jahrā’", "JA"], - ["Al ‘Āşimah", "KU"], - ["Ḩawallī", "HA"], - ["Mubārak al Kabir", "MU"], - ], + 'Kuwait', + 'KW', + [ + ['Al Aḩmadi', 'AH'], + ['Al Farwānīyah', 'FA'], + ['Al Jahrā’', 'JA'], + ['Al ‘Āşimah', 'KU'], + ['Ḩawallī', 'HA'], + ['Mubārak al Kabir', 'MU'], + ], ]; export const KG = [ - "Kyrgyzstan", - "KG", - [ - ["Batken Oblasty", "B"], - ["Bishkek Shaary", "GB"], - ["Chuy Oblasty (Bishkek)", "C"], - ["Jalal-Abad Oblasty", "J"], - ["Naryn Oblasty", "N"], - ["Osh Oblasty", "O"], - ["Talas Oblasty", "T"], - ["Ysyk-Kol Oblasty (Karakol)", "Y"], - ], + 'Kyrgyzstan', + 'KG', + [ + ['Batken Oblasty', 'B'], + ['Bishkek Shaary', 'GB'], + ['Chuy Oblasty (Bishkek)', 'C'], + ['Jalal-Abad Oblasty', 'J'], + ['Naryn Oblasty', 'N'], + ['Osh Oblasty', 'O'], + ['Talas Oblasty', 'T'], + ['Ysyk-Kol Oblasty (Karakol)', 'Y'], + ], ]; export const LA = [ - "Laos", - "LA", - [ - ["Attapu", "AT"], - ["Bokèo", "BK"], - ["Bolikhamxai", "BL"], - ["Champasak", "CH"], - ["Houaphan", "HO"], - ["Khammouan", "KH"], - ["Louang Namtha", "LM"], - ["Louangphabang", "LP"], - ["Oudômxai", "OU"], - ["Phôngsali", "PH"], - ["Salavan", "SL"], - ["Savannakhét", "SV"], - ["Vientiane", "VI"], - ["Xaignabouli", "XA"], - ["Xékong", "XE"], - ["Xaisomboun", "XS"], - ["Xiangkhouang", "XI"], - ], + 'Laos', + 'LA', + [ + ['Attapu', 'AT'], + ['Bokèo', 'BK'], + ['Bolikhamxai', 'BL'], + ['Champasak', 'CH'], + ['Houaphan', 'HO'], + ['Khammouan', 'KH'], + ['Louang Namtha', 'LM'], + ['Louangphabang', 'LP'], + ['Oudômxai', 'OU'], + ['Phôngsali', 'PH'], + ['Salavan', 'SL'], + ['Savannakhét', 'SV'], + ['Vientiane', 'VI'], + ['Xaignabouli', 'XA'], + ['Xékong', 'XE'], + ['Xaisomboun', 'XS'], + ['Xiangkhouang', 'XI'], + ], ]; export const LV = [ - "Latvia", - "LV", - [ - ["Aglona", "001"], - ["Aizkraukle", "002"], - ["Aizpute", "003"], - ["Aknīste", "004"], - ["Aloja", "005"], - ["Alsunga", "06"], - ["Alūksne", "007"], - ["Amata", "008"], - ["Ape", "009"], - ["Auce", "010"], - ["Ādaži", "011"], - ["Babīte", "012"], - ["Baldone", "013"], - ["Baltinava", "014"], - ["Balvi", "015"], - ["Bauska", "016"], - ["Beverīna", "017"], - ["Brocēni", "018"], - ["Burtnieki", "019"], - ["Carnikava", "020"], - ["Cesvaine", "021"], - ["Cēsis", "022"], - ["Cibla", "023"], - ["Dagda", "024"], - ["Daugavpils", "025"], - ["Daugavpils (City)", "DGV"], - ["Dobele", "026"], - ["Dundaga", "027"], - ["Durbe", "028"], - ["Engure", "029"], - ["Ērgļi", "030"], - ["Garkalne", "031"], - ["Grobiņa", "032"], - ["Gulbene", "033"], - ["Iecava", "034"], - ["Ikšķile", "035"], - ["Ilūkste", "036"], - ["Inčukalns", "037"], - ["Jaunjelgava", "038"], - ["Jaunpiebalga", "039"], - ["Jaunpils", "040"], - ["Jelgava", "041"], - ["Jelgava (City)", "JEL"], - ["Jēkabpils", "042"], - ["Jēkabpils (City)", "JKB"], - ["Jūrmala (City)", "JUR"], - ["Kandava", "043"], - ["Kārsava", "044"], - ["Kocēni", "045"], - ["Koknese", "046"], - ["Krāslava", "047"], - ["Krimulda", "048"], - ["Krustpils", "049"], - ["Kuldīga", "050"], - ["Ķegums", "051"], - ["Ķekava", "052"], - ["Lielvārde", "053"], - ["Liepāja", "LPX"], - ["Limbaži", "054"], - ["Līgatne", "055"], - ["Līvāni", "056"], - ["Lubāna", "057"], - ["Ludza", "058"], - ["Madona", "059"], - ["Mazsalaca", "060"], - ["Mālpils", "061"], - ["Mārupe", "062"], - ["Mērsrags", "063"], - ["Naukšēni", "064"], - ["Nereta", "065"], - ["Nīca", "066"], - ["Ogre", "067"], - ["Olaine", "068"], - ["Ozolnieki", "069"], - ["Pārgauja", "070"], - ["Pāvilosta", "071"], - ["Pļaviņas", "072"], - ["Preiļi", "073"], - ["Priekule", "074"], - ["Priekuļi", "075"], - ["Rauna", "076"], - ["Rēzekne", "077"], - ["Rēzekne (City)", "REZ"], - ["Riebiņi", "078"], - ["Rīga", "RIX"], - ["Roja", "079"], - ["Ropaži", "080"], - ["Rucava", "081"], - ["Rugāji", "082"], - ["Rundāle", "083"], - ["Rūjiena", "084"], - ["Sala", "085"], - ["Salacgrīva", "086"], - ["Salaspils", "087"], - ["Saldus", "088"], - ["Saulkrasti", "089"], - ["Sēja", "090"], - ["Sigulda", "091"], - ["Skrīveri", "092"], - ["Skrunda", "093"], - ["Smiltene", "094"], - ["Stopiņi", "095"], - ["Strenči", "096"], - ["Talsi", "097"], - ["Tērvete", "098"], - ["Tukums", "099"], - ["Vaiņode", "100"], - ["Valka", "101"], - ["Valmiera", "VMR"], - ["Varakļāni", "102"], - ["Vārkava", "103"], - ["Vecpiebalga", "104"], - ["Vecumnieki", "105"], - ["Ventspils", "106"], - ["Ventspils (City)", "VEN"], - ["Viesīte", "107"], - ["Viļaka", "108"], - ["Viļāni", "109"], - ["Zilupe", "110"], - ], + 'Latvia', + 'LV', + [ + ['Aglona', '001'], + ['Aizkraukle', '002'], + ['Aizpute', '003'], + ['Aknīste', '004'], + ['Aloja', '005'], + ['Alsunga', '06'], + ['Alūksne', '007'], + ['Amata', '008'], + ['Ape', '009'], + ['Auce', '010'], + ['Ādaži', '011'], + ['Babīte', '012'], + ['Baldone', '013'], + ['Baltinava', '014'], + ['Balvi', '015'], + ['Bauska', '016'], + ['Beverīna', '017'], + ['Brocēni', '018'], + ['Burtnieki', '019'], + ['Carnikava', '020'], + ['Cesvaine', '021'], + ['Cēsis', '022'], + ['Cibla', '023'], + ['Dagda', '024'], + ['Daugavpils', '025'], + ['Daugavpils (City)', 'DGV'], + ['Dobele', '026'], + ['Dundaga', '027'], + ['Durbe', '028'], + ['Engure', '029'], + ['Ērgļi', '030'], + ['Garkalne', '031'], + ['Grobiņa', '032'], + ['Gulbene', '033'], + ['Iecava', '034'], + ['Ikšķile', '035'], + ['Ilūkste', '036'], + ['Inčukalns', '037'], + ['Jaunjelgava', '038'], + ['Jaunpiebalga', '039'], + ['Jaunpils', '040'], + ['Jelgava', '041'], + ['Jelgava (City)', 'JEL'], + ['Jēkabpils', '042'], + ['Jēkabpils (City)', 'JKB'], + ['Jūrmala (City)', 'JUR'], + ['Kandava', '043'], + ['Kārsava', '044'], + ['Kocēni', '045'], + ['Koknese', '046'], + ['Krāslava', '047'], + ['Krimulda', '048'], + ['Krustpils', '049'], + ['Kuldīga', '050'], + ['Ķegums', '051'], + ['Ķekava', '052'], + ['Lielvārde', '053'], + ['Liepāja', 'LPX'], + ['Limbaži', '054'], + ['Līgatne', '055'], + ['Līvāni', '056'], + ['Lubāna', '057'], + ['Ludza', '058'], + ['Madona', '059'], + ['Mazsalaca', '060'], + ['Mālpils', '061'], + ['Mārupe', '062'], + ['Mērsrags', '063'], + ['Naukšēni', '064'], + ['Nereta', '065'], + ['Nīca', '066'], + ['Ogre', '067'], + ['Olaine', '068'], + ['Ozolnieki', '069'], + ['Pārgauja', '070'], + ['Pāvilosta', '071'], + ['Pļaviņas', '072'], + ['Preiļi', '073'], + ['Priekule', '074'], + ['Priekuļi', '075'], + ['Rauna', '076'], + ['Rēzekne', '077'], + ['Rēzekne (City)', 'REZ'], + ['Riebiņi', '078'], + ['Rīga', 'RIX'], + ['Roja', '079'], + ['Ropaži', '080'], + ['Rucava', '081'], + ['Rugāji', '082'], + ['Rundāle', '083'], + ['Rūjiena', '084'], + ['Sala', '085'], + ['Salacgrīva', '086'], + ['Salaspils', '087'], + ['Saldus', '088'], + ['Saulkrasti', '089'], + ['Sēja', '090'], + ['Sigulda', '091'], + ['Skrīveri', '092'], + ['Skrunda', '093'], + ['Smiltene', '094'], + ['Stopiņi', '095'], + ['Strenči', '096'], + ['Talsi', '097'], + ['Tērvete', '098'], + ['Tukums', '099'], + ['Vaiņode', '100'], + ['Valka', '101'], + ['Valmiera', 'VMR'], + ['Varakļāni', '102'], + ['Vārkava', '103'], + ['Vecpiebalga', '104'], + ['Vecumnieki', '105'], + ['Ventspils', '106'], + ['Ventspils (City)', 'VEN'], + ['Viesīte', '107'], + ['Viļaka', '108'], + ['Viļāni', '109'], + ['Zilupe', '110'], + ], ]; export const LB = [ - "Lebanon", - "LB", - [ - ["Aakkâr", "AK"], - ["Baalbelk-Hermel", "BH"], - ["Béqaa", "BI"], - ["Beyrouth", "BA"], - ["Liban-Nord", "AS"], - ["Liban-Sud", "JA"], - ["Mont-Liban", "JL"], - ["Nabatîyé", "NA"], - ], + 'Lebanon', + 'LB', + [ + ['Aakkâr', 'AK'], + ['Baalbelk-Hermel', 'BH'], + ['Béqaa', 'BI'], + ['Beyrouth', 'BA'], + ['Liban-Nord', 'AS'], + ['Liban-Sud', 'JA'], + ['Mont-Liban', 'JL'], + ['Nabatîyé', 'NA'], + ], ]; export const LS = [ - "Lesotho", - "LS", - [ - ["Berea", "D"], - ["Butha-Buthe", "B"], - ["Leribe", "C"], - ["Mafeteng", "E"], - ["Maseru", "A"], - ["Mohales Hoek", "F"], - ["Mokhotlong", "J"], - ["Qacha's Nek", "H"], - ["Quthing", "G"], - ["Thaba-Tseka", "K"], - ], + 'Lesotho', + 'LS', + [ + ['Berea', 'D'], + ['Butha-Buthe', 'B'], + ['Leribe', 'C'], + ['Mafeteng', 'E'], + ['Maseru', 'A'], + ['Mohales Hoek', 'F'], + ['Mokhotlong', 'J'], + ["Qacha's Nek", 'H'], + ['Quthing', 'G'], + ['Thaba-Tseka', 'K'], + ], ]; export const LR = [ - "Liberia", - "LR", - [ - ["Bomi", "BM"], - ["Bong", "BG"], - ["Gbarpolu", "GP"], - ["Grand Bassa", "GB"], - ["Grand Cape Mount", "CM"], - ["Grand Gedeh", "GG"], - ["Grand Kru", "GK"], - ["Lofa", "LO"], - ["Margibi", "MG"], - ["Maryland", "MY"], - ["Montserrado", "MO"], - ["Nimba", "NI"], - ["River Cess", "RI"], - ["River Geee", "RG"], - ["Sinoe", "SI"], - ], + 'Liberia', + 'LR', + [ + ['Bomi', 'BM'], + ['Bong', 'BG'], + ['Gbarpolu', 'GP'], + ['Grand Bassa', 'GB'], + ['Grand Cape Mount', 'CM'], + ['Grand Gedeh', 'GG'], + ['Grand Kru', 'GK'], + ['Lofa', 'LO'], + ['Margibi', 'MG'], + ['Maryland', 'MY'], + ['Montserrado', 'MO'], + ['Nimba', 'NI'], + ['River Cess', 'RI'], + ['River Geee', 'RG'], + ['Sinoe', 'SI'], + ], ]; export const LY = [ - "Libya", - "LY", - [ - ["Al Buţnān", "BU"], - ["Al Jabal al Akhḑar", "JA"], - ["Al Jabal al Gharbī", "JG"], - ["Al Jafārah", "JI"], - ["Al Jufrah", "JU"], - ["Al Kufrah", "FK"], - ["Al Marj", "MJ"], - ["Al Marquab", "MB"], - ["Al Wāḩāt", "WA"], - ["An Nuqaţ al Khams", "NQ"], - ["Az Zāwiyah", "ZA"], - ["Banghāzī", "BA"], - ["Darnah", "DR"], - ["Ghāt", "GH"], - ["Mişrātah", "MI"], - ["Murzuq", "MQ"], - ["Nālūt", "NL"], - ["Sabhā", "SB"], - ["Surt", "SR"], - ["Ţarābulus", "TB"], - ["Yafran", "WD"], - ["Wādī ash Shāţiʾ", "WS"], - ], + 'Libya', + 'LY', + [ + ['Al Buţnān', 'BU'], + ['Al Jabal al Akhḑar', 'JA'], + ['Al Jabal al Gharbī', 'JG'], + ['Al Jafārah', 'JI'], + ['Al Jufrah', 'JU'], + ['Al Kufrah', 'FK'], + ['Al Marj', 'MJ'], + ['Al Marquab', 'MB'], + ['Al Wāḩāt', 'WA'], + ['An Nuqaţ al Khams', 'NQ'], + ['Az Zāwiyah', 'ZA'], + ['Banghāzī', 'BA'], + ['Darnah', 'DR'], + ['Ghāt', 'GH'], + ['Mişrātah', 'MI'], + ['Murzuq', 'MQ'], + ['Nālūt', 'NL'], + ['Sabhā', 'SB'], + ['Surt', 'SR'], + ['Ţarābulus', 'TB'], + ['Yafran', 'WD'], + ['Wādī ash Shāţiʾ', 'WS'], + ], ]; export const LI = [ - "Liechtenstein", - "LI", - [ - ["Balzers", "01"], - ["Eschen", "02"], - ["Gamprin", "03"], - ["Mauren", "04"], - ["Planken", "05"], - ["Ruggell", "06"], - ["Schaan", "07"], - ["Schellenberg", "08"], - ["Triesen", "09"], - ["Triesenberg", "10"], - ["Vaduz", "11"], - ], + 'Liechtenstein', + 'LI', + [ + ['Balzers', '01'], + ['Eschen', '02'], + ['Gamprin', '03'], + ['Mauren', '04'], + ['Planken', '05'], + ['Ruggell', '06'], + ['Schaan', '07'], + ['Schellenberg', '08'], + ['Triesen', '09'], + ['Triesenberg', '10'], + ['Vaduz', '11'], + ], ]; export const LT = [ - "Lithuania", - "LT", - [ - ["Alytaus", "AL"], - ["Kauno", "KU"], - ["Klaipėdos", "KL"], - ["Marijampolės", "MR"], - ["Panevėžio", "PN"], - ["Šiaulių", "SA"], - ["Tauragės", "TA"], - ["Telšių", "TE"], - ["Utenos", "UT"], - ["Vilniaus", "VL"], - ], + 'Lithuania', + 'LT', + [ + ['Alytaus', 'AL'], + ['Kauno', 'KU'], + ['Klaipėdos', 'KL'], + ['Marijampolės', 'MR'], + ['Panevėžio', 'PN'], + ['Šiaulių', 'SA'], + ['Tauragės', 'TA'], + ['Telšių', 'TE'], + ['Utenos', 'UT'], + ['Vilniaus', 'VL'], + ], ]; export const LU = [ - "Luxembourg", - "LU", - [ - ["Capellen", "CA"], - ["Clevaux", "CL"], - ["Diekirch", "DI"], - ["Echternach", "EC"], - ["Esch-sur-Alzette", "ES"], - ["Grevenmacher", "GR"], - ["Luxembourg", "LU"], - ["Mersch", "ME"], - ["Redange", "RD"], - ["Remich", "RM"], - ["Vianden", "VD"], - ["Wiltz", "WI"], - ], -]; -export const MO = ["Macao", "MO", [["Macao", "undefined"]]]; + 'Luxembourg', + 'LU', + [ + ['Capellen', 'CA'], + ['Clevaux', 'CL'], + ['Diekirch', 'DI'], + ['Echternach', 'EC'], + ['Esch-sur-Alzette', 'ES'], + ['Grevenmacher', 'GR'], + ['Luxembourg', 'LU'], + ['Mersch', 'ME'], + ['Redange', 'RD'], + ['Remich', 'RM'], + ['Vianden', 'VD'], + ['Wiltz', 'WI'], + ], +]; +export const MO = ['Macao', 'MO', [['Macao', undefined]]]; export const MK = [ - "Macedonia, Republic of", - "MK", - [ - ["Aračinovo", "02"], - ["Berovo", "03"], - ["Bitola", "04"], - ["Bogdanci", "05"], - ["Bogovinje", "06"], - ["Bosilovo", "07"], - ["Brvenica", "08"], - ["Centar Župa", "78"], - ["Čaška", "80"], - ["Češinovo-Obleševo", "81"], - ["Čučer Sandevo", "82"], - ["Debar", "21"], - ["Debarca", "22"], - ["Delčevo", "23"], - ["Demir Hisar", "25"], - ["Demir Kapija", "24"], - ["Doran", "26"], - ["Dolneni", "27"], - ["Gevgelija", "18"], - ["Gostivar", "19"], - ["Gradsko", "20"], - ["Ilinden", "34"], - ["Jegunovce", "35"], - ["Karbinci", "37"], - ["Kavadarci", "36"], - ["Kičevo", "40"], - ["Kočani", "42"], - ["Konče", "41"], - ["Kratovo", "43"], - ["Kriva Palanka", "44"], - ["Krivogaštani", "45"], - ["Kruševo", "46"], - ["Kumanovo", "47"], - ["Lipkovo", "48"], - ["Lozovo", "49"], - ["Makedonska Kamenica", "51"], - ["Makedonski Brod", "52"], - ["Mavrovo i Rostuša", "50"], - ["Mogila", "53"], - ["Negotino", "54"], - ["Novaci", "55"], - ["Novo Selo", "56"], - ["Ohrid", "58"], - ["Pehčevo", "60"], - ["Petrovec", "59"], - ["Plasnica", "61"], - ["Prilep", "62"], - ["Probištip", "63"], - ["Radoviš", ""], - ["Rankovce", "65"], - ["Resen", "66"], - ["Rosoman", "67"], - ["Skopje", "85"], - ["Sopište", "70"], - ["Staro Nagoričane", "71"], - ["Struga", "72"], - ["Strumica", "73"], - ["Studeničani", "74"], - ["Sveti Nikole", "69"], - ["Štip", "83"], - ["Tearce", "75"], - ["Tetovo", "76"], - ["Valandovo", "10"], - ["Vasilevo", "11"], - ["Veles", "13"], - ["Vevčani", "12"], - ["Vinica", "14"], - ["Vrapčište", "16"], - ["Zelenikovo", "32"], - ["Zrnovci", "33"], - ["Želino", "30"], - ], + 'Macedonia, Republic of', + 'MK', + [ + ['Aračinovo', '02'], + ['Berovo', '03'], + ['Bitola', '04'], + ['Bogdanci', '05'], + ['Bogovinje', '06'], + ['Bosilovo', '07'], + ['Brvenica', '08'], + ['Centar Župa', '78'], + ['Čaška', '80'], + ['Češinovo-Obleševo', '81'], + ['Čučer Sandevo', '82'], + ['Debar', '21'], + ['Debarca', '22'], + ['Delčevo', '23'], + ['Demir Hisar', '25'], + ['Demir Kapija', '24'], + ['Doran', '26'], + ['Dolneni', '27'], + ['Gevgelija', '18'], + ['Gostivar', '19'], + ['Gradsko', '20'], + ['Ilinden', '34'], + ['Jegunovce', '35'], + ['Karbinci', '37'], + ['Kavadarci', '36'], + ['Kičevo', '40'], + ['Kočani', '42'], + ['Konče', '41'], + ['Kratovo', '43'], + ['Kriva Palanka', '44'], + ['Krivogaštani', '45'], + ['Kruševo', '46'], + ['Kumanovo', '47'], + ['Lipkovo', '48'], + ['Lozovo', '49'], + ['Makedonska Kamenica', '51'], + ['Makedonski Brod', '52'], + ['Mavrovo i Rostuša', '50'], + ['Mogila', '53'], + ['Negotino', '54'], + ['Novaci', '55'], + ['Novo Selo', '56'], + ['Ohrid', '58'], + ['Pehčevo', '60'], + ['Petrovec', '59'], + ['Plasnica', '61'], + ['Prilep', '62'], + ['Probištip', '63'], + ['Radoviš', '64'], + ['Rankovce', '65'], + ['Resen', '66'], + ['Rosoman', '67'], + ['Skopje', '85'], + ['Sopište', '70'], + ['Staro Nagoričane', '71'], + ['Struga', '72'], + ['Strumica', '73'], + ['Studeničani', '74'], + ['Sveti Nikole', '69'], + ['Štip', '83'], + ['Tearce', '75'], + ['Tetovo', '76'], + ['Valandovo', '10'], + ['Vasilevo', '11'], + ['Veles', '13'], + ['Vevčani', '12'], + ['Vinica', '14'], + ['Vrapčište', '16'], + ['Zelenikovo', '32'], + ['Zrnovci', '33'], + ['Želino', '30'], + ], ]; export const MG = [ - "Madagascar", - "MG", - [ - ["Antananarivo", "T"], - ["Antsiranana", "D"], - ["Fianarantsoa", "F"], - ["Mahajanga", "M"], - ["Toamasina", "A"], - ["Toliara", "U"], - ], + 'Madagascar', + 'MG', + [ + ['Antananarivo', 'T'], + ['Antsiranana', 'D'], + ['Fianarantsoa', 'F'], + ['Mahajanga', 'M'], + ['Toamasina', 'A'], + ['Toliara', 'U'], + ], ]; export const MW = [ - "Malawi", - "MW", - [ - ["Balaka", "BA"], - ["Blantyre", "BL"], - ["Chikwawa", "CK"], - ["Chiradzulu", "CR"], - ["Chitipa", "CT"], - ["Dedza", "DE"], - ["Dowa", "DO"], - ["Karonga", "KR"], - ["Kasungu", "KS"], - ["Likoma", "LK"], - ["Lilongwe", "LI"], - ["Machinga", "MH"], - ["Mangochi", "MG"], - ["Mchinji", "MC"], - ["Mulanje", "MU"], - ["Mwanza", "MW"], - ["Mzimba", "MZ"], - ["Nkhata Bay", "NE"], - ["Nkhotakota", "NB"], - ["Nsanje", "NS"], - ["Ntcheu", "NU"], - ["Ntchisi", "NI"], - ["Phalombe", "PH"], - ["Rumphi", "RU"], - ["Salima", "SA"], - ["Thyolo", "TH"], - ["Zomba", "ZO"], - ], + 'Malawi', + 'MW', + [ + ['Balaka', 'BA'], + ['Blantyre', 'BL'], + ['Chikwawa', 'CK'], + ['Chiradzulu', 'CR'], + ['Chitipa', 'CT'], + ['Dedza', 'DE'], + ['Dowa', 'DO'], + ['Karonga', 'KR'], + ['Kasungu', 'KS'], + ['Likoma', 'LK'], + ['Lilongwe', 'LI'], + ['Machinga', 'MH'], + ['Mangochi', 'MG'], + ['Mchinji', 'MC'], + ['Mulanje', 'MU'], + ['Mwanza', 'MW'], + ['Mzimba', 'MZ'], + ['Nkhata Bay', 'NE'], + ['Nkhotakota', 'NB'], + ['Nsanje', 'NS'], + ['Ntcheu', 'NU'], + ['Ntchisi', 'NI'], + ['Phalombe', 'PH'], + ['Rumphi', 'RU'], + ['Salima', 'SA'], + ['Thyolo', 'TH'], + ['Zomba', 'ZO'], + ], ]; export const MY = [ - "Malaysia", - "MY", - [ - ["Johor", "01"], - ["Kedah", "02"], - ["Kelantan", "03"], - ["Melaka", "04"], - ["Negeri Sembilan", "05"], - ["Pahang", "06"], - ["Perak", "08"], - ["Perlis", "09"], - ["Pulau Pinang", "07"], - ["Sabah", "12"], - ["Sarawak", "13"], - ["Selangor", "10"], - ["Terengganu", "11"], - ["Wilayah Persekutuan (Kuala Lumpur)", "14"], - ["Wilayah Persekutuan (Labuan)", "15"], - ["Wilayah Persekutuan (Putrajaya)", "16"], - ], + 'Malaysia', + 'MY', + [ + ['Johor', '01'], + ['Kedah', '02'], + ['Kelantan', '03'], + ['Melaka', '04'], + ['Negeri Sembilan', '05'], + ['Pahang', '06'], + ['Perak', '08'], + ['Perlis', '09'], + ['Pulau Pinang', '07'], + ['Sabah', '12'], + ['Sarawak', '13'], + ['Selangor', '10'], + ['Terengganu', '11'], + ['Wilayah Persekutuan (Kuala Lumpur)', '14'], + ['Wilayah Persekutuan (Labuan)', '15'], + ['Wilayah Persekutuan (Putrajaya)', '16'], + ], ]; export const MV = [ - "Maldives", - "MV", - [ - ["Alifu Alifu", "02"], - ["Alifu Dhaalu", "00"], - ["Baa", "20"], - ["Dhaalu", "17"], - ["Faafu", "14"], - ["Gaafu Alifu", "27"], - ["Gaafu Dhaalu", "28"], - ["Gnaviyani", "29"], - ["Haa Alifu", "07"], - ["Haa Dhaalu", "23"], - ["Kaafu", "26"], - ["Laamu", "05"], - ["Lhaviyani", "03"], - ["Malé", "MLE"], - ["Meemu", "12"], - ["Noonu", "25"], - ["Raa", "13"], - ["Seenu", "01"], - ["Shaviyani", "24"], - ["Thaa", "08"], - ["Vaavu", "04"], - ], + 'Maldives', + 'MV', + [ + ['Alifu Alifu', '02'], + ['Alifu Dhaalu', '00'], + ['Baa', '20'], + ['Dhaalu', '17'], + ['Faafu', '14'], + ['Gaafu Alifu', '27'], + ['Gaafu Dhaalu', '28'], + ['Gnaviyani', '29'], + ['Haa Alifu', '07'], + ['Haa Dhaalu', '23'], + ['Kaafu', '26'], + ['Laamu', '05'], + ['Lhaviyani', '03'], + ['Malé', 'MLE'], + ['Meemu', '12'], + ['Noonu', '25'], + ['Raa', '13'], + ['Seenu', '01'], + ['Shaviyani', '24'], + ['Thaa', '08'], + ['Vaavu', '04'], + ], ]; export const ML = [ - "Mali", - "ML", - [ - ["Bamako", "BKO"], - ["Gao", "7"], - ["Kayes", "1"], - ["Kidal", "8"], - ["Koulikoro", "2"], - ["Mopti", "5"], - ["Segou", "4"], - ["Sikasso", "3"], - ["Tombouctou", "6"], - ["Taoudénit", "9"], - ["Ménaka", "10"], - ], + 'Mali', + 'ML', + [ + ['Bamako', 'BKO'], + ['Gao', '7'], + ['Kayes', '1'], + ['Kidal', '8'], + ['Koulikoro', '2'], + ['Mopti', '5'], + ['Segou', '4'], + ['Sikasso', '3'], + ['Tombouctou', '6'], + ['Taoudénit', '9'], + ['Ménaka', '10'], + ], ]; export const MT = [ - "Malta", - "MT", - [ - ["Attard", "01"], - ["Balzan", "02"], - ["Birgu", "03"], - ["Birkirkara", "04"], - ["Birżebbuġa", "05"], - ["Bormla", "06"], - ["Dingli", "07"], - ["Fgura", "08"], - ["Floriana", "09"], - ["Fontana", "10"], - ["Guda", "11"], - ["Gżira", "12"], - ["Għajnsielem", "13"], - ["Għarb", "14"], - ["Għargħur", "15"], - ["Għasri", "16"], - ["Għaxaq", "17"], - ["Ħamrun", "18"], - ["Iklin", "19"], - ["Isla", "20"], - ["Kalkara", "21"], - ["Kerċem", "22"], - ["Kirkop", "23"], - ["Lija", "24"], - ["Luqa", "25"], - ["Marsa", "26"], - ["Marsaskala", "27"], - ["Marsaxlokk", "28"], - ["Mdina", "29"], - ["Mellieħa", "30"], - ["Mġarr", "31"], - ["Mosta", "32"], - ["Mqabba", "33"], - ["Msida", "34"], - ["Mtarfa", "35"], - ["Munxar", "36"], - ["Nadur", "37"], - ["Naxxar", "38"], - ["Paola", "39"], - ["Pembroke", "40"], - ["Pietà", "41"], - ["Qala", "42"], - ["Qormi", "43"], - ["Qrendi", "44"], - ["Rabat Għawdex", "45"], - ["Rabat Malta", "46"], - ["Safi", "47"], - ["San Ġiljan", "48"], - ["San Ġwann", "49"], - ["San Lawrenz", "50"], - ["San Pawl il-Baħar", "51"], - ["Sannat", "52"], - ["Santa Luċija", "53"], - ["Santa Venera", "54"], - ["Siġġiewi", "55"], - ["Sliema", "56"], - ["Swieqi", "57"], - ["Tai Xbiex", "58"], - ["Tarzien", "59"], - ["Valletta", "60"], - ["Xagħra", "61"], - ["Xewkija", "62"], - ["Xgħajra", "63"], - ["Żabbar", "64"], - ["Żebbuġ Għawde", "65"], - ["Żebbuġ Malta", "66"], - ["Żejtun", "67"], - ["Żurrieq", "68"], - ], + 'Malta', + 'MT', + [ + ['Attard', '01'], + ['Balzan', '02'], + ['Birgu', '03'], + ['Birkirkara', '04'], + ['Birżebbuġa', '05'], + ['Bormla', '06'], + ['Dingli', '07'], + ['Fgura', '08'], + ['Floriana', '09'], + ['Fontana', '10'], + ['Guda', '11'], + ['Gżira', '12'], + ['Għajnsielem', '13'], + ['Għarb', '14'], + ['Għargħur', '15'], + ['Għasri', '16'], + ['Għaxaq', '17'], + ['Ħamrun', '18'], + ['Iklin', '19'], + ['Isla', '20'], + ['Kalkara', '21'], + ['Kerċem', '22'], + ['Kirkop', '23'], + ['Lija', '24'], + ['Luqa', '25'], + ['Marsa', '26'], + ['Marsaskala', '27'], + ['Marsaxlokk', '28'], + ['Mdina', '29'], + ['Mellieħa', '30'], + ['Mġarr', '31'], + ['Mosta', '32'], + ['Mqabba', '33'], + ['Msida', '34'], + ['Mtarfa', '35'], + ['Munxar', '36'], + ['Nadur', '37'], + ['Naxxar', '38'], + ['Paola', '39'], + ['Pembroke', '40'], + ['Pietà', '41'], + ['Qala', '42'], + ['Qormi', '43'], + ['Qrendi', '44'], + ['Rabat Għawdex', '45'], + ['Rabat Malta', '46'], + ['Safi', '47'], + ['San Ġiljan', '48'], + ['San Ġwann', '49'], + ['San Lawrenz', '50'], + ['San Pawl il-Baħar', '51'], + ['Sannat', '52'], + ['Santa Luċija', '53'], + ['Santa Venera', '54'], + ['Siġġiewi', '55'], + ['Sliema', '56'], + ['Swieqi', '57'], + ['Tai Xbiex', '58'], + ['Tarzien', '59'], + ['Valletta', '60'], + ['Xagħra', '61'], + ['Xewkija', '62'], + ['Xgħajra', '63'], + ['Żabbar', '64'], + ['Żebbuġ Għawde', '65'], + ['Żebbuġ Malta', '66'], + ['Żejtun', '67'], + ['Żurrieq', '68'], + ], ]; export const MH = [ - "Marshall Islands", - "MH", - [ - ["Ailinglaplap", "ALL"], - ["Ailuk", "ALK"], - ["Arno", "ARN"], - ["Aur", "AUR"], - ["Bikini and Kili", "KIL"], - ["Ebon", "EBO"], - ["Jabat", "JAB"], - ["Jaluit", "JAL"], - ["Kwajalein", "KWA"], - ["Lae", "LAE"], - ["Lib", "LIB"], - ["Likiep", "LIK"], - ["Majuro", "MAJ"], - ["Maloelap", "MAL"], - ["Mejit", "MEJ"], - ["Namdrik", "NMK"], - ["Namu", "NMU"], - ["Rongelap", "RON"], - ["Ujae", "UJA"], - ["Utrik", "UTI"], - ["Wotho", "WTH"], - ["Wotje", "WTJ"], - ], -]; -export const MQ = ["Martinique", "MQ", [["Martinique", "undefined"]]]; + 'Marshall Islands', + 'MH', + [ + ['Ailinglaplap', 'ALL'], + ['Ailuk', 'ALK'], + ['Arno', 'ARN'], + ['Aur', 'AUR'], + ['Bikini and Kili', 'KIL'], + ['Ebon', 'EBO'], + ['Jabat', 'JAB'], + ['Jaluit', 'JAL'], + ['Kwajalein', 'KWA'], + ['Lae', 'LAE'], + ['Lib', 'LIB'], + ['Likiep', 'LIK'], + ['Majuro', 'MAJ'], + ['Maloelap', 'MAL'], + ['Mejit', 'MEJ'], + ['Namdrik', 'NMK'], + ['Namu', 'NMU'], + ['Rongelap', 'RON'], + ['Ujae', 'UJA'], + ['Utrik', 'UTI'], + ['Wotho', 'WTH'], + ['Wotje', 'WTJ'], + ], +]; +export const MQ = ['Martinique', 'MQ', [['Martinique', undefined]]]; export const MR = [ - "Mauritania", - "MR", - [ - ["Adrar", "07"], - ["Assaba", "03"], - ["Brakna", "05"], - ["Dakhlet Nouadhibou", "08"], - ["Gorgol", "04"], - ["Guidimaka", "10"], - ["Hodh Ech Chargui", "01"], - ["Hodh El Gharbi", "02"], - ["Inchiri", "12"], - ["Nouakchott Nord", "14"], - ["Nouakchott Ouest", "13"], - ["Nouakchott Sud", "15"], - ["Tagant", "09"], - ["Tiris Zemmour", "11"], - ["Trarza", "06"], - ], + 'Mauritania', + 'MR', + [ + ['Adrar', '07'], + ['Assaba', '03'], + ['Brakna', '05'], + ['Dakhlet Nouadhibou', '08'], + ['Gorgol', '04'], + ['Guidimaka', '10'], + ['Hodh Ech Chargui', '01'], + ['Hodh El Gharbi', '02'], + ['Inchiri', '12'], + ['Nouakchott Nord', '14'], + ['Nouakchott Ouest', '13'], + ['Nouakchott Sud', '15'], + ['Tagant', '09'], + ['Tiris Zemmour', '11'], + ['Trarza', '06'], + ], ]; export const MU = [ - "Mauritius", - "MU", - [ - ["Agalega Islands", "AG"], - ["Beau Bassin-Rose Hill", "BR"], - ["Black River", "BL"], - ["Cargados Carajos Shoals", "CC"], - ["Curepipe", "CU"], - ["Flacq", "FL"], - ["Grand Port", "GP"], - ["Moka", "MO"], - ["Pamplemousses", "PA"], - ["Plaines Wilhems", "PW"], - ["Port Louis (City)", "PU"], - ["Port Louis", "PL"], - ["Riviere du Rempart", "RR"], - ["Rodrigues Island", "RO"], - ["Savanne", "SA"], - ["Vacoas-Phoenix", "CP"], - ], + 'Mauritius', + 'MU', + [ + ['Agalega Islands', 'AG'], + ['Beau Bassin-Rose Hill', 'BR'], + ['Black River', 'BL'], + ['Cargados Carajos Shoals', 'CC'], + ['Curepipe', 'CU'], + ['Flacq', 'FL'], + ['Grand Port', 'GP'], + ['Moka', 'MO'], + ['Pamplemousses', 'PA'], + ['Plaines Wilhems', 'PW'], + ['Port Louis (City)', 'PU'], + ['Port Louis', 'PL'], + ['Riviere du Rempart', 'RR'], + ['Rodrigues Island', 'RO'], + ['Savanne', 'SA'], + ['Vacoas-Phoenix', 'CP'], + ], ]; export const YT = [ - "Mayotte", - "YT", - [ - ["Dzaoudzi", "01"], - ["Pamandzi", "02"], - ["Mamoudzou", "03"], - ["Dembeni", "04"], - ["Bandrélé", "05"], - ["Kani-Kéli", "06"], - ["Bouéni", "07"], - ["Chirongui", "08"], - ["Sada", "09"], - ["Ouangani", "10"], - ["Chiconi", "11"], - ["Tsingoni", "12"], - ["M'Tsangamouji", "13"], - ["Acoua", "14"], - ["Mtsamboro", "15"], - ["Bandraboua", "16"], - ["Koungou", "17"], - ], + 'Mayotte', + 'YT', + [ + ['Dzaoudzi', '01'], + ['Pamandzi', '02'], + ['Mamoudzou', '03'], + ['Dembeni', '04'], + ['Bandrélé', '05'], + ['Kani-Kéli', '06'], + ['Bouéni', '07'], + ['Chirongui', '08'], + ['Sada', '09'], + ['Ouangani', '10'], + ['Chiconi', '11'], + ['Tsingoni', '12'], + ["M'Tsangamouji", '13'], + ['Acoua', '14'], + ['Mtsamboro', '15'], + ['Bandraboua', '16'], + ['Koungou', '17'], + ], ]; export const MX = [ - "Mexico", - "MX", - [ - ["Aguascalientes", "AGU"], - ["Baja California", "BCN"], - ["Baja California Sur", "BCS"], - ["Campeche", "CAM"], - ["Ciudad de México", "CMX"], - ["Chiapas", "CHP"], - ["Chihuahua", "CHH"], - ["Coahuila de Zaragoza", "COA"], - ["Colima", "COL"], - ["Durango", "DUR"], - ["Estado de México", "MEX"], - ["Guanajuato", "GUA"], - ["Guerrero", "GRO"], - ["Hidalgo", "HID"], - ["Jalisco", "JAL"], - ["Michoacán de Ocampo", "MIC"], - ["Morelos", "MOR"], - ["Nayarit", "NAY"], - ["Nuevo León", "NLE"], - ["Oaxaca", "OAX"], - ["Puebla", "PUE"], - ["Querétaro de Arteaga", "QUE"], - ["Quintana Roo", "ROO"], - ["San Luis Potosí", "SLP"], - ["Sinaloa", "SIN"], - ["Sonora", "SON"], - ["Tabasco", "TAB"], - ["Tamaulipas", "TAM"], - ["Tlaxcala", "TLA"], - ["Veracruz", "VER"], - ["Yucatán", "YUC"], - ["Zacatecas", "ZAC"], - ], + 'Mexico', + 'MX', + [ + ['Aguascalientes', 'AGU'], + ['Baja California', 'BCN'], + ['Baja California Sur', 'BCS'], + ['Campeche', 'CAM'], + ['Ciudad de México', 'CMX'], + ['Chiapas', 'CHP'], + ['Chihuahua', 'CHH'], + ['Coahuila de Zaragoza', 'COA'], + ['Colima', 'COL'], + ['Durango', 'DUR'], + ['Estado de México', 'MEX'], + ['Guanajuato', 'GUA'], + ['Guerrero', 'GRO'], + ['Hidalgo', 'HID'], + ['Jalisco', 'JAL'], + ['Michoacán de Ocampo', 'MIC'], + ['Morelos', 'MOR'], + ['Nayarit', 'NAY'], + ['Nuevo León', 'NLE'], + ['Oaxaca', 'OAX'], + ['Puebla', 'PUE'], + ['Querétaro de Arteaga', 'QUE'], + ['Quintana Roo', 'ROO'], + ['San Luis Potosí', 'SLP'], + ['Sinaloa', 'SIN'], + ['Sonora', 'SON'], + ['Tabasco', 'TAB'], + ['Tamaulipas', 'TAM'], + ['Tlaxcala', 'TLA'], + ['Veracruz', 'VER'], + ['Yucatán', 'YUC'], + ['Zacatecas', 'ZAC'], + ], ]; export const FM = [ - "Micronesia, Federated States of", - "FM", - [ - ["Chuuk (Truk)", "TRK"], - ["Kosrae", "KSA"], - ["Pohnpei", "PNI"], - ["Yap", "YAP"], - ], + 'Micronesia, Federated States of', + 'FM', + [ + ['Chuuk (Truk)', 'TRK'], + ['Kosrae', 'KSA'], + ['Pohnpei', 'PNI'], + ['Yap', 'YAP'], + ], ]; export const MD = [ - "Moldova", - "MD", - [ - ["Anenii Noi", "AN"], - ["Basarabeasca", "BS"], - ["Bălți", "BA"], - ["Bender", "BD"], - ["Briceni", "BR"], - ["Cahul", "CA"], - ["Cantemir", "CT"], - ["Călărași", "CL"], - ["Căușeni", "CS"], - ["Chișinău", "CU"], - ["Cimișlia", "CM"], - ["Criuleni", "CR"], - ["Dondușeni", "DO"], - ["Drochia", "DR"], - ["Dubăsari", "DU"], - ["Edineț", "ED"], - ["Fălești", "FA"], - ["Florești", "FL"], - ["Găgăuzia", "GA"], - ["Glodeni", "GL"], - ["Hîncești", "HI"], - ["Ialoveni", "IA"], - ["Leova", "LE"], - ["Nisporeni", "NI"], - ["Ocnița", "OC"], - ["Orhei", "OR"], - ["Rezina", "RE"], - ["Rîșcani", "RI"], - ["Sîngerei", "SI"], - ["Soroca", "SO"], - ["Stânga Nistrului", "SN"], - ["Strășeni", "ST"], - ["Șoldănești", "SD"], - ["Ștefan Vodă", "SV"], - ["Taraclia", "TA"], - ["Telenești", "TE"], - ["Ungheni", "UN"], - ], + 'Moldova', + 'MD', + [ + ['Anenii Noi', 'AN'], + ['Basarabeasca', 'BS'], + ['Bălți', 'BA'], + ['Bender', 'BD'], + ['Briceni', 'BR'], + ['Cahul', 'CA'], + ['Cantemir', 'CT'], + ['Călărași', 'CL'], + ['Căușeni', 'CS'], + ['Chișinău', 'CU'], + ['Cimișlia', 'CM'], + ['Criuleni', 'CR'], + ['Dondușeni', 'DO'], + ['Drochia', 'DR'], + ['Dubăsari', 'DU'], + ['Edineț', 'ED'], + ['Fălești', 'FA'], + ['Florești', 'FL'], + ['Găgăuzia', 'GA'], + ['Glodeni', 'GL'], + ['Hîncești', 'HI'], + ['Ialoveni', 'IA'], + ['Leova', 'LE'], + ['Nisporeni', 'NI'], + ['Ocnița', 'OC'], + ['Orhei', 'OR'], + ['Rezina', 'RE'], + ['Rîșcani', 'RI'], + ['Sîngerei', 'SI'], + ['Soroca', 'SO'], + ['Stânga Nistrului', 'SN'], + ['Strășeni', 'ST'], + ['Șoldănești', 'SD'], + ['Ștefan Vodă', 'SV'], + ['Taraclia', 'TA'], + ['Telenești', 'TE'], + ['Ungheni', 'UN'], + ], ]; export const MC = [ - "Monaco", - "MC", - [ - ["Colle", "CL"], - ["Condamine", "CO"], - ["Fontvieille", "FO"], - ["Gare", "GA"], - ["Jardin Exotique", "JE"], - ["Larvotto", "LA"], - ["Malbousquet", "MA"], - ["Monaco-Ville", "MO"], - ["Moneghetti", "MG"], - ["Monte-Carlo", "MC"], - ["Moulins", "MU"], - ["Port-Hercule", "PH"], - ["Saint-Roman", "SR"], - ["Sainte-Dévote", "SD"], - ["Source", "SO"], - ["Spélugues", "SP"], - ["Vallon de la Rousse", "VR"], - ], + 'Monaco', + 'MC', + [ + ['Colle', 'CL'], + ['Condamine', 'CO'], + ['Fontvieille', 'FO'], + ['Gare', 'GA'], + ['Jardin Exotique', 'JE'], + ['Larvotto', 'LA'], + ['Malbousquet', 'MA'], + ['Monaco-Ville', 'MO'], + ['Moneghetti', 'MG'], + ['Monte-Carlo', 'MC'], + ['Moulins', 'MU'], + ['Port-Hercule', 'PH'], + ['Saint-Roman', 'SR'], + ['Sainte-Dévote', 'SD'], + ['Source', 'SO'], + ['Spélugues', 'SP'], + ['Vallon de la Rousse', 'VR'], + ], ]; export const MN = [ - "Mongolia", - "MN", - [ - ["Arhangay", "073"], - ["Bayan-Olgiy", "071"], - ["Bayanhongor", "069"], - ["Bulgan", "067"], - ["Darhan", "037"], - ["Dornod", "061"], - ["Dornogovi", "063"], - ["Dundgovi", "059"], - ["Dzavhan", "057"], - ["Govi-Altay", "065"], - ["Govi-Sumber", "064"], - ["Hovd", "043"], - ["Hovsgol", "041"], - ["Omnogovi", "053"], - ["Ovorhangay", "055"], - ["Selenge", "049"], - ["Suhbaatar", "051"], - ["Tov", "047"], - ["Ulaanbaatar", "1"], - ["Uvs", "046"], - ["Erdenet", "074"], - ], + 'Mongolia', + 'MN', + [ + ['Arhangay', '073'], + ['Bayan-Olgiy', '071'], + ['Bayanhongor', '069'], + ['Bulgan', '067'], + ['Darhan', '037'], + ['Dornod', '061'], + ['Dornogovi', '063'], + ['Dundgovi', '059'], + ['Dzavhan', '057'], + ['Govi-Altay', '065'], + ['Govi-Sumber', '064'], + ['Hovd', '043'], + ['Hovsgol', '041'], + ['Omnogovi', '053'], + ['Ovorhangay', '055'], + ['Selenge', '049'], + ['Suhbaatar', '051'], + ['Tov', '047'], + ['Ulaanbaatar', '1'], + ['Uvs', '046'], + ['Erdenet', '074'], + ], ]; export const ME = [ - "Montenegro", - "ME", - [ - ["Andrijevica", "01"], - ["Bar", "02"], - ["Berane", "03"], - ["Bijelo Polje", "04"], - ["Budva", "05"], - ["Cetinje", "06"], - ["Danilovgrad", "07"], - ["Gusinje", "22"], - ["Herceg Novi", "08"], - ["Kolašin", "09"], - ["Kotor", "10"], - ["Mojkovac", "11"], - ["Nikšić", "12"], - ["Petnica", "23"], - ["Plav", "13"], - ["Plužine", "14"], - ["Pljevlja", "15"], - ["Podgorica", "16"], - ["Rožaje", "17"], - ["Šavnik", "18"], - ["Tivat", "19"], - ["Ulcinj", "20"], - ["Žabljak", "21"], - ], + 'Montenegro', + 'ME', + [ + ['Andrijevica', '01'], + ['Bar', '02'], + ['Berane', '03'], + ['Bijelo Polje', '04'], + ['Budva', '05'], + ['Cetinje', '06'], + ['Danilovgrad', '07'], + ['Gusinje', '22'], + ['Herceg Novi', '08'], + ['Kolašin', '09'], + ['Kotor', '10'], + ['Mojkovac', '11'], + ['Nikšić', '12'], + ['Petnica', '23'], + ['Plav', '13'], + ['Plužine', '14'], + ['Pljevlja', '15'], + ['Podgorica', '16'], + ['Rožaje', '17'], + ['Šavnik', '18'], + ['Tivat', '19'], + ['Ulcinj', '20'], + ['Žabljak', '21'], + ], ]; export const MS = [ - "Montserrat", - "MS", - [ - ["Saint Anthony", "undefined"], - ["Saint Georges", "undefined"], - ["Saint Peter's", "undefined"], - ], + 'Montserrat', + 'MS', + [ + ['Saint Anthony', undefined], + ['Saint Georges', undefined], + ["Saint Peter's", undefined], + ], ]; export const MA = [ - "Morocco", - "MA", - [ - ["Tanger-Tétouan-Al Hoceïma", "MA-01"], - ["L'Oriental", "MA-02"], - ["Fès-Meknès", "MA-03"], - ["Rabat-Salé-Kénitra", "MA-04"], - ["Béni Mellal-Khénifra", "MA-05"], - ["Casablanca-Settat", "MA-06"], - ["Marrakech-Safi", "MA-07"], - ["Drâa-Tafilalet", "MA-08"], - ["Souss-Massa", "MA-09"], - ["Guelmim-Oued Noun", "MA-10"], - ["Laâyoune-Sakia El Hamra", "MA-11"], - ["Dakhla-Oued Ed-Dahab", "MA-12"], - ], + 'Morocco', + 'MA', + [ + ['Tanger-Tétouan-Al Hoceïma', 'MA-01'], + ["L'Oriental", 'MA-02'], + ['Fès-Meknès', 'MA-03'], + ['Rabat-Salé-Kénitra', 'MA-04'], + ['Béni Mellal-Khénifra', 'MA-05'], + ['Casablanca-Settat', 'MA-06'], + ['Marrakech-Safi', 'MA-07'], + ['Drâa-Tafilalet', 'MA-08'], + ['Souss-Massa', 'MA-09'], + ['Guelmim-Oued Noun', 'MA-10'], + ['Laâyoune-Sakia El Hamra', 'MA-11'], + ['Dakhla-Oued Ed-Dahab', 'MA-12'], + ], ]; export const MZ = [ - "Mozambique", - "MZ", - [ - ["Cabo Delgado", "P"], - ["Gaza", "G"], - ["Inhambane", "I"], - ["Manica", "B"], - ["Maputo", "L"], - ["Maputo (City)", "MPM"], - ["Nampula", "N"], - ["Niassa", "A"], - ["Sofala", "S"], - ["Tete", "T"], - ["Zambezia", "Q"], - ], + 'Mozambique', + 'MZ', + [ + ['Cabo Delgado', 'P'], + ['Gaza', 'G'], + ['Inhambane', 'I'], + ['Manica', 'B'], + ['Maputo', 'L'], + ['Maputo (City)', 'MPM'], + ['Nampula', 'N'], + ['Niassa', 'A'], + ['Sofala', 'S'], + ['Tete', 'T'], + ['Zambezia', 'Q'], + ], ]; export const MM = [ - "Myanmar", - "MM", - [ - ["Ayeyarwady", "07"], - ["Bago", "02"], - ["Chin", "14"], - ["Kachin", "11"], - ["Kayah", "12"], - ["Kayin", "13"], - ["Magway", "03"], - ["Mandalay", "04"], - ["Mon", "15"], - ["Nay Pyi Taw", "18"], - ["Rakhine", "16"], - ["Sagaing", "01"], - ["Shan", "17"], - ["Tanintharyi", "05"], - ["Yangon", "06"], - ], + 'Myanmar', + 'MM', + [ + ['Ayeyarwady', '07'], + ['Bago', '02'], + ['Chin', '14'], + ['Kachin', '11'], + ['Kayah', '12'], + ['Kayin', '13'], + ['Magway', '03'], + ['Mandalay', '04'], + ['Mon', '15'], + ['Nay Pyi Taw', '18'], + ['Rakhine', '16'], + ['Sagaing', '01'], + ['Shan', '17'], + ['Tanintharyi', '05'], + ['Yangon', '06'], + ], ]; export const NA = [ - "Namibia", - "NA", - [ - ["Erongo", "ER"], - ["Hardap", "HA"], - ["Kavango East", "KE"], - ["Kavango West", "KW"], - ["Karas", "KA"], - ["Khomas", "KH"], - ["Kunene", "KU"], - ["Ohangwena", "OW"], - ["Omaheke", "OH"], - ["Omusati", "OS"], - ["Oshana", "ON"], - ["Oshikoto", "OT"], - ["Otjozondjupa", "OD"], - ["Zambezi", "CA"], - ], + 'Namibia', + 'NA', + [ + ['Erongo', 'ER'], + ['Hardap', 'HA'], + ['Kavango East', 'KE'], + ['Kavango West', 'KW'], + ['Karas', 'KA'], + ['Khomas', 'KH'], + ['Kunene', 'KU'], + ['Ohangwena', 'OW'], + ['Omaheke', 'OH'], + ['Omusati', 'OS'], + ['Oshana', 'ON'], + ['Oshikoto', 'OT'], + ['Otjozondjupa', 'OD'], + ['Zambezi', 'CA'], + ], ]; export const NR = [ - "Nauru", - "NR", - [ - ["Aiwo", "01"], - ["Anabar", "02"], - ["Anetan", "03"], - ["Anibare", "04"], - ["Baiti", "05"], - ["Boe", "06"], - ["Buada", "07"], - ["Denigomodu", "08"], - ["Ewa", "09"], - ["Ijuw", "10"], - ["Meneng", "11"], - ["Nibok", "12"], - ["Uaboe", "13"], - ["Yaren", "14"], - ], + 'Nauru', + 'NR', + [ + ['Aiwo', '01'], + ['Anabar', '02'], + ['Anetan', '03'], + ['Anibare', '04'], + ['Baiti', '05'], + ['Boe', '06'], + ['Buada', '07'], + ['Denigomodu', '08'], + ['Ewa', '09'], + ['Ijuw', '10'], + ['Meneng', '11'], + ['Nibok', '12'], + ['Uaboe', '13'], + ['Yaren', '14'], + ], ]; export const NP = [ - "Nepal", - "NP", - [ - ["Province No. 1", "1"], - ["Madhesh Province", "2"], - ["Bagmati Province", "3"], - ["Gandaki Province", "4"], - ["Lumbini Province", "5"], - ["Karnali Province", "6"], - ["Sudurpashchim Province", "7"], - ], + 'Nepal', + 'NP', + [ + ['Province No. 1', '1'], + ['Madhesh Province', '2'], + ['Bagmati Province', '3'], + ['Gandaki Province', '4'], + ['Lumbini Province', '5'], + ['Karnali Province', '6'], + ['Sudurpashchim Province', '7'], + ], ]; export const NL = [ - "Netherlands", - "NL", - [ - ["Drenthe", "DR"], - ["Flevoland", "FL"], - ["Friesland", "FR"], - ["Gelderland", "GE"], - ["Groningen", "GR"], - ["Limburg", "LI"], - ["Noord-Brabant", "NB"], - ["Noord-Holland", "NH"], - ["Overijssel", "OV"], - ["Utrecht", "UT"], - ["Zeeland", "ZE"], - ["Zuid-Holland", "ZH"], - ], + 'Netherlands', + 'NL', + [ + ['Drenthe', 'DR'], + ['Flevoland', 'FL'], + ['Friesland', 'FR'], + ['Gelderland', 'GE'], + ['Groningen', 'GR'], + ['Limburg', 'LI'], + ['Noord-Brabant', 'NB'], + ['Noord-Holland', 'NH'], + ['Overijssel', 'OV'], + ['Utrecht', 'UT'], + ['Zeeland', 'ZE'], + ['Zuid-Holland', 'ZH'], + ], ]; export const NC = [ - "New Caledonia", - "NC", - [ - ["Iles Loyaute", "undefined"], - ["Nord", "undefined"], - ["Sud", "undefined"], - ], + 'New Caledonia', + 'NC', + [ + ['Iles Loyaute', undefined], + ['Nord', undefined], + ['Sud', undefined], + ], ]; export const NZ = [ - "New Zealand", - "NZ", - [ - ["Auckland", "AUK"], - ["Bay of Plenty", "BOP"], - ["Canterbury", "CAN"], - ["Gisborne", "GIS"], - ["Hawke's Bay", "HKB"], - ["Marlborough", "MBH"], - ["Manawatu-Wanganui", "MWT"], - ["Northland", "NTL"], - ["Nelson", "NSN"], - ["Otago", "OTA"], - ["Southland", "STL"], - ["Taranaki", "TKI"], - ["Tasman", "TAS"], - ["Waikato", "WKO"], - ["Wellington", "WGN"], - ["West Coast", "WTC"], - ["Chatham Islands Territory", "CIT"], - ], + 'New Zealand', + 'NZ', + [ + ['Auckland', 'AUK'], + ['Bay of Plenty', 'BOP'], + ['Canterbury', 'CAN'], + ['Gisborne', 'GIS'], + ["Hawke's Bay", 'HKB'], + ['Marlborough', 'MBH'], + ['Manawatu-Wanganui', 'MWT'], + ['Northland', 'NTL'], + ['Nelson', 'NSN'], + ['Otago', 'OTA'], + ['Southland', 'STL'], + ['Taranaki', 'TKI'], + ['Tasman', 'TAS'], + ['Waikato', 'WKO'], + ['Wellington', 'WGN'], + ['West Coast', 'WTC'], + ['Chatham Islands Territory', 'CIT'], + ], ]; export const NI = [ - "Nicaragua", - "NI", - [ - ["Boaco", "BO"], - ["Carazo", "CA"], - ["Chinandega", "CI"], - ["Chontales", "CO"], - ["Estelí", "ES"], - ["Granada", "GR"], - ["Jinotega", "JI"], - ["León", "LE"], - ["Madriz", "MD"], - ["Managua", "MN"], - ["Masaya", "MS"], - ["Matagalpa", "MT"], - ["Nueva Segovia", "NS"], - ["Río San Juan", "SJ"], - ["Rivas", "RI"], - ["Atlántico Norte", "AN"], - ["Atlántico Sur", "AS"], - ], + 'Nicaragua', + 'NI', + [ + ['Boaco', 'BO'], + ['Carazo', 'CA'], + ['Chinandega', 'CI'], + ['Chontales', 'CO'], + ['Estelí', 'ES'], + ['Granada', 'GR'], + ['Jinotega', 'JI'], + ['León', 'LE'], + ['Madriz', 'MD'], + ['Managua', 'MN'], + ['Masaya', 'MS'], + ['Matagalpa', 'MT'], + ['Nueva Segovia', 'NS'], + ['Río San Juan', 'SJ'], + ['Rivas', 'RI'], + ['Atlántico Norte', 'AN'], + ['Atlántico Sur', 'AS'], + ], ]; export const NE = [ - "Niger", - "NE", - [ - ["Agadez", "1"], - ["Diffa", "2"], - ["Dosso", "3"], - ["Maradi", "4"], - ["Niamey", "8"], - ["Tahoua", "5"], - ["Tillabéri", "6"], - ["Zinder", "7"], - ], + 'Niger', + 'NE', + [ + ['Agadez', '1'], + ['Diffa', '2'], + ['Dosso', '3'], + ['Maradi', '4'], + ['Niamey', '8'], + ['Tahoua', '5'], + ['Tillabéri', '6'], + ['Zinder', '7'], + ], ]; export const NG = [ - "Nigeria", - "NG", - [ - ["Abia", "AB"], - ["Abuja Federal Capital Territory", "FC"], - ["Adamawa", "AD"], - ["Akwa Ibom", "AK"], - ["Anambra", "AN"], - ["Bauchi", "BA"], - ["Bayelsa", "BY"], - ["Benue", "BE"], - ["Borno", "BO"], - ["Cross River", "CR"], - ["Delta", "DE"], - ["Ebonyi", "EB"], - ["Edo", "ED"], - ["Ekiti", "EK"], - ["Enugu", "EN"], - ["Gombe", "GO"], - ["Imo", "IM"], - ["Jigawa", "JI"], - ["Kaduna", "KD"], - ["Kano", "KN"], - ["Katsina", "KT"], - ["Kebbi", "KE"], - ["Kogi", "KO"], - ["Kwara", "KW"], - ["Lagos", "LA"], - ["Nasarawa", "NA"], - ["Niger", "NI"], - ["Ogun", "OG"], - ["Ondo", "ON"], - ["Osun", "OS"], - ["Oyo", "OY"], - ["Plateau", "PL"], - ["Rivers", "RI"], - ["Sokoto", "SO"], - ["Taraba", "TA"], - ["Yobe", "YO"], - ["Zamfara", "ZA"], - ], -]; -export const NU = ["Niue", "NU", [["Niue", "undefined"]]]; -export const NF = ["Norfolk Island", "NF", [["Norfolk Island", "undefined"]]]; + 'Nigeria', + 'NG', + [ + ['Abia', 'AB'], + ['Abuja Federal Capital Territory', 'FC'], + ['Adamawa', 'AD'], + ['Akwa Ibom', 'AK'], + ['Anambra', 'AN'], + ['Bauchi', 'BA'], + ['Bayelsa', 'BY'], + ['Benue', 'BE'], + ['Borno', 'BO'], + ['Cross River', 'CR'], + ['Delta', 'DE'], + ['Ebonyi', 'EB'], + ['Edo', 'ED'], + ['Ekiti', 'EK'], + ['Enugu', 'EN'], + ['Gombe', 'GO'], + ['Imo', 'IM'], + ['Jigawa', 'JI'], + ['Kaduna', 'KD'], + ['Kano', 'KN'], + ['Katsina', 'KT'], + ['Kebbi', 'KE'], + ['Kogi', 'KO'], + ['Kwara', 'KW'], + ['Lagos', 'LA'], + ['Nasarawa', 'NA'], + ['Niger', 'NI'], + ['Ogun', 'OG'], + ['Ondo', 'ON'], + ['Osun', 'OS'], + ['Oyo', 'OY'], + ['Plateau', 'PL'], + ['Rivers', 'RI'], + ['Sokoto', 'SO'], + ['Taraba', 'TA'], + ['Yobe', 'YO'], + ['Zamfara', 'ZA'], + ], +]; +export const NU = ['Niue', 'NU', [['Niue', undefined]]]; +export const NF = ['Norfolk Island', 'NF', [['Norfolk Island', undefined]]]; export const MP = [ - "Northern Mariana Islands", - "MP", - [ - ["Northern Islands", "undefined"], - ["Rota", "undefined"], - ["Saipan", "undefined"], - ["Tinian", "undefined"], - ], + 'Northern Mariana Islands', + 'MP', + [ + ['Northern Islands', undefined], + ['Rota', undefined], + ['Saipan', undefined], + ['Tinian', undefined], + ], ]; export const NO = [ - "Norway", - "NO", - [ - ["Akershus", "02"], - ["Aust-Agder", "09"], - ["Buskerud", "06"], - ["Finnmark", "20"], - ["Hedmark", "04"], - ["Hordaland", "12"], - ["Møre og Romsdal", "15"], - ["Nordland", "18"], - ["Nord-Trøndelag", "17"], - ["Oppland", "05"], - ["Oslo", "03"], - ["Rogaland", "11"], - ["Sogn og Fjordane", "14"], - ["Sør-Trøndelag", "16"], - ["Telemark", "08"], - ["Troms", "19"], - ["Vest-Agder", "10"], - ["Vestfold", "07"], - ["Østfold", "01"], - ["Jan Mayen", "22"], - ["Svalbard", "21"], - ], + 'Norway', + 'NO', + [ + ['Akershus', '02'], + ['Aust-Agder', '09'], + ['Buskerud', '06'], + ['Finnmark', '20'], + ['Hedmark', '04'], + ['Hordaland', '12'], + ['Møre og Romsdal', '15'], + ['Nordland', '18'], + ['Nord-Trøndelag', '17'], + ['Oppland', '05'], + ['Oslo', '03'], + ['Rogaland', '11'], + ['Sogn og Fjordane', '14'], + ['Sør-Trøndelag', '16'], + ['Telemark', '08'], + ['Troms', '19'], + ['Vest-Agder', '10'], + ['Vestfold', '07'], + ['Østfold', '01'], + ['Jan Mayen', '22'], + ['Svalbard', '21'], + ], ]; export const OM = [ - "Oman", - "OM", - [ - ["Ad Dakhiliyah", "DA"], - ["Al Buraymi", "BU"], - ["Al Wusta", "WU"], - ["Az Zahirah", "ZA"], - ["Janub al Batinah", "BS"], - ["Janub ash Sharqiyah", "SS"], - ["Masqat", "MA"], - ["Musandam", "MU"], - ["Shamal al Batinah", "BJ"], - ["Shamal ash Sharqiyah", "SJ"], - ["Zufar", "ZU"], - ], + 'Oman', + 'OM', + [ + ['Ad Dakhiliyah', 'DA'], + ['Al Buraymi', 'BU'], + ['Al Wusta', 'WU'], + ['Az Zahirah', 'ZA'], + ['Janub al Batinah', 'BS'], + ['Janub ash Sharqiyah', 'SS'], + ['Masqat', 'MA'], + ['Musandam', 'MU'], + ['Shamal al Batinah', 'BJ'], + ['Shamal ash Sharqiyah', 'SJ'], + ['Zufar', 'ZU'], + ], ]; export const PK = [ - "Pakistan", - "PK", - [ - ["Azad Kashmir", "JK"], - ["Balochistan", "BA"], - ["Gilgit-Baltistan", "GB"], - ["Islamabad", "IS"], - ["Khaibar Pakhtunkhwa", "KP"], - ["Punjab", "PB"], - ["Sindh", "SD"], - ["Federally Administered Tribal Areas", "TA"], - ], + 'Pakistan', + 'PK', + [ + ['Azad Kashmir', 'JK'], + ['Balochistan', 'BA'], + ['Gilgit-Baltistan', 'GB'], + ['Islamabad', 'IS'], + ['Khaibar Pakhtunkhwa', 'KP'], + ['Punjab', 'PB'], + ['Sindh', 'SD'], + ['Federally Administered Tribal Areas', 'TA'], + ], ]; export const PW = [ - "Palau", - "PW", - [ - ["Aimeliik", "002"], - ["Airai", "004"], - ["Angaur", "010"], - ["Hatobohei", "050"], - ["Kayangel", "100"], - ["Koror", "150"], - ["Melekeok", "212"], - ["Ngaraard", "214"], - ["Ngarchelong", "218"], - ["Ngardmau", "222"], - ["Ngatpang", "224"], - ["Ngchesar", "226"], - ["Ngeremlengui", "227"], - ["Ngiwal", "228"], - ["Peleliu", "350"], - ["Sonsoral", "370"], - ], + 'Palau', + 'PW', + [ + ['Aimeliik', '002'], + ['Airai', '004'], + ['Angaur', '010'], + ['Hatobohei', '050'], + ['Kayangel', '100'], + ['Koror', '150'], + ['Melekeok', '212'], + ['Ngaraard', '214'], + ['Ngarchelong', '218'], + ['Ngardmau', '222'], + ['Ngatpang', '224'], + ['Ngchesar', '226'], + ['Ngeremlengui', '227'], + ['Ngiwal', '228'], + ['Peleliu', '350'], + ['Sonsoral', '370'], + ], ]; export const PS = [ - "Palestine", - "PS", - [ - ["Ak Khalīl", "HBN"], - ["Al Quds", "JEM"], - ["Arīḩā wal Aghwār", "JRH"], - ["Bayt Laḩm", "BTH"], - ["Dayr al Balaḩ", "DEB"], - ["Ghazzah", "GZA"], - ["Janīn", "JEN"], - ["Khān Yūnis", "KYS"], - ["Nāblus", "NBS"], - ["Qalqīyah", "QQA"], - ["Rafaḩ", "RFH"], - ["Rām Allāh wal Bīrah", "RBH"], - ["Salfīt", "SLT"], - ["Shamāl Ghazzah", "NGZ"], - ["Ţūbās", "TBS"], - ["Ţūlkarm", "TKM"], - ], + 'Palestine', + 'PS', + [ + ['Ak Khalīl', 'HBN'], + ['Al Quds', 'JEM'], + ['Arīḩā wal Aghwār', 'JRH'], + ['Bayt Laḩm', 'BTH'], + ['Dayr al Balaḩ', 'DEB'], + ['Ghazzah', 'GZA'], + ['Janīn', 'JEN'], + ['Khān Yūnis', 'KYS'], + ['Nāblus', 'NBS'], + ['Qalqīyah', 'QQA'], + ['Rafaḩ', 'RFH'], + ['Rām Allāh wal Bīrah', 'RBH'], + ['Salfīt', 'SLT'], + ['Shamāl Ghazzah', 'NGZ'], + ['Ţūbās', 'TBS'], + ['Ţūlkarm', 'TKM'], + ], ]; export const PA = [ - "Panama", - "PA", - [ - ["Bocas del Toro", "1"], - ["Chiriquí", "4"], - ["Coclé", "2"], - ["Colón", "3"], - ["Darién", "5"], - ["Emberá", "EM"], - ["Herrera", "6"], - ["Kuna Yala", "KY"], - ["Los Santos", "7"], - ["Ngäbe-Buglé", "NB"], - ["Panamá", "8"], - ["Panamá Oeste", "10"], - ["Veraguas", "9"], - ], + 'Panama', + 'PA', + [ + ['Bocas del Toro', '1'], + ['Chiriquí', '4'], + ['Coclé', '2'], + ['Colón', '3'], + ['Darién', '5'], + ['Emberá', 'EM'], + ['Herrera', '6'], + ['Kuna Yala', 'KY'], + ['Los Santos', '7'], + ['Ngäbe-Buglé', 'NB'], + ['Panamá', '8'], + ['Panamá Oeste', '10'], + ['Veraguas', '9'], + ], ]; export const PG = [ - "Papua New Guinea", - "PG", - [ - ["Bougainville", "NSB"], - ["Central", "CPM"], - ["Chimbu", "CPK"], - ["East New Britain", "EBR"], - ["East Sepik", "ESW"], - ["Eastern Highlands", "EHG"], - ["Enga", "EPW"], - ["Gulf", "GPK"], - ["Hela", "HLA"], - ["Jiwaka", "JWK"], - ["Madang", "MOM"], - ["Manus", "MRL"], - ["Milne Bay", "MBA"], - ["Morobe", "MPL"], - ["Port Moresby", "NCD"], - ["New Ireland", "NIK"], - ["Northern", "NPP"], - ["Southern Highlands", "SHM"], - ["West New Britain", "WBK"], - ["West Sepik", "SAN"], - ["Western", "WPD"], - ["Western Highlands", "WHM"], - ], + 'Papua New Guinea', + 'PG', + [ + ['Bougainville', 'NSB'], + ['Central', 'CPM'], + ['Chimbu', 'CPK'], + ['East New Britain', 'EBR'], + ['East Sepik', 'ESW'], + ['Eastern Highlands', 'EHG'], + ['Enga', 'EPW'], + ['Gulf', 'GPK'], + ['Hela', 'HLA'], + ['Jiwaka', 'JWK'], + ['Madang', 'MOM'], + ['Manus', 'MRL'], + ['Milne Bay', 'MBA'], + ['Morobe', 'MPL'], + ['Port Moresby', 'NCD'], + ['New Ireland', 'NIK'], + ['Northern', 'NPP'], + ['Southern Highlands', 'SHM'], + ['West New Britain', 'WBK'], + ['West Sepik', 'SAN'], + ['Western', 'WPD'], + ['Western Highlands', 'WHM'], + ], ]; export const PY = [ - "Paraguay", - "PY", - [ - ["Alto Paraguay", "16"], - ["Alto Parana", "10"], - ["Amambay", "13"], - ["Asuncion", "ASU"], - ["Caaguazu", "5"], - ["Caazapa", "6"], - ["Canindeyu", "14"], - ["Central", "11"], - ["Concepcion", "1"], - ["Cordillera", "3"], - ["Boqueron", "17"], - ["Guaira", "4"], - ["Itapua", "7"], - ["Misiones", "8"], - ["Neembucu", "12"], - ["Paraguari", "9"], - ["Presidente Hayes", "15"], - ["San Pedro", "2"], - ], + 'Paraguay', + 'PY', + [ + ['Alto Paraguay', '16'], + ['Alto Parana', '10'], + ['Amambay', '13'], + ['Asuncion', 'ASU'], + ['Caaguazu', '5'], + ['Caazapa', '6'], + ['Canindeyu', '14'], + ['Central', '11'], + ['Concepcion', '1'], + ['Cordillera', '3'], + ['Boqueron', '17'], + ['Guaira', '4'], + ['Itapua', '7'], + ['Misiones', '8'], + ['Neembucu', '12'], + ['Paraguari', '9'], + ['Presidente Hayes', '15'], + ['San Pedro', '2'], + ], ]; export const PE = [ - "Peru", - "PE", - [ - ["Amazonas", "AMA"], - ["Ancash", "ANC"], - ["Apurimac", "APU"], - ["Arequipa", "ARE"], - ["Ayacucho", "AYA"], - ["Cajamarca", "CAJ"], - ["Callao", "CAL"], - ["Cusco", "CUS"], - ["Huancavelica", "HUV"], - ["Huanuco", "HUC"], - ["Ica", "ICA"], - ["Junin", "JUN"], - ["La Libertad", "LAL"], - ["Lambayeque", "LAM"], - ["Lima", "LIM"], - ["Loreto", "LOR"], - ["Madre de Dios", "MDD"], - ["Moquegua", "MOQ"], - ["Municipalidad Metropolitana de Lima", "LMA"], - ["Pasco", "PAS"], - ["Piura", "PIU"], - ["Puno", "PUN"], - ["San Martin", "SAM"], - ["Tacna", "TAC"], - ["Tumbes", "TUM"], - ["Ucayali", "UCA"], - ], + 'Peru', + 'PE', + [ + ['Amazonas', 'AMA'], + ['Ancash', 'ANC'], + ['Apurimac', 'APU'], + ['Arequipa', 'ARE'], + ['Ayacucho', 'AYA'], + ['Cajamarca', 'CAJ'], + ['Callao', 'CAL'], + ['Cusco', 'CUS'], + ['Huancavelica', 'HUV'], + ['Huanuco', 'HUC'], + ['Ica', 'ICA'], + ['Junin', 'JUN'], + ['La Libertad', 'LAL'], + ['Lambayeque', 'LAM'], + ['Lima', 'LIM'], + ['Loreto', 'LOR'], + ['Madre de Dios', 'MDD'], + ['Moquegua', 'MOQ'], + ['Municipalidad Metropolitana de Lima', 'LMA'], + ['Pasco', 'PAS'], + ['Piura', 'PIU'], + ['Puno', 'PUN'], + ['San Martin', 'SAM'], + ['Tacna', 'TAC'], + ['Tumbes', 'TUM'], + ['Ucayali', 'UCA'], + ], ]; export const PH = [ - "Philippines", - "PH", - [ - ["Autonomous Region in Muslim Mindanao", "PH-14"], - ["Bicol", "PH-05"], - ["Cagayan Valley", "PH-02"], - ["Calabarzon", "PH-40"], - ["Caraga", "PH-13"], - ["Central Luzon", "PH-03"], - ["Central Visayas", "PH-07"], - ["Cordillera Administrative Region", "PH-15"], - ["Davao", "PH-11"], - ["Eastern Visayas", "PH-08"], - ["Ilocos", "PH-01"], - ["Mimaropa", "PH-41"], - ["National Capital Region", "PH-00"], - ["Northern Mindanao", "PH-10"], - ["Soccsksargen", "PH-12"], - ["Western Visayas", "PH-06"], - ["Zamboanga Peninsula", "PH-09"], - ], -]; -export const PN = ["Pitcairn", "PN", [["Pitcairn Islands", "undefined"]]]; + 'Philippines', + 'PH', + [ + ['Autonomous Region in Muslim Mindanao', 'PH-14'], + ['Bicol', 'PH-05'], + ['Cagayan Valley', 'PH-02'], + ['Calabarzon', 'PH-40'], + ['Caraga', 'PH-13'], + ['Central Luzon', 'PH-03'], + ['Central Visayas', 'PH-07'], + ['Cordillera Administrative Region', 'PH-15'], + ['Davao', 'PH-11'], + ['Eastern Visayas', 'PH-08'], + ['Ilocos', 'PH-01'], + ['Mimaropa', 'PH-41'], + ['National Capital Region', 'PH-00'], + ['Northern Mindanao', 'PH-10'], + ['Soccsksargen', 'PH-12'], + ['Western Visayas', 'PH-06'], + ['Zamboanga Peninsula', 'PH-09'], + ], +]; +export const PN = ['Pitcairn', 'PN', [['Pitcairn Islands', undefined]]]; export const PL = [ - "Poland", - "PL", - [ - ["Dolnośląskie", "02"], - ["Kujawsko-pomorskie", "04"], - ["Łódzkie", "10"], - ["Lubelskie", "06"], - ["Lubuskie", "08"], - ["Małopolskie", "12"], - ["Mazowieckie", "14"], - ["Opolskie", "16"], - ["Podkarpackie", "18"], - ["Podlaskie", "20"], - ["Pomorskie", "22"], - ["Śląskie", "24"], - ["Świętokrzyskie", "26"], - ["Warmińsko-mazurskie", "28"], - ["Wielkopolskie", "30"], - ["Zachodniopomorskie", "32"], - ], + 'Poland', + 'PL', + [ + ['Dolnośląskie', '02'], + ['Kujawsko-pomorskie', '04'], + ['Łódzkie', '10'], + ['Lubelskie', '06'], + ['Lubuskie', '08'], + ['Małopolskie', '12'], + ['Mazowieckie', '14'], + ['Opolskie', '16'], + ['Podkarpackie', '18'], + ['Podlaskie', '20'], + ['Pomorskie', '22'], + ['Śląskie', '24'], + ['Świętokrzyskie', '26'], + ['Warmińsko-mazurskie', '28'], + ['Wielkopolskie', '30'], + ['Zachodniopomorskie', '32'], + ], ]; export const PT = [ - "Portugal", - "PT", - [ - ["Açores", "20"], - ["Aveiro", "01"], - ["Beja", "02"], - ["Braga", "03"], - ["Bragança", "04"], - ["Castelo Branco", "05"], - ["Coimbra", "06"], - ["Évora", "07"], - ["Faro", "08"], - ["Guarda", "09"], - ["Leiria", "10"], - ["Lisboa", "11"], - ["Madeira", "30"], - ["Portalegre", "12"], - ["Porto", "13"], - ["Santarém", "14"], - ["Setúbal", "15"], - ["Viana do Castelo", "16"], - ["Vila Real", "17"], - ["Viseu", "18"], - ], + 'Portugal', + 'PT', + [ + ['Açores', '20'], + ['Aveiro', '01'], + ['Beja', '02'], + ['Braga', '03'], + ['Bragança', '04'], + ['Castelo Branco', '05'], + ['Coimbra', '06'], + ['Évora', '07'], + ['Faro', '08'], + ['Guarda', '09'], + ['Leiria', '10'], + ['Lisboa', '11'], + ['Madeira', '30'], + ['Portalegre', '12'], + ['Porto', '13'], + ['Santarém', '14'], + ['Setúbal', '15'], + ['Viana do Castelo', '16'], + ['Vila Real', '17'], + ['Viseu', '18'], + ], ]; export const PR = [ - "Puerto Rico", - "PR", - [ - ["Adjuntas", "undefined"], - ["Aguada", "undefined"], - ["Aguadilla", "undefined"], - ["Aguas Buenas", "undefined"], - ["Aibonito", "undefined"], - ["Anasco", "undefined"], - ["Arecibo", "undefined"], - ["Arroyo", "undefined"], - ["Barceloneta", "undefined"], - ["Barranquitas", "undefined"], - ["Bayamon", "undefined"], - ["Cabo Rojo", "undefined"], - ["Caguas", "undefined"], - ["Camuy", "undefined"], - ["Canovanas", "undefined"], - ["Carolina", "undefined"], - ["Cat", "undefined"], - ["Ceiba", "undefined"], - ["Ciales", "undefined"], - ["Cidra", "undefined"], - ["Coamo", "undefined"], - ["Comerio", "undefined"], - ["Corozal", "undefined"], - ["Culebra", "undefined"], - ["Dorado", "undefined"], - ["Fajardo", "undefined"], - ["Florida", "undefined"], - ["Guanica", "undefined"], - ["Guayama", "undefined"], - ["Guayanilla", "undefined"], - ["Guaynabo", "undefined"], - ["Gurabo", "undefined"], - ["Hatillo", "undefined"], - ["Hormigueros", "undefined"], - ["Humacao", "undefined"], - ["Isabe", "undefined"], - ["Juana Diaz", "undefined"], - ["Juncos", "undefined"], - ["Lajas", "undefined"], - ["Lares", "undefined"], - ["Las Marias", "undefined"], - ["Las oiza", "undefined"], - ["Luquillo", "undefined"], - ["Manati", "undefined"], - ["Maricao", "undefined"], - ["Maunabo", "undefined"], - ["Mayaguez", "undefined"], - ["Moca", "undefined"], - ["Morovis", "undefined"], - ["Naguabo", "undefined"], - ["Naranjito", "undefined"], - ["Orocovis", "undefined"], - ["Patillas", "undefined"], - ["Penuelas", "undefined"], - ["Ponce", "undefined"], - ["Quebradillas", "undefined"], - ["Rincon", "undefined"], - ["Rio Grande", "undefined"], - ["Sabana linas", "undefined"], - ["San German", "undefined"], - ["San Juan", "undefined"], - ["San Lorenzo", "undefined"], - ["San Sebastian", "undefined"], - ["Santa Isabel", "undefined"], - ["Toa Alta", "undefined"], - ["Toa Baja", "undefined"], - ["Trujillo Alto", "undefined"], - ["Utuado", "undefined"], - ["Vega Alta", "undefined"], - ["Vega ues", "undefined"], - ["Villalba", "undefined"], - ["Yabucoa", "undefined"], - ["Yauco", "undefined"], - ], + 'Puerto Rico', + 'PR', + [ + ['Adjuntas', undefined], + ['Aguada', undefined], + ['Aguadilla', undefined], + ['Aguas Buenas', undefined], + ['Aibonito', undefined], + ['Anasco', undefined], + ['Arecibo', undefined], + ['Arroyo', undefined], + ['Barceloneta', undefined], + ['Barranquitas', undefined], + ['Bayamon', undefined], + ['Cabo Rojo', undefined], + ['Caguas', undefined], + ['Camuy', undefined], + ['Canovanas', undefined], + ['Carolina', undefined], + ['Cat', undefined], + ['Ceiba', undefined], + ['Ciales', undefined], + ['Cidra', undefined], + ['Coamo', undefined], + ['Comerio', undefined], + ['Corozal', undefined], + ['Culebra', undefined], + ['Dorado', undefined], + ['Fajardo', undefined], + ['Florida', undefined], + ['Guanica', undefined], + ['Guayama', undefined], + ['Guayanilla', undefined], + ['Guaynabo', undefined], + ['Gurabo', undefined], + ['Hatillo', undefined], + ['Hormigueros', undefined], + ['Humacao', undefined], + ['Isabe', undefined], + ['Juana Diaz', undefined], + ['Juncos', undefined], + ['Lajas', undefined], + ['Lares', undefined], + ['Las Marias', undefined], + ['Las oiza', undefined], + ['Luquillo', undefined], + ['Manati', undefined], + ['Maricao', undefined], + ['Maunabo', undefined], + ['Mayaguez', undefined], + ['Moca', undefined], + ['Morovis', undefined], + ['Naguabo', undefined], + ['Naranjito', undefined], + ['Orocovis', undefined], + ['Patillas', undefined], + ['Penuelas', undefined], + ['Ponce', undefined], + ['Quebradillas', undefined], + ['Rincon', undefined], + ['Rio Grande', undefined], + ['Sabana linas', undefined], + ['San German', undefined], + ['San Juan', undefined], + ['San Lorenzo', undefined], + ['San Sebastian', undefined], + ['Santa Isabel', undefined], + ['Toa Alta', undefined], + ['Toa Baja', undefined], + ['Trujillo Alto', undefined], + ['Utuado', undefined], + ['Vega Alta', undefined], + ['Vega ues', undefined], + ['Villalba', undefined], + ['Yabucoa', undefined], + ['Yauco', undefined], + ], ]; export const QA = [ - "Qatar", - "QA", - [ - ["Ad Dawḩah", "DA"], - ["Al Khawr wa adh Dhakhīrah", "KH"], - ["Al Wakrah", "WA"], - ["Ar Rayyān", "RA"], - ["Ash Shamāl", "MS"], - ["Az̧ Za̧`āyin", "ZA"], - ["Umm Şalāl", "US"], - ], -]; -export const RE = ["Réunion", "RE", [["Réunion", "undefined"]]]; + 'Qatar', + 'QA', + [ + ['Ad Dawḩah', 'DA'], + ['Al Khawr wa adh Dhakhīrah', 'KH'], + ['Al Wakrah', 'WA'], + ['Ar Rayyān', 'RA'], + ['Ash Shamāl', 'MS'], + ['Az̧ Za̧`āyin', 'ZA'], + ['Umm Şalāl', 'US'], + ], +]; +export const RE = ['Réunion', 'RE', [['Réunion', undefined]]]; export const RO = [ - "Romania", - "RO", - [ - ["Alba", "RO-AB"], - ["Arad", "RO-AR"], - ["Arges", "RO-AG"], - ["Bacau", "RO-BC"], - ["Bihor", "RO-BH"], - ["Bistrita-Nasaud", "RO-BN"], - ["Botosani", "RO-BT"], - ["Braila", "RO-BR"], - ["Brasov", "RO-BV"], - ["Bucharest", "RO-B"], - ["Buzau", "RO-BZ"], - ["Calarasi", "RO-CL"], - ["Caras-Severin", "RO-CS"], - ["Cluj", "RO-CJ"], - ["Constanta", "RO-CT"], - ["Covasna", "RO-CV"], - ["Dambovita", "RO-DB"], - ["Dolj", "RO-DJ"], - ["Galati", "RO-GL"], - ["Giurgiu", "RO-GR"], - ["Gorj", "RO-GJ"], - ["Harghita", "RO-HR"], - ["Hunedoara", "RO-HD"], - ["Ialomita", "RO-IL"], - ["Iasi", "RO-IS"], - ["Ilfov", "RO-IF"], - ["Maramures", "RO-MM"], - ["Mehedinti", "RO-MH"], - ["Mures", "RO-MS"], - ["Neamt", "RO-NT"], - ["Olt", "RO-OT"], - ["Prahova", "RO-PH"], - ["Salaj", "RO-SJ"], - ["Satu Mare", "RO-SM"], - ["Sibiu", "RO-SB"], - ["Suceava", "RO-SV"], - ["Teleorman", "RO-TR"], - ["Timis", "RO-TM"], - ["Tulcea", "RO-TL"], - ["Valcea", "RO-VL"], - ["Vaslui", "RO-VS"], - ["Vrancea", "RO-VN"], - ], + 'Romania', + 'RO', + [ + ['Alba', 'RO-AB'], + ['Arad', 'RO-AR'], + ['Arges', 'RO-AG'], + ['Bacau', 'RO-BC'], + ['Bihor', 'RO-BH'], + ['Bistrita-Nasaud', 'RO-BN'], + ['Botosani', 'RO-BT'], + ['Braila', 'RO-BR'], + ['Brasov', 'RO-BV'], + ['Bucharest', 'RO-B'], + ['Buzau', 'RO-BZ'], + ['Calarasi', 'RO-CL'], + ['Caras-Severin', 'RO-CS'], + ['Cluj', 'RO-CJ'], + ['Constanta', 'RO-CT'], + ['Covasna', 'RO-CV'], + ['Dambovita', 'RO-DB'], + ['Dolj', 'RO-DJ'], + ['Galati', 'RO-GL'], + ['Giurgiu', 'RO-GR'], + ['Gorj', 'RO-GJ'], + ['Harghita', 'RO-HR'], + ['Hunedoara', 'RO-HD'], + ['Ialomita', 'RO-IL'], + ['Iasi', 'RO-IS'], + ['Ilfov', 'RO-IF'], + ['Maramures', 'RO-MM'], + ['Mehedinti', 'RO-MH'], + ['Mures', 'RO-MS'], + ['Neamt', 'RO-NT'], + ['Olt', 'RO-OT'], + ['Prahova', 'RO-PH'], + ['Salaj', 'RO-SJ'], + ['Satu Mare', 'RO-SM'], + ['Sibiu', 'RO-SB'], + ['Suceava', 'RO-SV'], + ['Teleorman', 'RO-TR'], + ['Timis', 'RO-TM'], + ['Tulcea', 'RO-TL'], + ['Valcea', 'RO-VL'], + ['Vaslui', 'RO-VS'], + ['Vrancea', 'RO-VN'], + ], ]; export const RU = [ - "Russian Federation", - "RU", - [ - ["Republic of Adygea", "AD"], - ["Republic of Altai (Gorno-Altaysk)", "AL"], - ["Altai Krai", "ALT"], - ["Amur Oblast", "AMU"], - ["Arkhangelsk Oblast", "ARK"], - ["Astrakhan Oblast", "AST"], - ["Republic of Bashkortostan", "BA"], - ["Belgorod Oblast", "BEL"], - ["Bryansk Oblast", "BRY"], - ["Republic of Buryatia", "BU"], - ["Chechen Republic", "CE"], - ["Chelyabinsk Oblast", "CHE"], - ["Chukotka Autonomous Okrug", "CHU"], - ["Chuvash Republic", "CU"], - ["Republic of Dagestan", "DA"], - ["Republic of Ingushetia", "IN"], - ["Irkutsk Oblast", "IRK"], - ["Ivanovo Oblast", "IVA"], - ["Jewish Autonomous Oblast", "JEW"], - ["Kabardino-Balkar Republic", "KB"], - ["Kaliningrad Oblast", "KLN"], - ["Republic of Kalmykia", "KL"], - ["Kaluga Oblast", "KLU"], - ["Kamchatka Krai", "KAM"], - ["Karachay-Cherkess Republic", "KC"], - ["Republic of Karelia", "KR"], - ["Khabarovsk Krai", "KHA"], - ["Republic of Khakassia", "KK"], - ["Khanty-Mansi Autonomous Okrug - Yugra", "KHM"], - ["Kemerovo Oblast", "KEM"], - ["Kirov Oblast", "KIR"], - ["Komi Republic", "KO"], - ["Kostroma Oblast", "KOS"], - ["Krasnodar Krai", "KDA"], - ["Krasnoyarsk Krai", "KYA"], - ["Kurgan Oblast", "KGN"], - ["Kursk Oblast", "KRS"], - ["Leningrad Oblast", "LEN"], - ["Lipetsk Oblast", "LIP"], - ["Magadan Oblast", "MAG"], - ["Mari El Republic", "ME"], - ["Republic of Mordovia", "MO"], - ["Moscow Oblast", "MOS"], - ["Moscow", "MOW"], - ["Murmansk Oblast", "MU"], - ["Nenets Autonomous Okrug", "NEN"], - ["Nizhny Novgorod Oblast", "NIZ"], - ["Novgorod Oblast", "NGR"], - ["Novosibirsk Oblast", "NVS"], - ["Omsk Oblast", "OMS"], - ["Orenburg Oblast", "ORE"], - ["Oryol Oblast", "ORL"], - ["Penza Oblast", "PNZ"], - ["Perm Krai", "PER"], - ["Primorsky Krai", "PRI"], - ["Pskov Oblast", "PSK"], - ["Rostov Oblast", "ROS"], - ["Ryazan Oblast", "RYA"], - ["Saint Petersburg", "SPE"], - ["Sakha (Yakutia) Republic", "SA"], - ["Sakhalin Oblast", "SAK"], - ["Samara Oblast", "SAM"], - ["Saratov Oblast", "SAR"], - ["Republic of North Ossetia-Alania", "NOA"], - ["Smolensk Oblast", "SMO"], - ["Stavropol Krai", "STA"], - ["Sverdlovsk Oblast", "SVE"], - ["Tambov Oblast", "TAM"], - ["Republic of Tatarstan", "TA"], - ["Tomsk Oblast", "TOM"], - ["Tuva Republic", "TU"], - ["Tula Oblast", "TUL"], - ["Tver Oblast", "TVE"], - ["Tyumen Oblast", "TYU"], - ["Udmurt Republic", "UD"], - ["Ulyanovsk Oblast", "ULY"], - ["Vladimir Oblast", "VLA"], - ["Volgograd Oblast", "VGG"], - ["Vologda Oblast", "VLG"], - ["Voronezh Oblast", "VOR"], - ["Yamalo-Nenets Autonomous Okrug", "YAN"], - ["Yaroslavl Oblast", "YAR"], - ["Zabaykalsky Krai", "ZAB"], - ], + 'Russian Federation', + 'RU', + [ + ['Republic of Adygea', 'AD'], + ['Republic of Altai (Gorno-Altaysk)', 'AL'], + ['Altai Krai', 'ALT'], + ['Amur Oblast', 'AMU'], + ['Arkhangelsk Oblast', 'ARK'], + ['Astrakhan Oblast', 'AST'], + ['Republic of Bashkortostan', 'BA'], + ['Belgorod Oblast', 'BEL'], + ['Bryansk Oblast', 'BRY'], + ['Republic of Buryatia', 'BU'], + ['Chechen Republic', 'CE'], + ['Chelyabinsk Oblast', 'CHE'], + ['Chukotka Autonomous Okrug', 'CHU'], + ['Chuvash Republic', 'CU'], + ['Republic of Dagestan', 'DA'], + ['Republic of Ingushetia', 'IN'], + ['Irkutsk Oblast', 'IRK'], + ['Ivanovo Oblast', 'IVA'], + ['Jewish Autonomous Oblast', 'JEW'], + ['Kabardino-Balkar Republic', 'KB'], + ['Kaliningrad Oblast', 'KLN'], + ['Republic of Kalmykia', 'KL'], + ['Kaluga Oblast', 'KLU'], + ['Kamchatka Krai', 'KAM'], + ['Karachay-Cherkess Republic', 'KC'], + ['Republic of Karelia', 'KR'], + ['Khabarovsk Krai', 'KHA'], + ['Republic of Khakassia', 'KK'], + ['Khanty-Mansi Autonomous Okrug - Yugra', 'KHM'], + ['Kemerovo Oblast', 'KEM'], + ['Kirov Oblast', 'KIR'], + ['Komi Republic', 'KO'], + ['Kostroma Oblast', 'KOS'], + ['Krasnodar Krai', 'KDA'], + ['Krasnoyarsk Krai', 'KYA'], + ['Kurgan Oblast', 'KGN'], + ['Kursk Oblast', 'KRS'], + ['Leningrad Oblast', 'LEN'], + ['Lipetsk Oblast', 'LIP'], + ['Magadan Oblast', 'MAG'], + ['Mari El Republic', 'ME'], + ['Republic of Mordovia', 'MO'], + ['Moscow Oblast', 'MOS'], + ['Moscow', 'MOW'], + ['Murmansk Oblast', 'MU'], + ['Nenets Autonomous Okrug', 'NEN'], + ['Nizhny Novgorod Oblast', 'NIZ'], + ['Novgorod Oblast', 'NGR'], + ['Novosibirsk Oblast', 'NVS'], + ['Omsk Oblast', 'OMS'], + ['Orenburg Oblast', 'ORE'], + ['Oryol Oblast', 'ORL'], + ['Penza Oblast', 'PNZ'], + ['Perm Krai', 'PER'], + ['Primorsky Krai', 'PRI'], + ['Pskov Oblast', 'PSK'], + ['Rostov Oblast', 'ROS'], + ['Ryazan Oblast', 'RYA'], + ['Saint Petersburg', 'SPE'], + ['Sakha (Yakutia) Republic', 'SA'], + ['Sakhalin Oblast', 'SAK'], + ['Samara Oblast', 'SAM'], + ['Saratov Oblast', 'SAR'], + ['Republic of North Ossetia-Alania', 'NOA'], + ['Smolensk Oblast', 'SMO'], + ['Stavropol Krai', 'STA'], + ['Sverdlovsk Oblast', 'SVE'], + ['Tambov Oblast', 'TAM'], + ['Republic of Tatarstan', 'TA'], + ['Tomsk Oblast', 'TOM'], + ['Tuva Republic', 'TU'], + ['Tula Oblast', 'TUL'], + ['Tver Oblast', 'TVE'], + ['Tyumen Oblast', 'TYU'], + ['Udmurt Republic', 'UD'], + ['Ulyanovsk Oblast', 'ULY'], + ['Vladimir Oblast', 'VLA'], + ['Volgograd Oblast', 'VGG'], + ['Vologda Oblast', 'VLG'], + ['Voronezh Oblast', 'VOR'], + ['Yamalo-Nenets Autonomous Okrug', 'YAN'], + ['Yaroslavl Oblast', 'YAR'], + ['Zabaykalsky Krai', 'ZAB'], + ], ]; export const RW = [ - "Rwanda", - "RW", - [ - ["Kigali", "01"], - ["Eastern", "02"], - ["Northern", "03"], - ["Western", "04"], - ["Southern", "05"], - ], + 'Rwanda', + 'RW', + [ + ['Kigali', '01'], + ['Eastern', '02'], + ['Northern', '03'], + ['Western', '04'], + ['Southern', '05'], + ], ]; export const BL = [ - "Saint Barthélemy", - "BL", - [ - ["Au Vent", "02"], - ["Sous le Vent", "01"], - ], + 'Saint Barthélemy', + 'BL', + [ + ['Au Vent', '02'], + ['Sous le Vent', '01'], + ], ]; export const SH = [ - "Saint Helena, Ascension and Tristan da Cunha", - "SH", - [ - ["Ascension", "AC"], - ["Saint Helena", "HL"], - ["Tristan da Cunha", "TA"], - ], + 'Saint Helena, Ascension and Tristan da Cunha', + 'SH', + [ + ['Ascension', 'AC'], + ['Saint Helena', 'HL'], + ['Tristan da Cunha', 'TA'], + ], ]; export const KN = [ - "Saint Kitts and Nevis", - "KN", - [ - ["Saint Kitts", "K"], - ["Nevis", "N"], - ], + 'Saint Kitts and Nevis', + 'KN', + [ + ['Saint Kitts', 'K'], + ['Nevis', 'N'], + ], ]; export const LC = [ - "Saint Lucia", - "LC", - [ - ["Anse-la-Raye", "01"], - ["Canaries", "12"], - ["Castries", "02"], - ["Choiseul", "03"], - ["Dennery", "05"], - ["Gros Islet", "06"], - ["Laborie", "07"], - ["Micoud", "08"], - ["Soufriere", "10"], - ["Vieux Fort", "11"], - ], -]; -export const MF = ["Saint Martin", "MF", [["Saint Martin", "undefined"]]]; + 'Saint Lucia', + 'LC', + [ + ['Anse-la-Raye', '01'], + ['Canaries', '12'], + ['Castries', '02'], + ['Choiseul', '03'], + ['Dennery', '05'], + ['Gros Islet', '06'], + ['Laborie', '07'], + ['Micoud', '08'], + ['Soufriere', '10'], + ['Vieux Fort', '11'], + ], +]; +export const MF = ['Saint Martin', 'MF', [['Saint Martin', undefined]]]; export const PM = [ - "Saint Pierre and Miquelon", - "PM", - [ - ["Miquelon", "undefined"], - ["Saint Pierre", "undefined"], - ], + 'Saint Pierre and Miquelon', + 'PM', + [ + ['Miquelon', undefined], + ['Saint Pierre', undefined], + ], ]; export const VC = [ - "Saint Vincent and the Grenadines", - "VC", - [ - ["Charlotte", "01"], - ["Grenadines", "06"], - ["Saint Andrew", "02"], - ["Saint David", "03"], - ["Saint George", "04"], - ["Saint Patrick", "05"], - ], + 'Saint Vincent and the Grenadines', + 'VC', + [ + ['Charlotte', '01'], + ['Grenadines', '06'], + ['Saint Andrew', '02'], + ['Saint David', '03'], + ['Saint George', '04'], + ['Saint Patrick', '05'], + ], ]; export const WS = [ - "Samoa", - "WS", - [ - ["A'ana", "AA"], - ["Aiga-i-le-Tai", "AL"], - ["Atua", "AT"], - ["Fa'asaleleaga", "FA"], - ["Gaga'emauga", "GE"], - ["Gagaifomauga", "GI"], - ["Palauli", "PA"], - ["Satupa'itea", "SA"], - ["Tuamasaga", "TU"], - ["Va'a-o-Fonoti", "VF"], - ["Vaisigano", "VS"], - ], + 'Samoa', + 'WS', + [ + ["A'ana", 'AA'], + ['Aiga-i-le-Tai', 'AL'], + ['Atua', 'AT'], + ["Fa'asaleleaga", 'FA'], + ["Gaga'emauga", 'GE'], + ['Gagaifomauga', 'GI'], + ['Palauli', 'PA'], + ["Satupa'itea", 'SA'], + ['Tuamasaga', 'TU'], + ["Va'a-o-Fonoti", 'VF'], + ['Vaisigano', 'VS'], + ], ]; export const SM = [ - "San Marino", - "SM", - [ - ["Acquaviva", "01"], - ["Borgo Maggiore", "06"], - ["Chiesanuova", "02"], - ["Domagnano", "03"], - ["Faetano", "04"], - ["Fiorentino", "05"], - ["Montegiardino", "08"], - ["San Marino", "07"], - ["Serravalle", "09"], - ], + 'San Marino', + 'SM', + [ + ['Acquaviva', '01'], + ['Borgo Maggiore', '06'], + ['Chiesanuova', '02'], + ['Domagnano', '03'], + ['Faetano', '04'], + ['Fiorentino', '05'], + ['Montegiardino', '08'], + ['San Marino', '07'], + ['Serravalle', '09'], + ], ]; export const ST = [ - "Sao Tome and Principe", - "ST", - [ - ["Principe", "P"], - ["Sao Tome", "S"], - ], + 'Sao Tome and Principe', + 'ST', + [ + ['Principe', 'P'], + ['Sao Tome', 'S'], + ], ]; export const SA = [ - "Saudi Arabia", - "SA", - [ - ["'Asir", "14"], - ["Al Bahah", "11"], - ["Al Hudud ash Shamaliyah", "08"], - ["Al Jawf", "12"], - ["Al Madinah al Munawwarah", "03"], - ["Al Qasim", "05"], - ["Ar Riyad", "01"], - ["Ash Sharqiyah", "04"], - ["Ha'il", "06"], - ["Jazan", "09"], - ["Makkah al Mukarramah", "02"], - ["Najran", "10"], - ["Tabuk", "07"], - ], + 'Saudi Arabia', + 'SA', + [ + ["'Asir", '14'], + ['Al Bahah', '11'], + ['Al Hudud ash Shamaliyah', '08'], + ['Al Jawf', '12'], + ['Al Madinah al Munawwarah', '03'], + ['Al Qasim', '05'], + ['Ar Riyad', '01'], + ['Ash Sharqiyah', '04'], + ["Ha'il", '06'], + ['Jazan', '09'], + ['Makkah al Mukarramah', '02'], + ['Najran', '10'], + ['Tabuk', '07'], + ], ]; export const SN = [ - "Senegal", - "SN", - [ - ["Dakar", "DK"], - ["Diourbel", "DB"], - ["Fatick", "FK"], - ["Kaffrine", "KA"], - ["Kaolack", "KL"], - ["Kedougou", "KE"], - ["Kolda", "KD"], - ["Louga", "LG"], - ["Matam", "MT"], - ["Saint-Louis", "SL"], - ["Sedhiou", "SE"], - ["Tambacounda", "TC"], - ["Thies", "TH"], - ["Ziguinchor", "ZG"], - ], + 'Senegal', + 'SN', + [ + ['Dakar', 'DK'], + ['Diourbel', 'DB'], + ['Fatick', 'FK'], + ['Kaffrine', 'KA'], + ['Kaolack', 'KL'], + ['Kedougou', 'KE'], + ['Kolda', 'KD'], + ['Louga', 'LG'], + ['Matam', 'MT'], + ['Saint-Louis', 'SL'], + ['Sedhiou', 'SE'], + ['Tambacounda', 'TC'], + ['Thies', 'TH'], + ['Ziguinchor', 'ZG'], + ], ]; export const RS = [ - "Serbia", - "RS", - [ - ["Beograd (Belgrade)", "00"], - ["Borski", "14"], - ["Braničevski", "11"], - ["Jablanički", "23"], - ["Južnobački", "06"], - ["Južnobanatski", "04"], - ["Kolubarski", "09"], - ["Kosovski", "25"], - ["Kosovsko-Mitrovački", "28"], - ["Kosovsko-Pomoravski", "29"], - ["Mačvanski", "08"], - ["Moravički", "17"], - ["Nišavski", "20"], - ["Pčinjski", "24"], - ["Pećki", "26"], - ["Pirotski", "22"], - ["Podunavski", "10"], - ["Pomoravski", "13"], - ["Prizrenski", "27"], - ["Rasinski", "19"], - ["Raški", "18"], - ["Severnobački", "01"], - ["Severnobanatski", "03"], - ["Srednjebanatski", "02"], - ["Sremski", "07"], - ["Šumadijski", "12"], - ["Toplički", "21"], - ["Zaječarski", "15"], - ["Zapadnobački", "05"], - ["Zlatiborski", "16"], - ], + 'Serbia', + 'RS', + [ + ['Beograd (Belgrade)', '00'], + ['Borski', '14'], + ['Braničevski', '11'], + ['Jablanički', '23'], + ['Južnobački', '06'], + ['Južnobanatski', '04'], + ['Kolubarski', '09'], + ['Kosovski', '25'], + ['Kosovsko-Mitrovački', '28'], + ['Kosovsko-Pomoravski', '29'], + ['Mačvanski', '08'], + ['Moravički', '17'], + ['Nišavski', '20'], + ['Pčinjski', '24'], + ['Pećki', '26'], + ['Pirotski', '22'], + ['Podunavski', '10'], + ['Pomoravski', '13'], + ['Prizrenski', '27'], + ['Rasinski', '19'], + ['Raški', '18'], + ['Severnobački', '01'], + ['Severnobanatski', '03'], + ['Srednjebanatski', '02'], + ['Sremski', '07'], + ['Šumadijski', '12'], + ['Toplički', '21'], + ['Zaječarski', '15'], + ['Zapadnobački', '05'], + ['Zlatiborski', '16'], + ], ]; export const SC = [ - "Seychelles", - "SC", - [ - ["Anse aux Pins", "01"], - ["Anse Boileau", "02"], - ["Anse Etoile", "03"], - ["Anse Royale", "05"], - ["Anu Cap", "04"], - ["Baie Lazare", "06"], - ["Baie Sainte Anne", "07"], - ["Beau Vallon", "08"], - ["Bel Air", "09"], - ["Bel Ombre", "10"], - ["Cascade", "11"], - ["Glacis", "12"], - ["Grand'Anse Mahe", "13"], - ["Grand'Anse Praslin", "14"], - ["La Digue", "15"], - ["La Riviere Anglaise", "16"], - ["Les Mamelles", "24"], - ["Mont Buxton", "17"], - ["Mont Fleuri", "18"], - ["Plaisance", "19"], - ["Pointe La Rue", "20"], - ["Port Glaud", "21"], - ["Roche Caiman", "25"], - ["Saint Louis", "22"], - ["Takamaka", "23"], - ], + 'Seychelles', + 'SC', + [ + ['Anse aux Pins', '01'], + ['Anse Boileau', '02'], + ['Anse Etoile', '03'], + ['Anse Royale', '05'], + ['Anu Cap', '04'], + ['Baie Lazare', '06'], + ['Baie Sainte Anne', '07'], + ['Beau Vallon', '08'], + ['Bel Air', '09'], + ['Bel Ombre', '10'], + ['Cascade', '11'], + ['Glacis', '12'], + ["Grand'Anse Mahe", '13'], + ["Grand'Anse Praslin", '14'], + ['La Digue', '15'], + ['La Riviere Anglaise', '16'], + ['Les Mamelles', '24'], + ['Mont Buxton', '17'], + ['Mont Fleuri', '18'], + ['Plaisance', '19'], + ['Pointe La Rue', '20'], + ['Port Glaud', '21'], + ['Roche Caiman', '25'], + ['Saint Louis', '22'], + ['Takamaka', '23'], + ], ]; export const SL = [ - "Sierra Leone", - "SL", - [ - ["Eastern", "E"], - ["Northern", "N"], - ["Southern", "S"], - ["Western", "W"], - ], + 'Sierra Leone', + 'SL', + [ + ['Eastern', 'E'], + ['Northern', 'N'], + ['Southern', 'S'], + ['Western', 'W'], + ], ]; export const SG = [ - "Singapore", - "SG", - [ - ["Central Singapore", "01"], - ["North East", "02"], - ["North West", "03"], - ["South East", "04"], - ["South West", "05"], - ], -]; -export const SX = [ - "Sint Maarten (Dutch part)", - "SX", - [["Sint Maarten", "undefined"]], -]; + 'Singapore', + 'SG', + [ + ['Central Singapore', '01'], + ['North East', '02'], + ['North West', '03'], + ['South East', '04'], + ['South West', '05'], + ], +]; +export const SX = ['Sint Maarten (Dutch part)', 'SX', [['Sint Maarten', undefined]]]; export const SK = [ - "Slovakia", - "SK", - [ - ["Banskobystricky", "BC"], - ["Bratislavsky", "BL"], - ["Kosicky", "KI"], - ["Nitriansky", "NI"], - ["Presovsky", "PV"], - ["Trenciansky", "TC"], - ["Trnavsky", "TA"], - ["Zilinsky", "ZI"], - ], + 'Slovakia', + 'SK', + [ + ['Banskobystricky', 'BC'], + ['Bratislavsky', 'BL'], + ['Kosicky', 'KI'], + ['Nitriansky', 'NI'], + ['Presovsky', 'PV'], + ['Trenciansky', 'TC'], + ['Trnavsky', 'TA'], + ['Zilinsky', 'ZI'], + ], ]; export const SI = [ - "Slovenia", - "SI", - [ - ["Ajdovscina", "001"], - ["Apace", "195"], - ["Beltinci", "002"], - ["Benedikt", "148"], - ["Bistrica ob Sotli", "149"], - ["Bled", "003"], - ["Bloke", "150"], - ["Bohinj", "004"], - ["Borovnica", "005"], - ["Bovec", "006"], - ["Braslovce", "151"], - ["Brda", "007"], - ["Brezice", "009"], - ["Brezovica", "008"], - ["Cankova", "152"], - ["Celje", "011"], - ["Cerklje na Gorenjskem", "012"], - ["Cerknica", "013"], - ["Cerkno", "014"], - ["Cerkvenjak", "153"], - ["Cirkulane", "196"], - ["Crensovci", "015"], - ["Crna na Koroskem", "016"], - ["Crnomelj", "017"], - ["Destrnik", "018"], - ["Divaca", "019"], - ["Dobje", "154"], - ["Dobrepolje", "020"], - ["Dobrna", "155"], - ["Dobrova-Polhov Gradec", "021"], - ["Dobrovnik", "156"], - ["Dol pri Ljubljani", "022"], - ["Dolenjske Toplice", "157"], - ["Domzale", "023"], - ["Dornava", "024"], - ["Dravograd", "025"], - ["Duplek", "026"], - ["Gorenja Vas-Poljane", "027"], - ["Gorisnica", "028"], - ["Gorje", "207"], - ["Gornja Radgona", "029"], - ["Gornji Grad", "030"], - ["Gornji Petrovci", "031"], - ["Grad", "158"], - ["Grosuplje", "032"], - ["Hajdina", "159"], - ["Hoce-Slivnica", "160"], - ["Hodos", "161"], - ["Horjul", "162"], - ["Hrastnik", "034"], - ["Hrpelje-Kozina", "035"], - ["Idrija", "036"], - ["Ig", "037"], - ["Ilirska Bistrica", "038"], - ["Ivancna Gorica", "039"], - ["Izola", "040"], - ["Jesenice", "041"], - ["Jursinci", "042"], - ["Kamnik", "043"], - ["Kanal", "044"], - ["Kidricevo", "045"], - ["Kobarid", "046"], - ["Kobilje", "047"], - ["Kocevje", "048"], - ["Komen", "049"], - ["Komenda", "164"], - ["Koper", "050"], - ["Kodanjevica na Krki", "197"], - ["Kostel", "165"], - ["Kozje", "051"], - ["Kranj", "052"], - ["Kranjska Gora", "053"], - ["Krizevci", "166"], - ["Krsko", "054"], - ["Kungota", "055"], - ["Kuzma", "056"], - ["Lasko", "057"], - ["Lenart", "058"], - ["Lendava", "059"], - ["Litija", "060"], - ["Ljubljana", "061"], - ["Ljubno", "062"], - ["Ljutomer", "063"], - ["Log-Dragomer", "208"], - ["Logatec", "064"], - ["Loska Dolina", "065"], - ["Loski Potok", "066"], - ["Lovrenc na Pohorju", "167"], - ["Lukovica", "068"], - ["Luce", "067"], - ["Majsperk", "069"], - ["Makole", "198"], - ["Maribor", "070"], - ["Markovci", "168"], - ["Medvode", "071"], - ["Menges", "072"], - ["Metlika", "073"], - ["Mezica", "074"], - ["Miklavz na Dravskem Polju", "169"], - ["Miren-Kostanjevica", "075"], - ["Mirna", "212"], - ["Mirna Pec", "170"], - ["Mislinja", "076"], - ["Mokronog-Trebelno", "199"], - ["Moravce", "077"], - ["Moravske Toplice", "078"], - ["Mozirje", "079"], - ["Murska Sobota", "080"], - ["Naklo", "082"], - ["Nazarje", "083"], - ["Nova Gorica", "084"], - ["Novo Mesto", "085"], - ["Odranci", "086"], - ["Ormoz", "087"], - ["Osilnica", "088"], - ["Pesnica", "089"], - ["Piran", "090"], - ["Pivka", "091"], - ["Podcetrtek", "092"], - ["Podlehnik", "172"], - ["Podvelka", "093"], - ["Poljcane", "200"], - ["Postojna", "094"], - ["Prebold", "174"], - ["Preddvor", "095"], - ["Prevalje", "175"], - ["Ptuj", "096"], - ["Race-Fram", "098"], - ["Radece", "099"], - ["Radenci", "100"], - ["Radlje ob Dravi", "101"], - ["Radovljica", "102"], - ["Ravne na Koroskem", "103"], - ["Razkrizje", "176"], - ["Recica ob Savinji", "209"], - ["Rence-Vogrsko", "201"], - ["Ribnica", "104"], - ["Ribnica na Poboriu", "177"], - ["Rogaska Slatina", "106"], - ["Rogasovci", "105"], - ["Rogatec", "107"], - ["Ruse", "108"], - ["Salovci", "033"], - ["Selnica ob Dravi", "178"], - ["Semic", "109"], - ["Sempeter-Vrtojba", "183"], - ["Sencur", "117"], - ["Sentilj", "118"], - ["Sentjernej", "119"], - ["Sentjur", "120"], - ["Sentrupert", "211"], - ["Sevnica", "110"], - ["Sezana", "111"], - ["Skocjan", "121"], - ["Skofja Loka", "122"], - ["Skofljica", "123"], - ["Slovenj Gradec", "112"], - ["Slovenska Bistrica", "113"], - ["Slovenske Konjice", "114"], - ["Smarje pri elsah", "124"], - ["Smarjeske Toplice", "206"], - ["Smartno ob Paki", "125"], - ["Smartno pri Litiji", "194"], - ["Sodrazica", "179"], - ["Solcava", "180"], - ["Sostanj", "126"], - ["Sredisce ob Dravi", "202"], - ["Starse", "115"], - ["Store", "127"], - ["Straza", "203"], - ["Sveta Ana", "181"], - ["Sveta Trojica v Slovenskih Goricah", "204"], - ["Sveta Andraz v Slovenskih Goricah", "182"], - ["Sveti Jurij", "116"], - ["Sveti Jurij v Slovenskih Goricah", "210"], - ["Sveti Tomaz", "205"], - ["Tabor", "184"], - ["Tisina", "010"], - ["Tolmin", "128"], - ["Trbovlje", "129"], - ["Trebnje", "130"], - ["Trnovska Vas", "185"], - ["Trzin", "186"], - ["Trzic", "131"], - ["Turnisce", "132"], - ["Velenje", "133"], - ["Velika Polana", "187"], - ["Velike Lasce", "134"], - ["Verzej", "188"], - ["Videm", "135"], - ["Vipava", "136"], - ["Vitanje", "137"], - ["Vodice", "138"], - ["Vojnik", "139"], - ["Vransko", "189"], - ["Vrhnika", "140"], - ["Vuzenica", "141"], - ["Zagorje ob Savi", "142"], - ["Zavrc", "143"], - ["Zrece", "144"], - ["Zalec", "190"], - ["Zelezniki", "146"], - ["Zetale", "191"], - ["Ziri", "147"], - ["Zirovnica", "192"], - ["Zuzemberk", "193"], - ], + 'Slovenia', + 'SI', + [ + ['Ajdovscina', '001'], + ['Apace', '195'], + ['Beltinci', '002'], + ['Benedikt', '148'], + ['Bistrica ob Sotli', '149'], + ['Bled', '003'], + ['Bloke', '150'], + ['Bohinj', '004'], + ['Borovnica', '005'], + ['Bovec', '006'], + ['Braslovce', '151'], + ['Brda', '007'], + ['Brezice', '009'], + ['Brezovica', '008'], + ['Cankova', '152'], + ['Celje', '011'], + ['Cerklje na Gorenjskem', '012'], + ['Cerknica', '013'], + ['Cerkno', '014'], + ['Cerkvenjak', '153'], + ['Cirkulane', '196'], + ['Crensovci', '015'], + ['Crna na Koroskem', '016'], + ['Crnomelj', '017'], + ['Destrnik', '018'], + ['Divaca', '019'], + ['Dobje', '154'], + ['Dobrepolje', '020'], + ['Dobrna', '155'], + ['Dobrova-Polhov Gradec', '021'], + ['Dobrovnik', '156'], + ['Dol pri Ljubljani', '022'], + ['Dolenjske Toplice', '157'], + ['Domzale', '023'], + ['Dornava', '024'], + ['Dravograd', '025'], + ['Duplek', '026'], + ['Gorenja Vas-Poljane', '027'], + ['Gorisnica', '028'], + ['Gorje', '207'], + ['Gornja Radgona', '029'], + ['Gornji Grad', '030'], + ['Gornji Petrovci', '031'], + ['Grad', '158'], + ['Grosuplje', '032'], + ['Hajdina', '159'], + ['Hoce-Slivnica', '160'], + ['Hodos', '161'], + ['Horjul', '162'], + ['Hrastnik', '034'], + ['Hrpelje-Kozina', '035'], + ['Idrija', '036'], + ['Ig', '037'], + ['Ilirska Bistrica', '038'], + ['Ivancna Gorica', '039'], + ['Izola', '040'], + ['Jesenice', '041'], + ['Jursinci', '042'], + ['Kamnik', '043'], + ['Kanal', '044'], + ['Kidricevo', '045'], + ['Kobarid', '046'], + ['Kobilje', '047'], + ['Kocevje', '048'], + ['Komen', '049'], + ['Komenda', '164'], + ['Koper', '050'], + ['Kodanjevica na Krki', '197'], + ['Kostel', '165'], + ['Kozje', '051'], + ['Kranj', '052'], + ['Kranjska Gora', '053'], + ['Krizevci', '166'], + ['Krsko', '054'], + ['Kungota', '055'], + ['Kuzma', '056'], + ['Lasko', '057'], + ['Lenart', '058'], + ['Lendava', '059'], + ['Litija', '060'], + ['Ljubljana', '061'], + ['Ljubno', '062'], + ['Ljutomer', '063'], + ['Log-Dragomer', '208'], + ['Logatec', '064'], + ['Loska Dolina', '065'], + ['Loski Potok', '066'], + ['Lovrenc na Pohorju', '167'], + ['Lukovica', '068'], + ['Luce', '067'], + ['Majsperk', '069'], + ['Makole', '198'], + ['Maribor', '070'], + ['Markovci', '168'], + ['Medvode', '071'], + ['Menges', '072'], + ['Metlika', '073'], + ['Mezica', '074'], + ['Miklavz na Dravskem Polju', '169'], + ['Miren-Kostanjevica', '075'], + ['Mirna', '212'], + ['Mirna Pec', '170'], + ['Mislinja', '076'], + ['Mokronog-Trebelno', '199'], + ['Moravce', '077'], + ['Moravske Toplice', '078'], + ['Mozirje', '079'], + ['Murska Sobota', '080'], + ['Naklo', '082'], + ['Nazarje', '083'], + ['Nova Gorica', '084'], + ['Novo Mesto', '085'], + ['Odranci', '086'], + ['Ormoz', '087'], + ['Osilnica', '088'], + ['Pesnica', '089'], + ['Piran', '090'], + ['Pivka', '091'], + ['Podcetrtek', '092'], + ['Podlehnik', '172'], + ['Podvelka', '093'], + ['Poljcane', '200'], + ['Postojna', '094'], + ['Prebold', '174'], + ['Preddvor', '095'], + ['Prevalje', '175'], + ['Ptuj', '096'], + ['Race-Fram', '098'], + ['Radece', '099'], + ['Radenci', '100'], + ['Radlje ob Dravi', '101'], + ['Radovljica', '102'], + ['Ravne na Koroskem', '103'], + ['Razkrizje', '176'], + ['Recica ob Savinji', '209'], + ['Rence-Vogrsko', '201'], + ['Ribnica', '104'], + ['Ribnica na Poboriu', '177'], + ['Rogaska Slatina', '106'], + ['Rogasovci', '105'], + ['Rogatec', '107'], + ['Ruse', '108'], + ['Salovci', '033'], + ['Selnica ob Dravi', '178'], + ['Semic', '109'], + ['Sempeter-Vrtojba', '183'], + ['Sencur', '117'], + ['Sentilj', '118'], + ['Sentjernej', '119'], + ['Sentjur', '120'], + ['Sentrupert', '211'], + ['Sevnica', '110'], + ['Sezana', '111'], + ['Skocjan', '121'], + ['Skofja Loka', '122'], + ['Skofljica', '123'], + ['Slovenj Gradec', '112'], + ['Slovenska Bistrica', '113'], + ['Slovenske Konjice', '114'], + ['Smarje pri elsah', '124'], + ['Smarjeske Toplice', '206'], + ['Smartno ob Paki', '125'], + ['Smartno pri Litiji', '194'], + ['Sodrazica', '179'], + ['Solcava', '180'], + ['Sostanj', '126'], + ['Sredisce ob Dravi', '202'], + ['Starse', '115'], + ['Store', '127'], + ['Straza', '203'], + ['Sveta Ana', '181'], + ['Sveta Trojica v Slovenskih Goricah', '204'], + ['Sveta Andraz v Slovenskih Goricah', '182'], + ['Sveti Jurij', '116'], + ['Sveti Jurij v Slovenskih Goricah', '210'], + ['Sveti Tomaz', '205'], + ['Tabor', '184'], + ['Tisina', '010'], + ['Tolmin', '128'], + ['Trbovlje', '129'], + ['Trebnje', '130'], + ['Trnovska Vas', '185'], + ['Trzin', '186'], + ['Trzic', '131'], + ['Turnisce', '132'], + ['Velenje', '133'], + ['Velika Polana', '187'], + ['Velike Lasce', '134'], + ['Verzej', '188'], + ['Videm', '135'], + ['Vipava', '136'], + ['Vitanje', '137'], + ['Vodice', '138'], + ['Vojnik', '139'], + ['Vransko', '189'], + ['Vrhnika', '140'], + ['Vuzenica', '141'], + ['Zagorje ob Savi', '142'], + ['Zavrc', '143'], + ['Zrece', '144'], + ['Zalec', '190'], + ['Zelezniki', '146'], + ['Zetale', '191'], + ['Ziri', '147'], + ['Zirovnica', '192'], + ['Zuzemberk', '193'], + ], ]; export const SB = [ - "Solomon Islands", - "SB", - [ - ["Central", "CE"], - ["Choiseul", "CH"], - ["Guadalcanal", "GU"], - ["Honiara", "CT"], - ["Isabel", "IS"], - ["Makira-Ulawa", "MK"], - ["Malaita", "ML"], - ["Rennell and Bellona", "RB"], - ["Temotu", "TE"], - ["Western", "WE"], - ], + 'Solomon Islands', + 'SB', + [ + ['Central', 'CE'], + ['Choiseul', 'CH'], + ['Guadalcanal', 'GU'], + ['Honiara', 'CT'], + ['Isabel', 'IS'], + ['Makira-Ulawa', 'MK'], + ['Malaita', 'ML'], + ['Rennell and Bellona', 'RB'], + ['Temotu', 'TE'], + ['Western', 'WE'], + ], ]; export const SO = [ - "Somalia", - "SO", - [ - ["Awdal", "AW"], - ["Bakool", "BK"], - ["Banaadir", "BN"], - ["Bari", "BR"], - ["Bay", "BY"], - ["Galguduud", "GA"], - ["Gedo", "GE"], - ["Hiiraan", "HI"], - ["Jubbada Dhexe", "JD"], - ["Jubbada Hoose", "JH"], - ["Mudug", "MU"], - ["Nugaal", "NU"], - ["Sanaag", "SA"], - ["Shabeellaha Dhexe", "SD"], - ["Shabeellaha Hoose", "SH"], - ["Sool", "SO"], - ["Togdheer", "TO"], - ["Woqooyi Galbeed", "WO"], - ], + 'Somalia', + 'SO', + [ + ['Awdal', 'AW'], + ['Bakool', 'BK'], + ['Banaadir', 'BN'], + ['Bari', 'BR'], + ['Bay', 'BY'], + ['Galguduud', 'GA'], + ['Gedo', 'GE'], + ['Hiiraan', 'HI'], + ['Jubbada Dhexe', 'JD'], + ['Jubbada Hoose', 'JH'], + ['Mudug', 'MU'], + ['Nugaal', 'NU'], + ['Sanaag', 'SA'], + ['Shabeellaha Dhexe', 'SD'], + ['Shabeellaha Hoose', 'SH'], + ['Sool', 'SO'], + ['Togdheer', 'TO'], + ['Woqooyi Galbeed', 'WO'], + ], ]; export const ZA = [ - "South Africa", - "ZA", - [ - ["Eastern Cape", "EC"], - ["Free State", "FS"], - ["Gauteng", "GT"], - ["KwaZulu-Natal", "NL"], - ["Limpopo", "LP"], - ["Mpumalanga", "MP"], - ["Northern Cape", "NC"], - ["North West", "NW"], - ["Western Cape", "WC"], - ], + 'South Africa', + 'ZA', + [ + ['Eastern Cape', 'EC'], + ['Free State', 'FS'], + ['Gauteng', 'GT'], + ['KwaZulu-Natal', 'NL'], + ['Limpopo', 'LP'], + ['Mpumalanga', 'MP'], + ['Northern Cape', 'NC'], + ['North West', 'NW'], + ['Western Cape', 'WC'], + ], ]; export const GS = [ - "South Georgia and South Sandwich Islands", - "GS", - [ - ["Bird Island", "undefined"], - ["Bristol Island", "undefined"], - ["Clerke Rocks", "undefined"], - ["Montagu Island", "undefined"], - ["Saunders Island", "undefined"], - ["South Georgia", "undefined"], - ["Southern Thule", "undefined"], - ["Traversay Islands", "undefined"], - ], + 'South Georgia and South Sandwich Islands', + 'GS', + [ + ['Bird Island', undefined], + ['Bristol Island', undefined], + ['Clerke Rocks', undefined], + ['Montagu Island', undefined], + ['Saunders Island', undefined], + ['South Georgia', undefined], + ['Southern Thule', undefined], + ['Traversay Islands', undefined], + ], ]; export const SS = [ - "South Sudan", - "SS", - [ - ["Central Equatoria", "CE"], - ["Eastern Equatoria", "EE"], - ["Jonglei", "JG"], - ["Lakes", "LK"], - ["Northern Bahr el Ghazal", "BN"], - ["Unity", "UY"], - ["Upper Nile", "NU"], - ["Warrap", "WR"], - ["Western Bahr el Ghazal", "BW"], - ["Western Equatoria", "EW"], - ], + 'South Sudan', + 'SS', + [ + ['Central Equatoria', 'CE'], + ['Eastern Equatoria', 'EE'], + ['Jonglei', 'JG'], + ['Lakes', 'LK'], + ['Northern Bahr el Ghazal', 'BN'], + ['Unity', 'UY'], + ['Upper Nile', 'NU'], + ['Warrap', 'WR'], + ['Western Bahr el Ghazal', 'BW'], + ['Western Equatoria', 'EW'], + ], ]; export const ES = [ - "Spain", - "ES", - [ - ["Andalucìa", "AN"], - ["Albacete", "AB"], - ["Alicante", "A"], - ["Almería", "AL"], - ["Araba/Álava", "VI"], - ["Asturias", "O"], - ["Ávila", "AV"], - ["Aragòn", "AR"], - ["Badajoz", "BA"], - ["Barcelona", "B"], - ["Bizkaia", "BI"], - ["Burgos", "BU"], - ["Cáceres", "CC"], - ["Cádiz", "CA"], - ["Canarias", "CN"], - ["Cantabria", "S"], - ["Castellón/Castelló", "CS"], - ["Ceuta", "CE"], - ["Ciudad Real", "CR"], - ["Córdoba", "CO"], - ["A Coruña", "C"], - ["Cuenca", "CU"], - ["Gipuzkoa", "SS"], - ["Girona", "GI"], - ["Granada", "GR"], - ["Guadalajara", "GU"], - ["Huelva", "H"], - ["Huesca", "HU"], - ["Illes Balears", "PM"], - ["Jaén", "J"], - ["León", "LE"], - ["Lleida", "L"], - ["Lugo", "LU"], - ["Madrid", "M"], - ["Málaga", "MA"], - ["Melilla", "ML"], - ["Murcia", "MU"], - ["Navarra/Nafarroa", "NA"], - ["Ourense", "OR"], - ["Palencia", "P"], - ["Las Palmas", "GC"], - ["Pontevedra", "PO"], - ["La Rioja", "LO"], - ["Salamanca", "SA"], - ["Santa Cruz de Tenerife", "TF"], - ["Segovia", "SG"], - ["Sevilla", "SE"], - ["Soria", "SO"], - ["Tarragona", "T"], - ["Teruel", "TE"], - ["Toledo", "TO"], - ["Valencia/València", "V"], - ["Valladolid", "VA"], - ["Zamora", "ZA"], - ["Zaragoza", "Z"], - ], + 'Spain', + 'ES', + [ + ['Andalucìa', 'AN'], + ['Albacete', 'AB'], + ['Alicante', 'A'], + ['Almería', 'AL'], + ['Araba/Álava', 'VI'], + ['Asturias', 'O'], + ['Ávila', 'AV'], + ['Aragòn', 'AR'], + ['Badajoz', 'BA'], + ['Barcelona', 'B'], + ['Bizkaia', 'BI'], + ['Burgos', 'BU'], + ['Cáceres', 'CC'], + ['Cádiz', 'CA'], + ['Canarias', 'CN'], + ['Cantabria', 'S'], + ['Castellón/Castelló', 'CS'], + ['Ceuta', 'CE'], + ['Ciudad Real', 'CR'], + ['Córdoba', 'CO'], + ['A Coruña', 'C'], + ['Cuenca', 'CU'], + ['Gipuzkoa', 'SS'], + ['Girona', 'GI'], + ['Granada', 'GR'], + ['Guadalajara', 'GU'], + ['Huelva', 'H'], + ['Huesca', 'HU'], + ['Illes Balears', 'PM'], + ['Jaén', 'J'], + ['León', 'LE'], + ['Lleida', 'L'], + ['Lugo', 'LU'], + ['Madrid', 'M'], + ['Málaga', 'MA'], + ['Melilla', 'ML'], + ['Murcia', 'MU'], + ['Navarra/Nafarroa', 'NA'], + ['Ourense', 'OR'], + ['Palencia', 'P'], + ['Las Palmas', 'GC'], + ['Pontevedra', 'PO'], + ['La Rioja', 'LO'], + ['Salamanca', 'SA'], + ['Santa Cruz de Tenerife', 'TF'], + ['Segovia', 'SG'], + ['Sevilla', 'SE'], + ['Soria', 'SO'], + ['Tarragona', 'T'], + ['Teruel', 'TE'], + ['Toledo', 'TO'], + ['Valencia/València', 'V'], + ['Valladolid', 'VA'], + ['Zamora', 'ZA'], + ['Zaragoza', 'Z'], + ], ]; export const LK = [ - "Sri Lanka", - "LK", - [ - ["Basnahira", "1"], - ["Dakunu", "3"], - ["Madhyama", "2"], - ["Naegenahira", "5"], - ["Sabaragamuwa", "9"], - ["Uturu", "4"], - ["Uturumaeda", "7"], - ["Vayamba", "6"], - ["Uva", "8"], - ], + 'Sri Lanka', + 'LK', + [ + ['Basnahira', '1'], + ['Dakunu', '3'], + ['Madhyama', '2'], + ['Naegenahira', '5'], + ['Sabaragamuwa', '9'], + ['Uturu', '4'], + ['Uturumaeda', '7'], + ['Vayamba', '6'], + ['Uva', '8'], + ], ]; export const SD = [ - "Sudan", - "SD", - [ - ["Al Bahr al Ahmar", "RS"], - ["Al Jazirah", "GZ"], - ["Al Khartum", "KH"], - ["Al Qadarif", "GD"], - ["An Nil al Abyad", "NW"], - ["An Nil al Azraq", "NB"], - ["Ash Shamaliyah", "NO"], - ["Gharb Darfur", "DW"], - ["Gharb Kurdufan", "GK"], - ["Janub Darfur", "DS"], - ["Janub Kurdufan", "KS"], - ["Kassala", "KA"], - ["Nahr an Nil", "NR"], - ["Shamal Darfur", "DN"], - ["Sharq Darfur", "DE"], - ["Shiamal Kurdufan", "KN"], - ["Sinnar", "SI"], - ["Wasat Darfur Zalinjay", "DC"], - ], + 'Sudan', + 'SD', + [ + ['Al Bahr al Ahmar', 'RS'], + ['Al Jazirah', 'GZ'], + ['Al Khartum', 'KH'], + ['Al Qadarif', 'GD'], + ['An Nil al Abyad', 'NW'], + ['An Nil al Azraq', 'NB'], + ['Ash Shamaliyah', 'NO'], + ['Gharb Darfur', 'DW'], + ['Gharb Kurdufan', 'GK'], + ['Janub Darfur', 'DS'], + ['Janub Kurdufan', 'KS'], + ['Kassala', 'KA'], + ['Nahr an Nil', 'NR'], + ['Shamal Darfur', 'DN'], + ['Sharq Darfur', 'DE'], + ['Shiamal Kurdufan', 'KN'], + ['Sinnar', 'SI'], + ['Wasat Darfur Zalinjay', 'DC'], + ], ]; export const SR = [ - "Suriname", - "SR", - [ - ["Brokopondo", "BR"], - ["Commewijne", "CM"], - ["Coronie", "CR"], - ["Marowijne", "MA"], - ["Nickerie", "NI"], - ["Para", "PR"], - ["Paramaribo", "PM"], - ["Saramacca", "SA"], - ["Sipaliwini", "SI"], - ["Wanica", "WA"], - ], + 'Suriname', + 'SR', + [ + ['Brokopondo', 'BR'], + ['Commewijne', 'CM'], + ['Coronie', 'CR'], + ['Marowijne', 'MA'], + ['Nickerie', 'NI'], + ['Para', 'PR'], + ['Paramaribo', 'PM'], + ['Saramacca', 'SA'], + ['Sipaliwini', 'SI'], + ['Wanica', 'WA'], + ], ]; export const SZ = [ - "Eswatini", - "SZ", - [ - ["Hhohho", "HH"], - ["Lubombo", "LU"], - ["Manzini", "MA"], - ["Shiselweni", "SH"], - ], + 'Eswatini', + 'SZ', + [ + ['Hhohho', 'HH'], + ['Lubombo', 'LU'], + ['Manzini', 'MA'], + ['Shiselweni', 'SH'], + ], ]; export const SE = [ - "Sweden", - "SE", - [ - ["Blekinge", "K"], - ["Dalarna", "W"], - ["Gävleborg", "X"], - ["Gotland", "I"], - ["Halland", "N"], - ["Jämtland", "Z"], - ["Jönköping", "F"], - ["Kalmar", "H"], - ["Kronoberg", "G"], - ["Norrbotten", "BD"], - ["Örebro", "T"], - ["Östergötland", "E"], - ["Skåne", "M"], - ["Södermanland", "D"], - ["Stockholm", "AB"], - ["Uppsala", "C"], - ["Värmland", "S"], - ["Västerbotten", "AC"], - ["Västernorrland", "Y"], - ["Västmanland", "U"], - ["Västra Götaland", "O"], - ], + 'Sweden', + 'SE', + [ + ['Blekinge', 'K'], + ['Dalarna', 'W'], + ['Gävleborg', 'X'], + ['Gotland', 'I'], + ['Halland', 'N'], + ['Jämtland', 'Z'], + ['Jönköping', 'F'], + ['Kalmar', 'H'], + ['Kronoberg', 'G'], + ['Norrbotten', 'BD'], + ['Örebro', 'T'], + ['Östergötland', 'E'], + ['Skåne', 'M'], + ['Södermanland', 'D'], + ['Stockholm', 'AB'], + ['Uppsala', 'C'], + ['Värmland', 'S'], + ['Västerbotten', 'AC'], + ['Västernorrland', 'Y'], + ['Västmanland', 'U'], + ['Västra Götaland', 'O'], + ], ]; export const CH = [ - "Switzerland", - "CH", - [ - ["Aargau", "AG"], - ["Appenzell Ausserrhoden", "AR"], - ["Appenzell Innerhoden", "AI"], - ["Basel-Landschaft", "BL"], - ["Basel-Stadt", "BS"], - ["Bern", "BE"], - ["Fribourg", "FR"], - ["Genève", "GE"], - ["Glarus", "GL"], - ["Graubünden", "GR"], - ["Jura", "JU"], - ["Luzern", "LU"], - ["Neuchâtel", "NE"], - ["Nidwalden", "NW"], - ["Obwalden", "OW"], - ["Sankt Gallen", "SG"], - ["Schaffhausen", "SH"], - ["Schwyz", "SZ"], - ["Solothurn", "SO"], - ["Thurgau", "TG"], - ["Ticino", "TI"], - ["Uri", "UR"], - ["Valais", "VS"], - ["Vaud", "VD"], - ["Zug", "ZG"], - ["Zürich", "ZH"], - ], + 'Switzerland', + 'CH', + [ + ['Aargau', 'AG'], + ['Appenzell Ausserrhoden', 'AR'], + ['Appenzell Innerhoden', 'AI'], + ['Basel-Landschaft', 'BL'], + ['Basel-Stadt', 'BS'], + ['Bern', 'BE'], + ['Fribourg', 'FR'], + ['Genève', 'GE'], + ['Glarus', 'GL'], + ['Graubünden', 'GR'], + ['Jura', 'JU'], + ['Luzern', 'LU'], + ['Neuchâtel', 'NE'], + ['Nidwalden', 'NW'], + ['Obwalden', 'OW'], + ['Sankt Gallen', 'SG'], + ['Schaffhausen', 'SH'], + ['Schwyz', 'SZ'], + ['Solothurn', 'SO'], + ['Thurgau', 'TG'], + ['Ticino', 'TI'], + ['Uri', 'UR'], + ['Valais', 'VS'], + ['Vaud', 'VD'], + ['Zug', 'ZG'], + ['Zürich', 'ZH'], + ], ]; export const SY = [ - "Syrian Arab Republic", - "SY", - [ - ["Al Hasakah", "HA"], - ["Al Ladhiqiyah", "LA"], - ["Al Qunaytirah", "QU"], - ["Ar Raqqah", "RA"], - ["As Suwayda'", "SU"], - ["Dar'a", "DR"], - ["Dayr az Zawr", "DY"], - ["Dimashq", "DI"], - ["Halab", "HL"], - ["Hamah", "HM"], - ["Hims", "HI"], - ["Idlib", "ID"], - ["Rif Dimashq", "RD"], - ["Tartus", "TA"], - ], + 'Syrian Arab Republic', + 'SY', + [ + ['Al Hasakah', 'HA'], + ['Al Ladhiqiyah', 'LA'], + ['Al Qunaytirah', 'QU'], + ['Ar Raqqah', 'RA'], + ["As Suwayda'", 'SU'], + ["Dar'a", 'DR'], + ['Dayr az Zawr', 'DY'], + ['Dimashq', 'DI'], + ['Halab', 'HL'], + ['Hamah', 'HM'], + ['Hims', 'HI'], + ['Idlib', 'ID'], + ['Rif Dimashq', 'RD'], + ['Tartus', 'TA'], + ], ]; export const TW = [ - "Taiwan", - "TW", - [ - ["Changhua", "CHA"], - ["Chiayi", "CYQ"], - ["Hsinchu", "HSQ"], - ["Hualien", "HUA"], - ["Kaohsiung", "KHH"], - ["Keelung", "KEE"], - ["Kinmen", "KIN"], - ["Lienchiang", "LIE"], - ["Miaoli", "MIA"], - ["Nantou", "NAN"], - ["Penghu", "PEN"], - ["New Taipei", "NWT"], - ["Pingtung", "PIF"], - ["Taichung", "TXG"], - ["Tainan", "TNN"], - ["Taipei", "TPE"], - ["Taitung", "TTT"], - ["Taoyuan", "TAO"], - ["Yilan", "ILA"], - ["Yunlin", "YUN"], - ], + 'Taiwan', + 'TW', + [ + ['Changhua', 'CHA'], + ['Chiayi', 'CYQ'], + ['Hsinchu', 'HSQ'], + ['Hualien', 'HUA'], + ['Kaohsiung', 'KHH'], + ['Keelung', 'KEE'], + ['Kinmen', 'KIN'], + ['Lienchiang', 'LIE'], + ['Miaoli', 'MIA'], + ['Nantou', 'NAN'], + ['Penghu', 'PEN'], + ['New Taipei', 'NWT'], + ['Pingtung', 'PIF'], + ['Taichung', 'TXG'], + ['Tainan', 'TNN'], + ['Taipei', 'TPE'], + ['Taitung', 'TTT'], + ['Taoyuan', 'TAO'], + ['Yilan', 'ILA'], + ['Yunlin', 'YUN'], + ], ]; export const TJ = [ - "Tajikistan", - "TJ", - [ - ["Dushanbe", "DU"], - ["Kŭhistoni Badakhshon", "GB"], - ["Khatlon", "KT"], - ["Sughd", "SU"], - ], + 'Tajikistan', + 'TJ', + [ + ['Dushanbe', 'DU'], + ['Kŭhistoni Badakhshon', 'GB'], + ['Khatlon', 'KT'], + ['Sughd', 'SU'], + ], ]; export const TZ = [ - "Tanzania, United Republic of", - "TZ", - [ - ["Arusha", "01"], - ["Coast", "19"], - ["Dar es Salaam", "02"], - ["Dodoma", "03"], - ["Iringa", "04"], - ["Kagera", "05"], - ["Kigoma", "08"], - ["Kilimanjaro", "09"], - ["Lindi", "12"], - ["Manyara", "26"], - ["Mara", "13"], - ["Mbeya", "14"], - ["Morogoro", "16"], - ["Mtwara", "17"], - ["Mwanza", "18"], - ["Pemba North", "06"], - ["Pemba South", "10"], - ["Rukwa", "20"], - ["Ruvuma", "21"], - ["Shinyanga", "22"], - ["Singida", "23"], - ["Tabora", "24"], - ["Tanga", "25"], - ["Zanzibar North", "07"], - ["Zanzibar Central/South", "11"], - ["Zanzibar Urban/West", "15"], - ], + 'Tanzania, United Republic of', + 'TZ', + [ + ['Arusha', '01'], + ['Coast', '19'], + ['Dar es Salaam', '02'], + ['Dodoma', '03'], + ['Iringa', '04'], + ['Kagera', '05'], + ['Kigoma', '08'], + ['Kilimanjaro', '09'], + ['Lindi', '12'], + ['Manyara', '26'], + ['Mara', '13'], + ['Mbeya', '14'], + ['Morogoro', '16'], + ['Mtwara', '17'], + ['Mwanza', '18'], + ['Pemba North', '06'], + ['Pemba South', '10'], + ['Rukwa', '20'], + ['Ruvuma', '21'], + ['Shinyanga', '22'], + ['Singida', '23'], + ['Tabora', '24'], + ['Tanga', '25'], + ['Zanzibar North', '07'], + ['Zanzibar Central/South', '11'], + ['Zanzibar Urban/West', '15'], + ], ]; export const TH = [ - "Thailand", - "TH", - [ - ["Amnat Charoen", "37"], - ["Ang Thong", "15"], - ["Bueng Kan", "38"], - ["Buri Ram", "31"], - ["Chachoengsao", "24"], - ["Chai Nat", "18"], - ["Chaiyaphum", "36"], - ["Chanthaburi", "22"], - ["Chiang Mai", "50"], - ["Chiang Rai", "57"], - ["Chon Buri", "20"], - ["Chumphon", "86"], - ["Kalasin", "46"], - ["Kamphaeng Phet", "62"], - ["Kanchanaburi", "71"], - ["Khon Kaen", "40"], - ["Krabi", "81"], - ["Krung Thep Mahanakhon (Bangkok)", "10"], - ["Lampang", "52"], - ["Lamphun", "51"], - ["Loei", "42"], - ["Lop Buri", "16"], - ["Mae Hong Son", "58"], - ["Maha Sarakham", "44"], - ["Mukdahan", "49"], - ["Nakhon Nayok", "26"], - ["Nakhon Phathom", "73"], - ["Nakhon Phanom", "48"], - ["Nakhon Ratchasima", "30"], - ["Nakhon Sawan", "60"], - ["Nakhon Si Thammarat", "80"], - ["Nan", "55"], - ["Narathiwat", "96"], - ["Nong Bua Lam Phu", "39"], - ["Nong Khai", "43"], - ["Nonthaburi", "12"], - ["Pathum Thani", "13"], - ["Pattani", "94"], - ["Phangnga", "82"], - ["Phatthalung", "93"], - ["Phayao", "56"], - ["Phetchabun", "67"], - ["Phetchaburi", "76"], - ["Phichit", "66"], - ["Phitsanulok", "65"], - ["Phra Nakhon Si Ayutthaya", "14"], - ["Phrae", "54"], - ["Phuket", "83"], - ["Prachin Buri", "25"], - ["Prachuap Khiri Khan", "77"], - ["Ranong", "85"], - ["Ratchaburi", "70"], - ["Rayong", "21"], - ["Roi Et", "45"], - ["Sa Kaeo", "27"], - ["Sakon Nakhon", "47"], - ["Samut Prakan", "11"], - ["Samut Sakhon", "74"], - ["Samut Songkhram", "75"], - ["Saraburi", "19"], - ["Satun", "91"], - ["Sing Buri", "17"], - ["Si Sa ket", "33"], - ["Songkhla", "90"], - ["Sukhothai", "64"], - ["Suphan Buri", "72"], - ["Surat Thani", "84"], - ["Surin", "32"], - ["Tak", "63"], - ["Trang", "92"], - ["Trat", "23"], - ["Ubon Ratchathani", "34"], - ["Udon Thani", "41"], - ["Uthai Thani", "61"], - ["Uttaradit", "53"], - ["Yala", "95"], - ["Yasothon", "35"], - ], + 'Thailand', + 'TH', + [ + ['Amnat Charoen', '37'], + ['Ang Thong', '15'], + ['Bueng Kan', '38'], + ['Buri Ram', '31'], + ['Chachoengsao', '24'], + ['Chai Nat', '18'], + ['Chaiyaphum', '36'], + ['Chanthaburi', '22'], + ['Chiang Mai', '50'], + ['Chiang Rai', '57'], + ['Chon Buri', '20'], + ['Chumphon', '86'], + ['Kalasin', '46'], + ['Kamphaeng Phet', '62'], + ['Kanchanaburi', '71'], + ['Khon Kaen', '40'], + ['Krabi', '81'], + ['Krung Thep Mahanakhon (Bangkok)', '10'], + ['Lampang', '52'], + ['Lamphun', '51'], + ['Loei', '42'], + ['Lop Buri', '16'], + ['Mae Hong Son', '58'], + ['Maha Sarakham', '44'], + ['Mukdahan', '49'], + ['Nakhon Nayok', '26'], + ['Nakhon Phathom', '73'], + ['Nakhon Phanom', '48'], + ['Nakhon Ratchasima', '30'], + ['Nakhon Sawan', '60'], + ['Nakhon Si Thammarat', '80'], + ['Nan', '55'], + ['Narathiwat', '96'], + ['Nong Bua Lam Phu', '39'], + ['Nong Khai', '43'], + ['Nonthaburi', '12'], + ['Pathum Thani', '13'], + ['Pattani', '94'], + ['Phangnga', '82'], + ['Phatthalung', '93'], + ['Phayao', '56'], + ['Phetchabun', '67'], + ['Phetchaburi', '76'], + ['Phichit', '66'], + ['Phitsanulok', '65'], + ['Phra Nakhon Si Ayutthaya', '14'], + ['Phrae', '54'], + ['Phuket', '83'], + ['Prachin Buri', '25'], + ['Prachuap Khiri Khan', '77'], + ['Ranong', '85'], + ['Ratchaburi', '70'], + ['Rayong', '21'], + ['Roi Et', '45'], + ['Sa Kaeo', '27'], + ['Sakon Nakhon', '47'], + ['Samut Prakan', '11'], + ['Samut Sakhon', '74'], + ['Samut Songkhram', '75'], + ['Saraburi', '19'], + ['Satun', '91'], + ['Sing Buri', '17'], + ['Si Sa ket', '33'], + ['Songkhla', '90'], + ['Sukhothai', '64'], + ['Suphan Buri', '72'], + ['Surat Thani', '84'], + ['Surin', '32'], + ['Tak', '63'], + ['Trang', '92'], + ['Trat', '23'], + ['Ubon Ratchathani', '34'], + ['Udon Thani', '41'], + ['Uthai Thani', '61'], + ['Uttaradit', '53'], + ['Yala', '95'], + ['Yasothon', '35'], + ], ]; export const TL = [ - "Timor-Leste", - "TL", - [ - ["Aileu", "AL"], - ["Ainaro", "AN"], - ["Baucau", "BA"], - ["Bobonaro", "BO"], - ["Cova Lima", "CO"], - ["Dili", "DI"], - ["Ermera", "ER"], - ["Lautem", "LA"], - ["Liquica", "LI"], - ["Manatuto", "MT"], - ["Manufahi", "MF"], - ["Oecussi", "OE"], - ["Viqueque", "VI"], - ], + 'Timor-Leste', + 'TL', + [ + ['Aileu', 'AL'], + ['Ainaro', 'AN'], + ['Baucau', 'BA'], + ['Bobonaro', 'BO'], + ['Cova Lima', 'CO'], + ['Dili', 'DI'], + ['Ermera', 'ER'], + ['Lautem', 'LA'], + ['Liquica', 'LI'], + ['Manatuto', 'MT'], + ['Manufahi', 'MF'], + ['Oecussi', 'OE'], + ['Viqueque', 'VI'], + ], ]; export const TG = [ - "Togo", - "TG", - [ - ["Centre", "C"], - ["Kara", "K"], - ["Maritime", "M"], - ["Plateaux", "P"], - ["Savannes", "S"], - ], + 'Togo', + 'TG', + [ + ['Centre', 'C'], + ['Kara', 'K'], + ['Maritime', 'M'], + ['Plateaux', 'P'], + ['Savannes', 'S'], + ], ]; export const TK = [ - "Tokelau", - "TK", - [ - ["Atafu", "undefined"], - ["Fakaofo", "undefined"], - ["Nukunonu", "undefined"], - ], + 'Tokelau', + 'TK', + [ + ['Atafu', undefined], + ['Fakaofo', undefined], + ['Nukunonu', undefined], + ], ]; export const TO = [ - "Tonga", - "TO", - [ - ["'Eua", "01"], - ["Ha'apai", "02"], - ["Niuas", "03"], - ["Tongatapu", "04"], - ["Vava'u", "05"], - ], + 'Tonga', + 'TO', + [ + ["'Eua", '01'], + ["Ha'apai", '02'], + ['Niuas', '03'], + ['Tongatapu', '04'], + ["Vava'u", '05'], + ], ]; export const TT = [ - "Trinidad and Tobago", - "TT", - [ - ["Arima", "ARI"], - ["Chaguanas", "CHA"], - ["Couva-Tabaquite-Talparo", "CTT"], - ["Diefo Martin", "DMN"], - ["Mayaro-Rio Claro", "MRC"], - ["Penal-Debe", "PED"], - ["Point Fortin", "PTF"], - ["Port-of-Spain", "POS"], - ["Princes Town", "PRT"], - ["San Fernando", "SFO"], - ["San Juan-Laventille", "SJL"], - ["Sangre Grande", "SGE"], - ["Siparia", "SIP"], - ["Tobago", "TOB"], - ["Tunapuna-Piarco", "TUP"], - ], + 'Trinidad and Tobago', + 'TT', + [ + ['Arima', 'ARI'], + ['Chaguanas', 'CHA'], + ['Couva-Tabaquite-Talparo', 'CTT'], + ['Diefo Martin', 'DMN'], + ['Mayaro-Rio Claro', 'MRC'], + ['Penal-Debe', 'PED'], + ['Point Fortin', 'PTF'], + ['Port-of-Spain', 'POS'], + ['Princes Town', 'PRT'], + ['San Fernando', 'SFO'], + ['San Juan-Laventille', 'SJL'], + ['Sangre Grande', 'SGE'], + ['Siparia', 'SIP'], + ['Tobago', 'TOB'], + ['Tunapuna-Piarco', 'TUP'], + ], ]; export const TN = [ - "Tunisia", - "TN", - [ - ["Ariana", "12"], - ["Beja", "31"], - ["Ben Arous", "13"], - ["Bizerte", "23"], - ["Gabes", "81"], - ["Gafsa", "71"], - ["Jendouba", "32"], - ["Kairouan", "41"], - ["Kasserine", "42"], - ["Kebili", "73"], - ["Kef", "33"], - ["Mahdia", "53"], - ["Medenine", "82"], - ["Monastir", "52"], - ["Nabeul", "21"], - ["Sfax", "61"], - ["Sidi Bouzid", "43"], - ["Siliana", "34"], - ["Sousse", "51"], - ["Tataouine", "83"], - ["Tozeur", "72"], - ["Tunis", "11"], - ["Zaghouan", "22"], - ], + 'Tunisia', + 'TN', + [ + ['Ariana', '12'], + ['Beja', '31'], + ['Ben Arous', '13'], + ['Bizerte', '23'], + ['Gabes', '81'], + ['Gafsa', '71'], + ['Jendouba', '32'], + ['Kairouan', '41'], + ['Kasserine', '42'], + ['Kebili', '73'], + ['Kef', '33'], + ['Mahdia', '53'], + ['Medenine', '82'], + ['Monastir', '52'], + ['Nabeul', '21'], + ['Sfax', '61'], + ['Sidi Bouzid', '43'], + ['Siliana', '34'], + ['Sousse', '51'], + ['Tataouine', '83'], + ['Tozeur', '72'], + ['Tunis', '11'], + ['Zaghouan', '22'], + ], ]; export const TR = [ - "Turkey", - "TR", - [ - ["Adana", "01"], - ["Adiyaman", "02"], - ["Afyonkarahisar", "03"], - ["Agri", "04"], - ["Aksaray", "68"], - ["Amasya", "05"], - ["Ankara", "06"], - ["Antalya", "07"], - ["Ardahan", "75"], - ["Artvin", "08"], - ["Aydin", "09"], - ["Balikesir", "10"], - ["Bartin", "74"], - ["Batman", "72"], - ["Bayburt", "69"], - ["Bilecik", "11"], - ["Bingol", "12"], - ["Bitlis", "13"], - ["Bolu", "14"], - ["Burdur", "15"], - ["Bursa", "16"], - ["Canakkale", "17"], - ["Cankiri", "18"], - ["Corum", "19"], - ["Denizli", "20"], - ["Diyarbakir", "21"], - ["Duzce", "81"], - ["Edirne", "22"], - ["Elazig", "23"], - ["Erzincan", "24"], - ["Erzurum", "25"], - ["Eskisehir", "26"], - ["Gaziantep", "27"], - ["Giresun", "28"], - ["Gumushane", "29"], - ["Hakkari", "30"], - ["Hatay", "31"], - ["Igdir", "76"], - ["Isparta", "32"], - ["Istanbul", "34"], - ["Izmir", "35"], - ["Kahramanmaras", "46"], - ["Karabuk", "78"], - ["Karaman", "70"], - ["Kars", "36"], - ["Kastamonu", "37"], - ["Kayseri", "38"], - ["Kilis", "79"], - ["Kirikkale", "71"], - ["Kirklareli", "39"], - ["Kirsehir", "40"], - ["Kocaeli", "41"], - ["Konya", "42"], - ["Kutahya", "43"], - ["Malatya", "44"], - ["Manisa", "45"], - ["Mardin", "47"], - ["Mersin", "33"], - ["Mugla", "48"], - ["Mus", "49"], - ["Nevsehir", "50"], - ["Nigde", "51"], - ["Ordu", "52"], - ["Osmaniye", "80"], - ["Rize", "53"], - ["Sakarya", "54"], - ["Samsun", "55"], - ["Sanliurfa", "63"], - ["Siirt", "56"], - ["Sinop", "57"], - ["Sirnak", "73"], - ["Sivas", "58"], - ["Tekirdag", "59"], - ["Tokat", "60"], - ["Trabzon", "61"], - ["Tunceli", "62"], - ["Usak", "64"], - ["Van", "65"], - ["Yalova", "77"], - ["Yozgat", "66"], - ["Zonguldak", "67"], - ], + 'Turkey', + 'TR', + [ + ['Adana', '01'], + ['Adiyaman', '02'], + ['Afyonkarahisar', '03'], + ['Agri', '04'], + ['Aksaray', '68'], + ['Amasya', '05'], + ['Ankara', '06'], + ['Antalya', '07'], + ['Ardahan', '75'], + ['Artvin', '08'], + ['Aydin', '09'], + ['Balikesir', '10'], + ['Bartin', '74'], + ['Batman', '72'], + ['Bayburt', '69'], + ['Bilecik', '11'], + ['Bingol', '12'], + ['Bitlis', '13'], + ['Bolu', '14'], + ['Burdur', '15'], + ['Bursa', '16'], + ['Canakkale', '17'], + ['Cankiri', '18'], + ['Corum', '19'], + ['Denizli', '20'], + ['Diyarbakir', '21'], + ['Duzce', '81'], + ['Edirne', '22'], + ['Elazig', '23'], + ['Erzincan', '24'], + ['Erzurum', '25'], + ['Eskisehir', '26'], + ['Gaziantep', '27'], + ['Giresun', '28'], + ['Gumushane', '29'], + ['Hakkari', '30'], + ['Hatay', '31'], + ['Igdir', '76'], + ['Isparta', '32'], + ['Istanbul', '34'], + ['Izmir', '35'], + ['Kahramanmaras', '46'], + ['Karabuk', '78'], + ['Karaman', '70'], + ['Kars', '36'], + ['Kastamonu', '37'], + ['Kayseri', '38'], + ['Kilis', '79'], + ['Kirikkale', '71'], + ['Kirklareli', '39'], + ['Kirsehir', '40'], + ['Kocaeli', '41'], + ['Konya', '42'], + ['Kutahya', '43'], + ['Malatya', '44'], + ['Manisa', '45'], + ['Mardin', '47'], + ['Mersin', '33'], + ['Mugla', '48'], + ['Mus', '49'], + ['Nevsehir', '50'], + ['Nigde', '51'], + ['Ordu', '52'], + ['Osmaniye', '80'], + ['Rize', '53'], + ['Sakarya', '54'], + ['Samsun', '55'], + ['Sanliurfa', '63'], + ['Siirt', '56'], + ['Sinop', '57'], + ['Sirnak', '73'], + ['Sivas', '58'], + ['Tekirdag', '59'], + ['Tokat', '60'], + ['Trabzon', '61'], + ['Tunceli', '62'], + ['Usak', '64'], + ['Van', '65'], + ['Yalova', '77'], + ['Yozgat', '66'], + ['Zonguldak', '67'], + ], ]; export const TM = [ - "Turkmenistan", - "TM", - [ - ["Ahal", "A"], - ["Asgabat", "S"], - ["Balkan", "B"], - ["Dashoguz", "D"], - ["Lebap", "L"], - ["Mary", "M"], - ], -]; -export const TC = [ - "Turks and Caicos Islands", - "TC", - [["Turks and Caicos Islands", "undefined"]], -]; + 'Turkmenistan', + 'TM', + [ + ['Ahal', 'A'], + ['Asgabat', 'S'], + ['Balkan', 'B'], + ['Dashoguz', 'D'], + ['Lebap', 'L'], + ['Mary', 'M'], + ], +]; +export const TC = ['Turks and Caicos Islands', 'TC', [['Turks and Caicos Islands', undefined]]]; export const TV = [ - "Tuvalu", - "TV", - [ - ["Funafuti", "FUN"], - ["Nanumanga", "NMG"], - ["Nanumea", "NMA"], - ["Niutao", "NIT"], - ["Nui", "NUI"], - ["Nukufetau", "NKF"], - ["Nukulaelae", "NKL"], - ["Vaitupu", "VAU"], - ], + 'Tuvalu', + 'TV', + [ + ['Funafuti', 'FUN'], + ['Nanumanga', 'NMG'], + ['Nanumea', 'NMA'], + ['Niutao', 'NIT'], + ['Nui', 'NUI'], + ['Nukufetau', 'NKF'], + ['Nukulaelae', 'NKL'], + ['Vaitupu', 'VAU'], + ], ]; export const UG = [ - "Uganda", - "UG", - [ - ["Abim", "317"], - ["Adjumani", "301"], - ["Amolatar", "314"], - ["Amuria", "216"], - ["Amuru", "319"], - ["Apac", "302"], - ["Arua", "303"], - ["Budaka", "217"], - ["Bududa", "223"], - ["Bugiri", "201"], - ["Bukedea", "224"], - ["Bukwa", "218"], - ["Buliisa", "419"], - ["Bundibugyo", "401"], - ["Bushenyi", "402"], - ["Busia", "202"], - ["Butaleja", "219"], - ["Dokolo", "318"], - ["Gulu", "304"], - ["Hoima", "403"], - ["Ibanda", "416"], - ["Iganga", "203"], - ["Isingiro", "417"], - ["Jinja", "204"], - ["Kaabong", "315"], - ["Kabale", "404"], - ["Kabarole", "405"], - ["Kaberamaido", "213"], - ["Kalangala", "101"], - ["Kaliro", "220"], - ["Kampala", "102"], - ["Kamuli", "205"], - ["Kamwenge", "413"], - ["Kanungu", "414"], - ["Kapchorwa", "206"], - ["Kasese", "406"], - ["Katakwi", "207"], - ["Kayunga", "112"], - ["Kibaale", "407"], - ["Kiboga", "103"], - ["Kiruhura", "418"], - ["Kisoro", "408"], - ["Kitgum", "305"], - ["Koboko", "316"], - ["Kotido", "306"], - ["Kumi", "208"], - ["Kyenjojo", "415"], - ["Lira", "307"], - ["Luwero", "104"], - ["Lyantonde", "116"], - ["Manafwa", "221"], - ["Maracha", "320"], - ["Masaka", "105"], - ["Masindi", "409"], - ["Mayuge", "214"], - ["Mbale", "209"], - ["Mbarara", "410"], - ["Mityana", "114"], - ["Moroto", "308"], - ["Moyo", "309"], - ["Mpigi", "106"], - ["Mubende", "107"], - ["Mukono", "108"], - ["Nakapiripirit", "311"], - ["Nakaseke", "115"], - ["Nakasongola", "109"], - ["Namutumba", "222"], - ["Nebbi", "310"], - ["Ntungamo", "411"], - ["Oyam", "321"], - ["Pader", "312"], - ["Pallisa", "210"], - ["Rakai", "110"], - ["Rukungiri", "412"], - ["Sembabule", "111"], - ["Sironko", "215"], - ["Soroti", "211"], - ["Tororo", "212"], - ["Wakiso", "113"], - ["Yumbe", "313"], - ], + 'Uganda', + 'UG', + [ + ['Abim', '317'], + ['Adjumani', '301'], + ['Amolatar', '314'], + ['Amuria', '216'], + ['Amuru', '319'], + ['Apac', '302'], + ['Arua', '303'], + ['Budaka', '217'], + ['Bududa', '223'], + ['Bugiri', '201'], + ['Bukedea', '224'], + ['Bukwa', '218'], + ['Buliisa', '419'], + ['Bundibugyo', '401'], + ['Bushenyi', '402'], + ['Busia', '202'], + ['Butaleja', '219'], + ['Dokolo', '318'], + ['Gulu', '304'], + ['Hoima', '403'], + ['Ibanda', '416'], + ['Iganga', '203'], + ['Isingiro', '417'], + ['Jinja', '204'], + ['Kaabong', '315'], + ['Kabale', '404'], + ['Kabarole', '405'], + ['Kaberamaido', '213'], + ['Kalangala', '101'], + ['Kaliro', '220'], + ['Kampala', '102'], + ['Kamuli', '205'], + ['Kamwenge', '413'], + ['Kanungu', '414'], + ['Kapchorwa', '206'], + ['Kasese', '406'], + ['Katakwi', '207'], + ['Kayunga', '112'], + ['Kibaale', '407'], + ['Kiboga', '103'], + ['Kiruhura', '418'], + ['Kisoro', '408'], + ['Kitgum', '305'], + ['Koboko', '316'], + ['Kotido', '306'], + ['Kumi', '208'], + ['Kyenjojo', '415'], + ['Lira', '307'], + ['Luwero', '104'], + ['Lyantonde', '116'], + ['Manafwa', '221'], + ['Maracha', '320'], + ['Masaka', '105'], + ['Masindi', '409'], + ['Mayuge', '214'], + ['Mbale', '209'], + ['Mbarara', '410'], + ['Mityana', '114'], + ['Moroto', '308'], + ['Moyo', '309'], + ['Mpigi', '106'], + ['Mubende', '107'], + ['Mukono', '108'], + ['Nakapiripirit', '311'], + ['Nakaseke', '115'], + ['Nakasongola', '109'], + ['Namutumba', '222'], + ['Nebbi', '310'], + ['Ntungamo', '411'], + ['Oyam', '321'], + ['Pader', '312'], + ['Pallisa', '210'], + ['Rakai', '110'], + ['Rukungiri', '412'], + ['Sembabule', '111'], + ['Sironko', '215'], + ['Soroti', '211'], + ['Tororo', '212'], + ['Wakiso', '113'], + ['Yumbe', '313'], + ], ]; export const UA = [ - "Ukraine", - "UA", - [ - ["Cherkaska oblast", "71"], - ["Chernihivska oblast", "74"], - ["Chernivetska oblast", "77"], - ["Dnipropetrovska oblast", "12"], - ["Donetska oblast", "14"], - ["Ivano-Frankivska oblast", "26"], - ["Kharkivska oblast", "63"], - ["Khersonska oblast", "65"], - ["Khmelnytska oblast", "68"], - ["Kyivska oblast", "32"], - ["Kirovohradska oblast", "35"], - ["Luhanska oblast", "09"], - ["Lvivska oblast", "46"], - ["Mykolaivska oblast", "48"], - ["Odeska oblast", "51"], - ["Poltavska oblast", "53"], - ["Rivnenska oblast", "56"], - ["Sumska oblast", "59"], - ["Ternopilska oblast", "61"], - ["Vinnytska oblast", "05"], - ["Volynska oblast", "07"], - ["Zakarpatska oblast", "21"], - ["Zaporizka oblast", "23"], - ["Zhytomyrska oblast", "18"], - ["Avtonomna Respublika Krym", "43"], - ["Kyiv", "30"], - ["Sevastopol", "40"], - ], + 'Ukraine', + 'UA', + [ + ['Cherkaska oblast', '71'], + ['Chernihivska oblast', '74'], + ['Chernivetska oblast', '77'], + ['Dnipropetrovska oblast', '12'], + ['Donetska oblast', '14'], + ['Ivano-Frankivska oblast', '26'], + ['Kharkivska oblast', '63'], + ['Khersonska oblast', '65'], + ['Khmelnytska oblast', '68'], + ['Kyivska oblast', '32'], + ['Kirovohradska oblast', '35'], + ['Luhanska oblast', '09'], + ['Lvivska oblast', '46'], + ['Mykolaivska oblast', '48'], + ['Odeska oblast', '51'], + ['Poltavska oblast', '53'], + ['Rivnenska oblast', '56'], + ['Sumska oblast', '59'], + ['Ternopilska oblast', '61'], + ['Vinnytska oblast', '05'], + ['Volynska oblast', '07'], + ['Zakarpatska oblast', '21'], + ['Zaporizka oblast', '23'], + ['Zhytomyrska oblast', '18'], + ['Avtonomna Respublika Krym', '43'], + ['Kyiv', '30'], + ['Sevastopol', '40'], + ], ]; export const AE = [ - "United Arab Emirates", - "AE", - [ - ["Abu Dhabi", "AZ"], - ["Ajman", "AJ"], - ["Dubai", "DU"], - ["Fujairah", "FU"], - ["Ras al Khaimah", "RK"], - ["Sharjah", "SH"], - ["Umm Al Quwain", "UQ"], - ], + 'United Arab Emirates', + 'AE', + [ + ['Abu Dhabi', 'AZ'], + ['Ajman', 'AJ'], + ['Dubai', 'DU'], + ['Fujairah', 'FU'], + ['Ras al Khaimah', 'RK'], + ['Sharjah', 'SH'], + ['Umm Al Quwain', 'UQ'], + ], ]; export const GB = [ - "United Kingdom", - "GB", - [ - ["Aberdeen City", "ABE"], - ["Aberdeenshire", "ABD"], - ["Angus", "ANS"], - ["Antrim and Newtownabbey", "ANN"], - ["Ards and North Down", "AND"], - ["Argyll and Bute", "AGB"], - ["Armagh City, Banbridge and Craigavon", "ABC"], - ["Barking and Dagenham", "BDG"], - ["Barnet", "BNE"], - ["Barnsley", "BNS"], - ["Bath and North East Somerset", "BAS"], - ["Bedford", "BDF"], - ["Belfast City", "BFS"], - ["Berkshire", "BRK"], - ["Bexley", "BEX"], - ["Birmingham", "BIR"], - ["Blackburn with Darwen", "BBD"], - ["Blackpool", "BPL"], - ["Blaenau Gwent", "BGW"], - ["Bolton", "BOL"], - ["Bournemouth, Christchurch and Poole", "BCP"], - ["Bracknell Forest", "BRC"], - ["Bradford", "BRD"], - ["Brent", "BEN"], - ["Bridgend", "BGE"], - ["Brighton and Hove", "BNH"], - ["Bristol, City of", "BST"], - ["Bromley", "BRY"], - ["Buckinghamshire", "BKM"], - ["Bury", "BUR"], - ["Caerphilly", "CAY"], - ["Calderdale", "CLD"], - ["Cambridgeshire", "CAM"], - ["Camden", "CMD"], - ["Cardiff", "CRF"], - ["Carmarthenshire", "CMN"], - ["Causeway Coast and Glens", "CCG"], - ["Central Bedfordshire", "CBF"], - ["Ceredigion", "CGN"], - ["Cheshire East", "CHE"], - ["Cheshire West and Chester", "CHW"], - ["Clackmannanshire", "CLK"], - ["Conwy", "CWY"], - ["Cornwall", "CON"], - ["Coventry", "COV"], - ["Croydon", "CRY"], - ["Cumbria", "CMA"], - ["Darlington", "DAL"], - ["Denbighshire", "DEN"], - ["Derby", "DER"], - ["Derbyshire", "DBY"], - ["Derry and Strabane", "DRS"], - ["Devon", "DEV"], - ["Doncaster", "DNC"], - ["Dorset", "DOR"], - ["Dudley", "DUD"], - ["Dumfries and Galloway", "DGY"], - ["Dundee City", "DND"], - ["Durham, County", "DUR"], - ["Ealing", "EAL"], - ["East Ayrshire", "EAY"], - ["East Dunbartonshire", "EDU"], - ["East Lothian", "ELN"], - ["East Renfrewshire", "ERW"], - ["East Riding of Yorkshire", "ERY"], - ["East Sussex", "ESX"], - ["Edinburgh, City of", "EDH"], - ["Eilean Siar", "ELS"], - ["Enfield", "ENF"], - ["Essex", "ESS"], - ["Falkirk", "FAL"], - ["Fermanagh and Omagh", "FMO"], - ["Fife", "FIF"], - ["Flintshire", "FLN"], - ["Gateshead", "GAT"], - ["Glasgow City", "GLG"], - ["Gloucestershire", "GLS"], - ["Greenwich", "GRE"], - ["Gwynedd", "GWN"], - ["Hackney", "HCK"], - ["Halton", "HAL"], - ["Hammersmith and Fulham", "HMF"], - ["Hampshire", "HAM"], - ["Haringey", "HRY"], - ["Harrow", "HRW"], - ["Hartlepool", "HPL"], - ["Havering", "HAV"], - ["Herefordshire", "HEF"], - ["Hertfordshire", "HRT"], - ["Highland", "HLD"], - ["Hillingdon", "HIL"], - ["Hounslow", "HNS"], - ["Inverclyde", "IVC"], - ["Isle of Anglesey", "AGY"], - ["Isle of Wight", "IOW"], - ["Isles of Scilly", "IOS"], - ["Islington", "ISL"], - ["Kensington and Chelsea", "KEC"], - ["Kent", "KEN"], - ["Kingston upon Hull", "KHL"], - ["Kingston upon Thames", "KTT"], - ["Kirklees", "KIR"], - ["Knowsley", "KWL"], - ["Lambeth", "LBH"], - ["Lancashire", "LAN"], - ["Leeds", "LDS"], - ["Leicester", "LCE"], - ["Leicestershire", "LEC"], - ["Lewisham", "LEW"], - ["Lincolnshire", "LIN"], - ["Lisburn and Castlereagh", "LBC"], - ["Liverpool", "LIV"], - ["London, City of", "LND"], - ["Luton", "LUT"], - ["Manchester", "MAN"], - ["Medway", "MDW"], - ["Merthyr Tydfil", "MTY"], - ["Merton", "MRT"], - ["Mid and East Antrim", "MEA"], - ["Mid-Ulster", "MUL"], - ["Middlesbrough", "MDB"], - ["Midlothian", "MLN"], - ["Milton Keynes", "MIK"], - ["Monmouthshire", "MON"], - ["Moray", "MRY"], - ["Neath Port Talbot", "NTL"], - ["Newcastle upon Tyne", "NET"], - ["Newham", "NWM"], - ["Newport", "NWP"], - ["Newry, Mourne and Down", "NMD"], - ["Norfolk", "NFK"], - ["North Ayrshire", "NAY"], - ["North East Lincolnshire", "NEL"], - ["North Lanarkshire", "NLK"], - ["North Lincolnshire", "NLN"], - ["North Somerset", "NSM"], - ["North Tyneside", "NTY"], - ["North Yorkshire", "NYK"], - ["Northamptonshire", "NTH"], - ["Northumberland", "NBL"], - ["Nottingham", "NGM"], - ["Nottinghamshire", "NTT"], - ["Oldham", "OLD"], - ["Orkney Islands", "ORK"], - ["Oxfordshire", "OXF"], - ["Pembrokeshire", "PEM"], - ["Perth and Kinross", "PKN"], - ["Peterborough", "PTE"], - ["Plymouth", "PLY"], - ["Portsmouth", "POR"], - ["Powys", "POW"], - ["Reading", "RDG"], - ["Redbridge", "RDB"], - ["Redcar and Cleveland", "RCC"], - ["Renfrewshire", "RFW"], - ["Rhondda Cynon Taff", "RCT"], - ["Richmond upon Thames", "RIC"], - ["Rochdale", "RCH"], - ["Rotherham", "ROT"], - ["Rutland", "RUT"], - ["Salford", "SLF"], - ["Sandwell", "SAW"], - ["Scottish Borders", "SCB"], - ["Sefton", "SFT"], - ["Sheffield", "SHF"], - ["Shetland Islands", "ZET"], - ["Shropshire", "SHR"], - ["Slough", "SLG"], - ["Solihull", "SOL"], - ["Somerset", "SOM"], - ["South Ayrshire", "SAY"], - ["South Gloucestershire", "SGC"], - ["South Lanarkshire", "SLK"], - ["South Tyneside", "STY"], - ["Southampton", "STH"], - ["Southend-on-Sea", "SOS"], - ["Southwark", "SWK"], - ["St. Helens", "SHN"], - ["Staffordshire", "STS"], - ["Stirling", "STG"], - ["Stockport", "SKP"], - ["Stockton-on-Tees", "STT"], - ["Stoke-on-Trent", "STE"], - ["Suffolk", "SFK"], - ["Sunderland", "SND"], - ["Surrey", "SRY"], - ["Sutton", "STN"], - ["Swansea", "SWA"], - ["Swindon", "SWD"], - ["Tameside", "TAM"], - ["Telford and Wrekin", "TFW"], - ["Thurrock", "THR"], - ["Torbay", "TOB"], - ["Torfaen", "TOF"], - ["Tower Hamlets", "TWH"], - ["Trafford", "TRF"], - ["Vale of Glamorgan, The", "VGL"], - ["Wakefield", "WKF"], - ["Walsall", "WLL"], - ["Waltham Forest", "WFT"], - ["Wandsworth", "WND"], - ["Warrington", "WRT"], - ["Warwickshire", "WAR"], - ["West Berkshire", "WBK"], - ["West Dunbartonshire", "WDU"], - ["West Lothian", "WLN"], - ["West Sussex", "WSX"], - ["Westminster", "WSM"], - ["Wigan", "WGN"], - ["Wiltshire", "WIL"], - ["Windsor and Maidenhead", "WNM"], - ["Wirral", "WRL"], - ["Wokingham", "WOK"], - ["Wolverhampton", "WLV"], - ["Worcestershire", "WOR"], - ["Wrexham", "WRX"], - ["York", "YOR"], - ], + 'United Kingdom', + 'GB', + [ + ['Aberdeen City', 'ABE'], + ['Aberdeenshire', 'ABD'], + ['Angus', 'ANS'], + ['Antrim and Newtownabbey', 'ANN'], + ['Ards and North Down', 'AND'], + ['Argyll and Bute', 'AGB'], + ['Armagh City, Banbridge and Craigavon', 'ABC'], + ['Barking and Dagenham', 'BDG'], + ['Barnet', 'BNE'], + ['Barnsley', 'BNS'], + ['Bath and North East Somerset', 'BAS'], + ['Bedford', 'BDF'], + ['Belfast City', 'BFS'], + ['Berkshire', 'BRK'], + ['Bexley', 'BEX'], + ['Birmingham', 'BIR'], + ['Blackburn with Darwen', 'BBD'], + ['Blackpool', 'BPL'], + ['Blaenau Gwent', 'BGW'], + ['Bolton', 'BOL'], + ['Bournemouth, Christchurch and Poole', 'BCP'], + ['Bracknell Forest', 'BRC'], + ['Bradford', 'BRD'], + ['Brent', 'BEN'], + ['Bridgend', 'BGE'], + ['Brighton and Hove', 'BNH'], + ['Bristol, City of', 'BST'], + ['Bromley', 'BRY'], + ['Buckinghamshire', 'BKM'], + ['Bury', 'BUR'], + ['Caerphilly', 'CAY'], + ['Calderdale', 'CLD'], + ['Cambridgeshire', 'CAM'], + ['Camden', 'CMD'], + ['Cardiff', 'CRF'], + ['Carmarthenshire', 'CMN'], + ['Causeway Coast and Glens', 'CCG'], + ['Central Bedfordshire', 'CBF'], + ['Ceredigion', 'CGN'], + ['Cheshire East', 'CHE'], + ['Cheshire West and Chester', 'CHW'], + ['Clackmannanshire', 'CLK'], + ['Conwy', 'CWY'], + ['Cornwall', 'CON'], + ['Coventry', 'COV'], + ['Croydon', 'CRY'], + ['Cumbria', 'CMA'], + ['Darlington', 'DAL'], + ['Denbighshire', 'DEN'], + ['Derby', 'DER'], + ['Derbyshire', 'DBY'], + ['Derry and Strabane', 'DRS'], + ['Devon', 'DEV'], + ['Doncaster', 'DNC'], + ['Dorset', 'DOR'], + ['Dudley', 'DUD'], + ['Dumfries and Galloway', 'DGY'], + ['Dundee City', 'DND'], + ['Durham, County', 'DUR'], + ['Ealing', 'EAL'], + ['East Ayrshire', 'EAY'], + ['East Dunbartonshire', 'EDU'], + ['East Lothian', 'ELN'], + ['East Renfrewshire', 'ERW'], + ['East Riding of Yorkshire', 'ERY'], + ['East Sussex', 'ESX'], + ['Edinburgh, City of', 'EDH'], + ['Eilean Siar', 'ELS'], + ['Enfield', 'ENF'], + ['Essex', 'ESS'], + ['Falkirk', 'FAL'], + ['Fermanagh and Omagh', 'FMO'], + ['Fife', 'FIF'], + ['Flintshire', 'FLN'], + ['Gateshead', 'GAT'], + ['Glasgow City', 'GLG'], + ['Gloucestershire', 'GLS'], + ['Greenwich', 'GRE'], + ['Gwynedd', 'GWN'], + ['Hackney', 'HCK'], + ['Halton', 'HAL'], + ['Hammersmith and Fulham', 'HMF'], + ['Hampshire', 'HAM'], + ['Haringey', 'HRY'], + ['Harrow', 'HRW'], + ['Hartlepool', 'HPL'], + ['Havering', 'HAV'], + ['Herefordshire', 'HEF'], + ['Hertfordshire', 'HRT'], + ['Highland', 'HLD'], + ['Hillingdon', 'HIL'], + ['Hounslow', 'HNS'], + ['Inverclyde', 'IVC'], + ['Isle of Anglesey', 'AGY'], + ['Isle of Wight', 'IOW'], + ['Isles of Scilly', 'IOS'], + ['Islington', 'ISL'], + ['Kensington and Chelsea', 'KEC'], + ['Kent', 'KEN'], + ['Kingston upon Hull', 'KHL'], + ['Kingston upon Thames', 'KTT'], + ['Kirklees', 'KIR'], + ['Knowsley', 'KWL'], + ['Lambeth', 'LBH'], + ['Lancashire', 'LAN'], + ['Leeds', 'LDS'], + ['Leicester', 'LCE'], + ['Leicestershire', 'LEC'], + ['Lewisham', 'LEW'], + ['Lincolnshire', 'LIN'], + ['Lisburn and Castlereagh', 'LBC'], + ['Liverpool', 'LIV'], + ['London, City of', 'LND'], + ['Luton', 'LUT'], + ['Manchester', 'MAN'], + ['Medway', 'MDW'], + ['Merthyr Tydfil', 'MTY'], + ['Merton', 'MRT'], + ['Mid and East Antrim', 'MEA'], + ['Mid-Ulster', 'MUL'], + ['Middlesbrough', 'MDB'], + ['Midlothian', 'MLN'], + ['Milton Keynes', 'MIK'], + ['Monmouthshire', 'MON'], + ['Moray', 'MRY'], + ['Neath Port Talbot', 'NTL'], + ['Newcastle upon Tyne', 'NET'], + ['Newham', 'NWM'], + ['Newport', 'NWP'], + ['Newry, Mourne and Down', 'NMD'], + ['Norfolk', 'NFK'], + ['North Ayrshire', 'NAY'], + ['North East Lincolnshire', 'NEL'], + ['North Lanarkshire', 'NLK'], + ['North Lincolnshire', 'NLN'], + ['North Somerset', 'NSM'], + ['North Tyneside', 'NTY'], + ['North Yorkshire', 'NYK'], + ['Northamptonshire', 'NTH'], + ['Northumberland', 'NBL'], + ['Nottingham', 'NGM'], + ['Nottinghamshire', 'NTT'], + ['Oldham', 'OLD'], + ['Orkney Islands', 'ORK'], + ['Oxfordshire', 'OXF'], + ['Pembrokeshire', 'PEM'], + ['Perth and Kinross', 'PKN'], + ['Peterborough', 'PTE'], + ['Plymouth', 'PLY'], + ['Portsmouth', 'POR'], + ['Powys', 'POW'], + ['Reading', 'RDG'], + ['Redbridge', 'RDB'], + ['Redcar and Cleveland', 'RCC'], + ['Renfrewshire', 'RFW'], + ['Rhondda Cynon Taff', 'RCT'], + ['Richmond upon Thames', 'RIC'], + ['Rochdale', 'RCH'], + ['Rotherham', 'ROT'], + ['Rutland', 'RUT'], + ['Salford', 'SLF'], + ['Sandwell', 'SAW'], + ['Scottish Borders', 'SCB'], + ['Sefton', 'SFT'], + ['Sheffield', 'SHF'], + ['Shetland Islands', 'ZET'], + ['Shropshire', 'SHR'], + ['Slough', 'SLG'], + ['Solihull', 'SOL'], + ['Somerset', 'SOM'], + ['South Ayrshire', 'SAY'], + ['South Gloucestershire', 'SGC'], + ['South Lanarkshire', 'SLK'], + ['South Tyneside', 'STY'], + ['Southampton', 'STH'], + ['Southend-on-Sea', 'SOS'], + ['Southwark', 'SWK'], + ['St. Helens', 'SHN'], + ['Staffordshire', 'STS'], + ['Stirling', 'STG'], + ['Stockport', 'SKP'], + ['Stockton-on-Tees', 'STT'], + ['Stoke-on-Trent', 'STE'], + ['Suffolk', 'SFK'], + ['Sunderland', 'SND'], + ['Surrey', 'SRY'], + ['Sutton', 'STN'], + ['Swansea', 'SWA'], + ['Swindon', 'SWD'], + ['Tameside', 'TAM'], + ['Telford and Wrekin', 'TFW'], + ['Thurrock', 'THR'], + ['Torbay', 'TOB'], + ['Torfaen', 'TOF'], + ['Tower Hamlets', 'TWH'], + ['Trafford', 'TRF'], + ['Vale of Glamorgan, The', 'VGL'], + ['Wakefield', 'WKF'], + ['Walsall', 'WLL'], + ['Waltham Forest', 'WFT'], + ['Wandsworth', 'WND'], + ['Warrington', 'WRT'], + ['Warwickshire', 'WAR'], + ['West Berkshire', 'WBK'], + ['West Dunbartonshire', 'WDU'], + ['West Lothian', 'WLN'], + ['West Sussex', 'WSX'], + ['Westminster', 'WSM'], + ['Wigan', 'WGN'], + ['Wiltshire', 'WIL'], + ['Windsor and Maidenhead', 'WNM'], + ['Wirral', 'WRL'], + ['Wokingham', 'WOK'], + ['Wolverhampton', 'WLV'], + ['Worcestershire', 'WOR'], + ['Wrexham', 'WRX'], + ['York', 'YOR'], + ], ]; export const US = [ - "United States", - "US", - [ - ["Alabama", "AL"], - ["Alaska", "AK"], - ["American Samoa", "AS"], - ["Arizona", "AZ"], - ["Arkansas", "AR"], - ["California", "CA"], - ["Colorado", "CO"], - ["Connecticut", "CT"], - ["Delaware", "DE"], - ["District of Columbia", "DC"], - ["Micronesia", "FM"], - ["Florida", "FL"], - ["Georgia", "GA"], - ["Guam", "GU"], - ["Hawaii", "HI"], - ["Idaho", "ID"], - ["Illinois", "IL"], - ["Indiana", "IN"], - ["Iowa", "IA"], - ["Kansas", "KS"], - ["Kentucky", "KY"], - ["Louisiana", "LA"], - ["Maine", "ME"], - ["Marshall Islands", "MH"], - ["Maryland", "MD"], - ["Massachusetts", "MA"], - ["Michigan", "MI"], - ["Minnesota", "MN"], - ["Mississippi", "MS"], - ["Missouri", "MO"], - ["Montana", "MT"], - ["Nebraska", "NE"], - ["Nevada", "NV"], - ["New Hampshire", "NH"], - ["New Jersey", "NJ"], - ["New Mexico", "NM"], - ["New York", "NY"], - ["North Carolina", "NC"], - ["North Dakota", "ND"], - ["Northern Mariana Islands", "MP"], - ["Ohio", "OH"], - ["Oklahoma", "OK"], - ["Oregon", "OR"], - ["Palau", "PW"], - ["Pennsylvania", "PA"], - ["Puerto Rico", "PR"], - ["Rhode Island", "RI"], - ["South Carolina", "SC"], - ["South Dakota", "SD"], - ["Tennessee", "TN"], - ["Texas", "TX"], - ["Utah", "UT"], - ["Vermont", "VT"], - ["Virgin Islands", "VI"], - ["Virginia", "VA"], - ["Washington", "WA"], - ["West Virginia", "WV"], - ["Wisconsin", "WI"], - ["Wyoming", "WY"], - ["Armed Forces Americas", "AA"], - ["Armed Forces Europe, Canada, Africa and Middle East", "AE"], - ["Armed Forces Pacific", "AP"], - ], + 'United States', + 'US', + [ + ['Alabama', 'AL'], + ['Alaska', 'AK'], + ['American Samoa', 'AS'], + ['Arizona', 'AZ'], + ['Arkansas', 'AR'], + ['California', 'CA'], + ['Colorado', 'CO'], + ['Connecticut', 'CT'], + ['Delaware', 'DE'], + ['District of Columbia', 'DC'], + ['Micronesia', 'FM'], + ['Florida', 'FL'], + ['Georgia', 'GA'], + ['Guam', 'GU'], + ['Hawaii', 'HI'], + ['Idaho', 'ID'], + ['Illinois', 'IL'], + ['Indiana', 'IN'], + ['Iowa', 'IA'], + ['Kansas', 'KS'], + ['Kentucky', 'KY'], + ['Louisiana', 'LA'], + ['Maine', 'ME'], + ['Marshall Islands', 'MH'], + ['Maryland', 'MD'], + ['Massachusetts', 'MA'], + ['Michigan', 'MI'], + ['Minnesota', 'MN'], + ['Mississippi', 'MS'], + ['Missouri', 'MO'], + ['Montana', 'MT'], + ['Nebraska', 'NE'], + ['Nevada', 'NV'], + ['New Hampshire', 'NH'], + ['New Jersey', 'NJ'], + ['New Mexico', 'NM'], + ['New York', 'NY'], + ['North Carolina', 'NC'], + ['North Dakota', 'ND'], + ['Northern Mariana Islands', 'MP'], + ['Ohio', 'OH'], + ['Oklahoma', 'OK'], + ['Oregon', 'OR'], + ['Palau', 'PW'], + ['Pennsylvania', 'PA'], + ['Puerto Rico', 'PR'], + ['Rhode Island', 'RI'], + ['South Carolina', 'SC'], + ['South Dakota', 'SD'], + ['Tennessee', 'TN'], + ['Texas', 'TX'], + ['Utah', 'UT'], + ['Vermont', 'VT'], + ['Virgin Islands', 'VI'], + ['Virginia', 'VA'], + ['Washington', 'WA'], + ['West Virginia', 'WV'], + ['Wisconsin', 'WI'], + ['Wyoming', 'WY'], + ['Armed Forces Americas', 'AA'], + ['Armed Forces Europe, Canada, Africa and Middle East', 'AE'], + ['Armed Forces Pacific', 'AP'], + ], ]; export const UM = [ - "United States Minor Outlying Islands", - "UM", - [ - ["Baker Island", "81"], - ["Howland Island", "84"], - ["Jarvis Island", "86"], - ["Johnston Atoll", "67"], - ["Kingman Reef", "89"], - ["Midway Islands", "71"], - ["Navassa Island", "76"], - ["Palmyra Atoll", "95"], - ["Wake Island", "79"], - ["Bajo Nuevo Bank", "BN"], - ["Serranilla Bank", "SB"], - ], + 'United States Minor Outlying Islands', + 'UM', + [ + ['Baker Island', '81'], + ['Howland Island', '84'], + ['Jarvis Island', '86'], + ['Johnston Atoll', '67'], + ['Kingman Reef', '89'], + ['Midway Islands', '71'], + ['Navassa Island', '76'], + ['Palmyra Atoll', '95'], + ['Wake Island', '79'], + ['Bajo Nuevo Bank', 'BN'], + ['Serranilla Bank', 'SB'], + ], ]; export const UY = [ - "Uruguay", - "UY", - [ - ["Artigas", "AR"], - ["Canelones", "CA"], - ["Cerro Largo", "CL"], - ["Colonia", "CO"], - ["Durazno", "DU"], - ["Flores", "FS"], - ["Florida", "FD"], - ["Lavalleja", "LA"], - ["Maldonado", "MA"], - ["Montevideo", "MO"], - ["Paysandú", "PA"], - ["Río Negro", "RN"], - ["Rivera", "RV"], - ["Rocha", "RO"], - ["Salto", "SA"], - ["San José", "SJ"], - ["Soriano", "SO"], - ["Tacuarembó", "TA"], - ["Treinta y Tres", "TT"], - ], + 'Uruguay', + 'UY', + [ + ['Artigas', 'AR'], + ['Canelones', 'CA'], + ['Cerro Largo', 'CL'], + ['Colonia', 'CO'], + ['Durazno', 'DU'], + ['Flores', 'FS'], + ['Florida', 'FD'], + ['Lavalleja', 'LA'], + ['Maldonado', 'MA'], + ['Montevideo', 'MO'], + ['Paysandú', 'PA'], + ['Río Negro', 'RN'], + ['Rivera', 'RV'], + ['Rocha', 'RO'], + ['Salto', 'SA'], + ['San José', 'SJ'], + ['Soriano', 'SO'], + ['Tacuarembó', 'TA'], + ['Treinta y Tres', 'TT'], + ], ]; export const UZ = [ - "Uzbekistan", - "UZ", - [ - ["Toshkent shahri", "TK"], - ["Andijon", "AN"], - ["Buxoro", "BU"], - ["Farg‘ona", "FA"], - ["Jizzax", "JI"], - ["Namangan", "NG"], - ["Navoiy", "NW"], - ["Qashqadaryo (Qarshi)", "QA"], - ["Samarqand", "SA"], - ["Sirdaryo (Guliston)", "SI"], - ["Surxondaryo (Termiz)", "SU"], - ["Toshkent wiloyati", "TO"], - ["Xorazm (Urganch)", "XO"], - ["Qoraqalpog‘iston Respublikasi (Nukus)", "QR"], - ], + 'Uzbekistan', + 'UZ', + [ + ['Toshkent shahri', 'TK'], + ['Andijon', 'AN'], + ['Buxoro', 'BU'], + ['Farg‘ona', 'FA'], + ['Jizzax', 'JI'], + ['Namangan', 'NG'], + ['Navoiy', 'NW'], + ['Qashqadaryo (Qarshi)', 'QA'], + ['Samarqand', 'SA'], + ['Sirdaryo (Guliston)', 'SI'], + ['Surxondaryo (Termiz)', 'SU'], + ['Toshkent wiloyati', 'TO'], + ['Xorazm (Urganch)', 'XO'], + ['Qoraqalpog‘iston Respublikasi (Nukus)', 'QR'], + ], ]; export const VU = [ - "Vanuatu", - "VU", - [ - ["Malampa", "MAP"], - ["Pénama", "PAM"], - ["Sanma", "SAM"], - ["Shéfa", "SEE"], - ["Taféa", "TAE"], - ["Torba", "TOB"], - ], + 'Vanuatu', + 'VU', + [ + ['Malampa', 'MAP'], + ['Pénama', 'PAM'], + ['Sanma', 'SAM'], + ['Shéfa', 'SEE'], + ['Taféa', 'TAE'], + ['Torba', 'TOB'], + ], ]; export const VE = [ - "Venezuela, Bolivarian Republic of", - "VE", - [ - ["Dependencias Federales", "W"], - ["Distrito Federal", "A"], - ["Amazonas", "Z"], - ["Anzoátegui", "B"], - ["Apure", "C"], - ["Aragua", "D"], - ["Barinas", "E"], - ["Bolívar", "F"], - ["Carabobo", "G"], - ["Cojedes", "H"], - ["Delta Amacuro", "Y"], - ["Falcón", "I"], - ["Guárico", "J"], - ["Lara", "K"], - ["Mérida", "L"], - ["Miranda", "M"], - ["Monagas", "N"], - ["Nueva Esparta", "O"], - ["Portuguesa", "P"], - ["Sucre", "R"], - ["Táchira", "S"], - ["Trujillo", "T"], - ["Vargas", "X"], - ["Yaracuy", "U"], - ["Zulia", "V"], - ], + 'Venezuela, Bolivarian Republic of', + 'VE', + [ + ['Dependencias Federales', 'W'], + ['Distrito Federal', 'A'], + ['Amazonas', 'Z'], + ['Anzoátegui', 'B'], + ['Apure', 'C'], + ['Aragua', 'D'], + ['Barinas', 'E'], + ['Bolívar', 'F'], + ['Carabobo', 'G'], + ['Cojedes', 'H'], + ['Delta Amacuro', 'Y'], + ['Falcón', 'I'], + ['Guárico', 'J'], + ['Lara', 'K'], + ['Mérida', 'L'], + ['Miranda', 'M'], + ['Monagas', 'N'], + ['Nueva Esparta', 'O'], + ['Portuguesa', 'P'], + ['Sucre', 'R'], + ['Táchira', 'S'], + ['Trujillo', 'T'], + ['Vargas', 'X'], + ['Yaracuy', 'U'], + ['Zulia', 'V'], + ], ]; export const VN = [ - "Vietnam", - "VN", - [ - ["An Giang", "44"], - ["Bà Rịa - Vũng Tàu", "43"], - ["Bình Dương", "57"], - ["Bình Phước", "58"], - ["Bình Định", "31"], - ["Bình Thuận", "40"], - ["Bạc Liêu", "55"], - ["Bắc Giang", "54"], - ["Bắc Kạn", "53"], - ["Bắc Ninh", "56"], - ["Bến Tre", "50"], - ["Cao Bằng", "04"], - ["Cà Mau", "59"], - ["Đắk Lắk", "33"], - ["Đắk Nông", "72"], - ["Điện Biên", "71"], - ["Đồng Nai", "39"], - ["Đồng Tháp", "45"], - ["Gia Lai", "30"], - ["Hà Giang", "03"], - ["Hà Nam", "63"], - ["Hà Tây", "15"], - ["Hà Tĩnh", "23"], - ["Hải Dương", "61"], - ["Hậu Giang", "73"], - ["Hòa Bình", "14"], - ["Hưng Yên", "66"], - ["Khánh Hòa", "34"], - ["Kiên Giang", "47"], - ["Kon Tum", "28"], - ["Lai Châu", "01"], - ["Lâm Đồng", "35"], - ["Lạng Sơn", "09"], - ["Lào Cai", "02"], - ["Long An", "41"], - ["Nam Định", "67"], - ["Nghệ An", "22"], - ["Ninh Bình", "18"], - ["Ninh Thuận", "36"], - ["Phú Thọ", "68"], - ["Phú Yên", "32"], - ["Quảng Bình", "24"], - ["Quảng Nam", "27"], - ["Quảng Ngãi", "29"], - ["Quảng Ninh", "13"], - ["Quảng Trị", "25"], - ["Sóc Trăng", "52"], - ["Sơn La", "05"], - ["Tây Ninh", "37"], - ["Thái Bình", "20"], - ["Thái Nguyên", "69"], - ["Thanh Hóa", "21"], - ["Thừa Thiên–Huế", "26"], - ["Tiền Giang", "46"], - ["Trà Vinh", "51"], - ["Tuyên Quang", "07"], - ["Vĩnh Long", "49"], - ["Vĩnh Phúc", "70"], - ["Yên Bái", "06"], - ["Cần Thơ", "CT"], - ["Đà Nẵng", "DN"], - ["Hà Nội", "HN"], - ["Hải Phòng", "HP"], - ["Hồ Chí Minh (Sài Gòn)", "SG"], - ], + 'Vietnam', + 'VN', + [ + ['An Giang', '44'], + ['Bà Rịa - Vũng Tàu', '43'], + ['Bình Dương', '57'], + ['Bình Phước', '58'], + ['Bình Định', '31'], + ['Bình Thuận', '40'], + ['Bạc Liêu', '55'], + ['Bắc Giang', '54'], + ['Bắc Kạn', '53'], + ['Bắc Ninh', '56'], + ['Bến Tre', '50'], + ['Cao Bằng', '04'], + ['Cà Mau', '59'], + ['Đắk Lắk', '33'], + ['Đắk Nông', '72'], + ['Điện Biên', '71'], + ['Đồng Nai', '39'], + ['Đồng Tháp', '45'], + ['Gia Lai', '30'], + ['Hà Giang', '03'], + ['Hà Nam', '63'], + ['Hà Tây', '15'], + ['Hà Tĩnh', '23'], + ['Hải Dương', '61'], + ['Hậu Giang', '73'], + ['Hòa Bình', '14'], + ['Hưng Yên', '66'], + ['Khánh Hòa', '34'], + ['Kiên Giang', '47'], + ['Kon Tum', '28'], + ['Lai Châu', '01'], + ['Lâm Đồng', '35'], + ['Lạng Sơn', '09'], + ['Lào Cai', '02'], + ['Long An', '41'], + ['Nam Định', '67'], + ['Nghệ An', '22'], + ['Ninh Bình', '18'], + ['Ninh Thuận', '36'], + ['Phú Thọ', '68'], + ['Phú Yên', '32'], + ['Quảng Bình', '24'], + ['Quảng Nam', '27'], + ['Quảng Ngãi', '29'], + ['Quảng Ninh', '13'], + ['Quảng Trị', '25'], + ['Sóc Trăng', '52'], + ['Sơn La', '05'], + ['Tây Ninh', '37'], + ['Thái Bình', '20'], + ['Thái Nguyên', '69'], + ['Thanh Hóa', '21'], + ['Thừa Thiên–Huế', '26'], + ['Tiền Giang', '46'], + ['Trà Vinh', '51'], + ['Tuyên Quang', '07'], + ['Vĩnh Long', '49'], + ['Vĩnh Phúc', '70'], + ['Yên Bái', '06'], + ['Cần Thơ', 'CT'], + ['Đà Nẵng', 'DN'], + ['Hà Nội', 'HN'], + ['Hải Phòng', 'HP'], + ['Hồ Chí Minh (Sài Gòn)', 'SG'], + ], ]; export const VG = [ - "Virgin Islands, British", - "VG", - [ - ["Anegada", "ANG"], - ["Jost Van Dyke", "JVD"], - ["Tortola", "TTA"], - ["Virgin Gorda", "VGD"], - ], + 'Virgin Islands, British', + 'VG', + [ + ['Anegada', 'ANG'], + ['Jost Van Dyke', 'JVD'], + ['Tortola', 'TTA'], + ['Virgin Gorda', 'VGD'], + ], ]; export const VI = [ - "Virgin Islands, U.S.", - "VI", - [ - ["St. Thomas", "STH"], - ["St. John", "SJO"], - ["St. Croix", "SCR"], - ], + 'Virgin Islands, U.S.', + 'VI', + [ + ['St. Thomas', 'STH'], + ['St. John', 'SJO'], + ['St. Croix', 'SCR'], + ], ]; export const WF = [ - "Wallis and Futuna", - "WF", - [ - ["Alo", "ALO"], - ["Sigave", "SIG"], - ["Wallis", "WAL"], - ], + 'Wallis and Futuna', + 'WF', + [ + ['Alo', 'ALO'], + ['Sigave', 'SIG'], + ['Wallis', 'WAL'], + ], ]; export const EH = [ - "Western Sahara", - "EH", - [ - ["Es Smara", "ESM"], - ["Boujdour", "BOD"], - ["Laâyoune", "LAA"], - ["Aousserd", "AOU"], - ["Oued ed Dahab", "OUD"], - ], + 'Western Sahara', + 'EH', + [ + ['Es Smara', 'ESM'], + ['Boujdour', 'BOD'], + ['Laâyoune', 'LAA'], + ['Aousserd', 'AOU'], + ['Oued ed Dahab', 'OUD'], + ], ]; export const YE = [ - "Yemen", - "YE", - [ - ["Abyān", "AB"], - ["'Adan", "AD"], - ["Aḑ Ḑāli'", "DA"], - ["Al Bayḑā'", "BA"], - ["Al Ḩudaydah", "HU"], - ["Al Jawf", "JA"], - ["Al Mahrah", "MR"], - ["Al Maḩwīt", "MW"], - ["'Amrān", "AM"], - ["Dhamār", "DH"], - ["Ḩaḑramawt", "HD"], - ["Ḩajjah", "HJ"], - ["Ibb", "IB"], - ["Laḩij", "LA"], - ["Ma'rib", "MA"], - ["Raymah", "RA"], - ["Şā‘dah", "SD"], - ["Şan‘ā'", "SN"], - ["Shabwah", "SH"], - ["Tā‘izz", "TA"], - ], + 'Yemen', + 'YE', + [ + ['Abyān', 'AB'], + ["'Adan", 'AD'], + ["Aḑ Ḑāli'", 'DA'], + ["Al Bayḑā'", 'BA'], + ['Al Ḩudaydah', 'HU'], + ['Al Jawf', 'JA'], + ['Al Mahrah', 'MR'], + ['Al Maḩwīt', 'MW'], + ["'Amrān", 'AM'], + ['Dhamār', 'DH'], + ['Ḩaḑramawt', 'HD'], + ['Ḩajjah', 'HJ'], + ['Ibb', 'IB'], + ['Laḩij', 'LA'], + ["Ma'rib", 'MA'], + ['Raymah', 'RA'], + ['Şā‘dah', 'SD'], + ["Şan‘ā'", 'SN'], + ['Shabwah', 'SH'], + ['Tā‘izz', 'TA'], + ], ]; export const ZM = [ - "Zambia", - "ZM", - [ - ["Central", "02"], - ["Copperbelt", "08"], - ["Eastern", "03"], - ["Luapula", "04"], - ["Lusaka", "09"], - ["Muchinga", "10"], - ["Northern", "05"], - ["North-Western", "06"], - ["Southern", "07"], - ["Western", "01"], - ], + 'Zambia', + 'ZM', + [ + ['Central', '02'], + ['Copperbelt', '08'], + ['Eastern', '03'], + ['Luapula', '04'], + ['Lusaka', '09'], + ['Muchinga', '10'], + ['Northern', '05'], + ['North-Western', '06'], + ['Southern', '07'], + ['Western', '01'], + ], ]; export const ZW = [ - "Zimbabwe", - "ZW", - [ - ["Bulawayo", "BU"], - ["Harare", "HA"], - ["Manicaland", "MA"], - ["Mashonaland Central", "MC"], - ["Mashonaland East", "ME"], - ["Mashonaland West", "MW"], - ["Masvingo", "MV"], - ["Matabeleland North", "MN"], - ["Matabeleland South", "MS"], - ["Midlands", "MI"], - ], + 'Zimbabwe', + 'ZW', + [ + ['Bulawayo', 'BU'], + ['Harare', 'HA'], + ['Manicaland', 'MA'], + ['Mashonaland Central', 'MC'], + ['Mashonaland East', 'ME'], + ['Mashonaland West', 'MW'], + ['Masvingo', 'MV'], + ['Matabeleland North', 'MN'], + ['Matabeleland South', 'MS'], + ['Midlands', 'MI'], + ], ]; export const allCountries = [ - AF, - AX, - AL, - DZ, - AS, - AD, - AO, - AI, - AQ, - AG, - AR, - AM, - AW, - AU, - AT, - AZ, - BS, - BH, - BD, - BB, - BY, - BE, - BZ, - BJ, - BM, - BT, - BO, - BQ, - BA, - BW, - BV, - BR, - IO, - BN, - BG, - BF, - BI, - KH, - CM, - CA, - CV, - KY, - CF, - TD, - CL, - CN, - CX, - CC, - CO, - KM, - CG, - CD, - CK, - CR, - CI, - HR, - CU, - CW, - CY, - CZ, - DK, - DJ, - DM, - DO, - EC, - EG, - SV, - GQ, - ER, - EE, - ET, - FK, - FO, - FJ, - FI, - FR, - GF, - PF, - TF, - GA, - GM, - GE, - DE, - GH, - GI, - GR, - GL, - GD, - GP, - GU, - GT, - GG, - GN, - GW, - GY, - HT, - HM, - VA, - HN, - HK, - HU, - IS, - IN, - ID, - IR, - IQ, - IE, - IM, - IL, - IT, - JM, - JP, - JE, - JO, - KZ, - KE, - KI, - KP, - KR, - XK, - KW, - KG, - LA, - LV, - LB, - LS, - LR, - LY, - LI, - LT, - LU, - MO, - MK, - MG, - MW, - MY, - MV, - ML, - MT, - MH, - MQ, - MR, - MU, - YT, - MX, - FM, - MD, - MC, - MN, - ME, - MS, - MA, - MZ, - MM, - NA, - NR, - NP, - NL, - NC, - NZ, - NI, - NE, - NG, - NU, - NF, - MP, - NO, - OM, - PK, - PW, - PS, - PA, - PG, - PY, - PE, - PH, - PN, - PL, - PT, - PR, - QA, - RE, - RO, - RU, - RW, - BL, - SH, - KN, - LC, - MF, - PM, - VC, - WS, - SM, - ST, - SA, - SN, - RS, - SC, - SL, - SG, - SX, - SK, - SI, - SB, - SO, - ZA, - GS, - SS, - ES, - LK, - SD, - SR, - SZ, - SE, - CH, - SY, - TW, - TJ, - TZ, - TH, - TL, - TG, - TK, - TO, - TT, - TN, - TR, - TM, - TC, - TV, - UG, - UA, - AE, - GB, - US, - UM, - UY, - UZ, - VU, - VE, - VN, - VG, - VI, - WF, - EH, - YE, - ZM, - ZW, + AF, + AX, + AL, + DZ, + AS, + AD, + AO, + AI, + AQ, + AG, + AR, + AM, + AW, + AU, + AT, + AZ, + BS, + BH, + BD, + BB, + BY, + BE, + BZ, + BJ, + BM, + BT, + BO, + BQ, + BA, + BW, + BV, + BR, + IO, + BN, + BG, + BF, + BI, + KH, + CM, + CA, + CV, + KY, + CF, + TD, + CL, + CN, + CX, + CC, + CO, + KM, + CG, + CD, + CK, + CR, + CI, + HR, + CU, + CW, + CY, + CZ, + DK, + DJ, + DM, + DO, + EC, + EG, + SV, + GQ, + ER, + EE, + ET, + FK, + FO, + FJ, + FI, + FR, + GF, + PF, + TF, + GA, + GM, + GE, + DE, + GH, + GI, + GR, + GL, + GD, + GP, + GU, + GT, + GG, + GN, + GW, + GY, + HT, + HM, + VA, + HN, + HK, + HU, + IS, + IN, + ID, + IR, + IQ, + IE, + IM, + IL, + IT, + JM, + JP, + JE, + JO, + KZ, + KE, + KI, + KP, + KR, + XK, + KW, + KG, + LA, + LV, + LB, + LS, + LR, + LY, + LI, + LT, + LU, + MO, + MK, + MG, + MW, + MY, + MV, + ML, + MT, + MH, + MQ, + MR, + MU, + YT, + MX, + FM, + MD, + MC, + MN, + ME, + MS, + MA, + MZ, + MM, + NA, + NR, + NP, + NL, + NC, + NZ, + NI, + NE, + NG, + NU, + NF, + MP, + NO, + OM, + PK, + PW, + PS, + PA, + PG, + PY, + PE, + PH, + PN, + PL, + PT, + PR, + QA, + RE, + RO, + RU, + RW, + BL, + SH, + KN, + LC, + MF, + PM, + VC, + WS, + SM, + ST, + SA, + SN, + RS, + SC, + SL, + SG, + SX, + SK, + SI, + SB, + SO, + ZA, + GS, + SS, + ES, + LK, + SD, + SR, + SZ, + SE, + CH, + SY, + TW, + TJ, + TZ, + TH, + TL, + TG, + TK, + TO, + TT, + TN, + TR, + TM, + TC, + TV, + UG, + UA, + AE, + GB, + US, + UM, + UY, + UZ, + VU, + VE, + VN, + VG, + VI, + WF, + EH, + YE, + ZM, + ZW, ]; export const countryTuples = [ - ["Afghanistan", "AF"], - ["Åland Islands", "AX"], - ["Albania", "AL"], - ["Algeria", "DZ"], - ["American Samoa", "AS"], - ["Andorra", "AD"], - ["Angola", "AO"], - ["Anguilla", "AI"], - ["Antarctica", "AQ"], - ["Antigua and Barbuda", "AG"], - ["Argentina", "AR"], - ["Armenia", "AM"], - ["Aruba", "AW"], - ["Australia", "AU"], - ["Austria", "AT"], - ["Azerbaijan", "AZ"], - ["Bahamas", "BS"], - ["Bahrain", "BH"], - ["Bangladesh", "BD"], - ["Barbados", "BB"], - ["Belarus", "BY"], - ["Belgium", "BE"], - ["Belize", "BZ"], - ["Benin", "BJ"], - ["Bermuda", "BM"], - ["Bhutan", "BT"], - ["Bolivia", "BO"], - ["Bonaire, Sint Eustatius and Saba", "BQ"], - ["Bosnia and Herzegovina", "BA"], - ["Botswana", "BW"], - ["Bouvet Island", "BV"], - ["Brazil", "BR"], - ["British Indian Ocean Territory", "IO"], - ["Brunei Darussalam", "BN"], - ["Bulgaria", "BG"], - ["Burkina Faso", "BF"], - ["Burundi", "BI"], - ["Cambodia", "KH"], - ["Cameroon", "CM"], - ["Canada", "CA"], - ["Cape Verde", "CV"], - ["Cayman Islands", "KY"], - ["Central African Republic", "CF"], - ["Chad", "TD"], - ["Chile", "CL"], - ["China", "CN"], - ["Christmas Island", "CX"], - ["Cocos (Keeling) Islands", "CC"], - ["Colombia", "CO"], - ["Comoros", "KM"], - ["Congo, Republic of the (Brazzaville)", "CG"], - ["Congo, the Democratic Republic of the (Kinshasa)", "CD"], - ["Cook Islands", "CK"], - ["Costa Rica", "CR"], - ["Côte d'Ivoire, Republic of", "CI"], - ["Croatia", "HR"], - ["Cuba", "CU"], - ["Curaçao", "CW"], - ["Cyprus", "CY"], - ["Czech Republic", "CZ"], - ["Denmark", "DK"], - ["Djibouti", "DJ"], - ["Dominica", "DM"], - ["Dominican Republic", "DO"], - ["Ecuador", "EC"], - ["Egypt", "EG"], - ["El Salvador", "SV"], - ["Equatorial Guinea", "GQ"], - ["Eritrea", "ER"], - ["Estonia", "EE"], - ["Ethiopia", "ET"], - ["Falkland Islands (Islas Malvinas)", "FK"], - ["Faroe Islands", "FO"], - ["Fiji", "FJ"], - ["Finland", "FI"], - ["France", "FR"], - ["French Guiana", "GF"], - ["French Polynesia", "PF"], - ["French Southern and Antarctic Lands", "TF"], - ["Gabon", "GA"], - ["Gambia, The", "GM"], - ["Georgia", "GE"], - ["Germany", "DE"], - ["Ghana", "GH"], - ["Gibraltar", "GI"], - ["Greece", "GR"], - ["Greenland", "GL"], - ["Grenada", "GD"], - ["Guadeloupe", "GP"], - ["Guam", "GU"], - ["Guatemala", "GT"], - ["Guernsey", "GG"], - ["Guinea", "GN"], - ["Guinea-Bissau", "GW"], - ["Guyana", "GY"], - ["Haiti", "HT"], - ["Heard Island and McDonald Islands", "HM"], - ["Holy See (Vatican City)", "VA"], - ["Honduras", "HN"], - ["Hong Kong", "HK"], - ["Hungary", "HU"], - ["Iceland", "IS"], - ["India", "IN"], - ["Indonesia", "ID"], - ["Iran, Islamic Republic of", "IR"], - ["Iraq", "IQ"], - ["Ireland", "IE"], - ["Isle of Man", "IM"], - ["Israel", "IL"], - ["Italy", "IT"], - ["Jamaica", "JM"], - ["Japan", "JP"], - ["Jersey", "JE"], - ["Jordan", "JO"], - ["Kazakhstan", "KZ"], - ["Kenya", "KE"], - ["Kiribati", "KI"], - ["Korea, Democratic People's Republic of", "KP"], - ["Korea, Republic of", "KR"], - ["Kosovo", "XK"], - ["Kuwait", "KW"], - ["Kyrgyzstan", "KG"], - ["Laos", "LA"], - ["Latvia", "LV"], - ["Lebanon", "LB"], - ["Lesotho", "LS"], - ["Liberia", "LR"], - ["Libya", "LY"], - ["Liechtenstein", "LI"], - ["Lithuania", "LT"], - ["Luxembourg", "LU"], - ["Macao", "MO"], - ["Macedonia, Republic of", "MK"], - ["Madagascar", "MG"], - ["Malawi", "MW"], - ["Malaysia", "MY"], - ["Maldives", "MV"], - ["Mali", "ML"], - ["Malta", "MT"], - ["Marshall Islands", "MH"], - ["Martinique", "MQ"], - ["Mauritania", "MR"], - ["Mauritius", "MU"], - ["Mayotte", "YT"], - ["Mexico", "MX"], - ["Micronesia, Federated States of", "FM"], - ["Moldova", "MD"], - ["Monaco", "MC"], - ["Mongolia", "MN"], - ["Montenegro", "ME"], - ["Montserrat", "MS"], - ["Morocco", "MA"], - ["Mozambique", "MZ"], - ["Myanmar", "MM"], - ["Namibia", "NA"], - ["Nauru", "NR"], - ["Nepal", "NP"], - ["Netherlands", "NL"], - ["New Caledonia", "NC"], - ["New Zealand", "NZ"], - ["Nicaragua", "NI"], - ["Niger", "NE"], - ["Nigeria", "NG"], - ["Niue", "NU"], - ["Norfolk Island", "NF"], - ["Northern Mariana Islands", "MP"], - ["Norway", "NO"], - ["Oman", "OM"], - ["Pakistan", "PK"], - ["Palau", "PW"], - ["Palestine", "PS"], - ["Panama", "PA"], - ["Papua New Guinea", "PG"], - ["Paraguay", "PY"], - ["Peru", "PE"], - ["Philippines", "PH"], - ["Pitcairn", "PN"], - ["Poland", "PL"], - ["Portugal", "PT"], - ["Puerto Rico", "PR"], - ["Qatar", "QA"], - ["Réunion", "RE"], - ["Romania", "RO"], - ["Russian Federation", "RU"], - ["Rwanda", "RW"], - ["Saint Barthélemy", "BL"], - ["Saint Helena, Ascension and Tristan da Cunha", "SH"], - ["Saint Kitts and Nevis", "KN"], - ["Saint Lucia", "LC"], - ["Saint Martin", "MF"], - ["Saint Pierre and Miquelon", "PM"], - ["Saint Vincent and the Grenadines", "VC"], - ["Samoa", "WS"], - ["San Marino", "SM"], - ["Sao Tome and Principe", "ST"], - ["Saudi Arabia", "SA"], - ["Senegal", "SN"], - ["Serbia", "RS"], - ["Seychelles", "SC"], - ["Sierra Leone", "SL"], - ["Singapore", "SG"], - ["Sint Maarten (Dutch part)", "SX"], - ["Slovakia", "SK"], - ["Slovenia", "SI"], - ["Solomon Islands", "SB"], - ["Somalia", "SO"], - ["South Africa", "ZA"], - ["South Georgia and South Sandwich Islands", "GS"], - ["South Sudan", "SS"], - ["Spain", "ES"], - ["Sri Lanka", "LK"], - ["Sudan", "SD"], - ["Suriname", "SR"], - ["Eswatini", "SZ"], - ["Sweden", "SE"], - ["Switzerland", "CH"], - ["Syrian Arab Republic", "SY"], - ["Taiwan", "TW"], - ["Tajikistan", "TJ"], - ["Tanzania, United Republic of", "TZ"], - ["Thailand", "TH"], - ["Timor-Leste", "TL"], - ["Togo", "TG"], - ["Tokelau", "TK"], - ["Tonga", "TO"], - ["Trinidad and Tobago", "TT"], - ["Tunisia", "TN"], - ["Turkey", "TR"], - ["Turkmenistan", "TM"], - ["Turks and Caicos Islands", "TC"], - ["Tuvalu", "TV"], - ["Uganda", "UG"], - ["Ukraine", "UA"], - ["United Arab Emirates", "AE"], - ["United Kingdom", "GB"], - ["United States", "US"], - ["United States Minor Outlying Islands", "UM"], - ["Uruguay", "UY"], - ["Uzbekistan", "UZ"], - ["Vanuatu", "VU"], - ["Venezuela, Bolivarian Republic of", "VE"], - ["Vietnam", "VN"], - ["Virgin Islands, British", "VG"], - ["Virgin Islands, U.S.", "VI"], - ["Wallis and Futuna", "WF"], - ["Western Sahara", "EH"], - ["Yemen", "YE"], - ["Zambia", "ZM"], - ["Zimbabwe", "ZW"], + ['Afghanistan', 'AF'], + ['Åland Islands', 'AX'], + ['Albania', 'AL'], + ['Algeria', 'DZ'], + ['American Samoa', 'AS'], + ['Andorra', 'AD'], + ['Angola', 'AO'], + ['Anguilla', 'AI'], + ['Antarctica', 'AQ'], + ['Antigua and Barbuda', 'AG'], + ['Argentina', 'AR'], + ['Armenia', 'AM'], + ['Aruba', 'AW'], + ['Australia', 'AU'], + ['Austria', 'AT'], + ['Azerbaijan', 'AZ'], + ['Bahamas', 'BS'], + ['Bahrain', 'BH'], + ['Bangladesh', 'BD'], + ['Barbados', 'BB'], + ['Belarus', 'BY'], + ['Belgium', 'BE'], + ['Belize', 'BZ'], + ['Benin', 'BJ'], + ['Bermuda', 'BM'], + ['Bhutan', 'BT'], + ['Bolivia', 'BO'], + ['Bonaire, Sint Eustatius and Saba', 'BQ'], + ['Bosnia and Herzegovina', 'BA'], + ['Botswana', 'BW'], + ['Bouvet Island', 'BV'], + ['Brazil', 'BR'], + ['British Indian Ocean Territory', 'IO'], + ['Brunei Darussalam', 'BN'], + ['Bulgaria', 'BG'], + ['Burkina Faso', 'BF'], + ['Burundi', 'BI'], + ['Cambodia', 'KH'], + ['Cameroon', 'CM'], + ['Canada', 'CA'], + ['Cape Verde', 'CV'], + ['Cayman Islands', 'KY'], + ['Central African Republic', 'CF'], + ['Chad', 'TD'], + ['Chile', 'CL'], + ['China', 'CN'], + ['Christmas Island', 'CX'], + ['Cocos (Keeling) Islands', 'CC'], + ['Colombia', 'CO'], + ['Comoros', 'KM'], + ['Congo, Republic of the (Brazzaville)', 'CG'], + ['Congo, the Democratic Republic of the (Kinshasa)', 'CD'], + ['Cook Islands', 'CK'], + ['Costa Rica', 'CR'], + ["Côte d'Ivoire, Republic of", 'CI'], + ['Croatia', 'HR'], + ['Cuba', 'CU'], + ['Curaçao', 'CW'], + ['Cyprus', 'CY'], + ['Czech Republic', 'CZ'], + ['Denmark', 'DK'], + ['Djibouti', 'DJ'], + ['Dominica', 'DM'], + ['Dominican Republic', 'DO'], + ['Ecuador', 'EC'], + ['Egypt', 'EG'], + ['El Salvador', 'SV'], + ['Equatorial Guinea', 'GQ'], + ['Eritrea', 'ER'], + ['Estonia', 'EE'], + ['Ethiopia', 'ET'], + ['Falkland Islands (Islas Malvinas)', 'FK'], + ['Faroe Islands', 'FO'], + ['Fiji', 'FJ'], + ['Finland', 'FI'], + ['France', 'FR'], + ['French Guiana', 'GF'], + ['French Polynesia', 'PF'], + ['French Southern and Antarctic Lands', 'TF'], + ['Gabon', 'GA'], + ['Gambia, The', 'GM'], + ['Georgia', 'GE'], + ['Germany', 'DE'], + ['Ghana', 'GH'], + ['Gibraltar', 'GI'], + ['Greece', 'GR'], + ['Greenland', 'GL'], + ['Grenada', 'GD'], + ['Guadeloupe', 'GP'], + ['Guam', 'GU'], + ['Guatemala', 'GT'], + ['Guernsey', 'GG'], + ['Guinea', 'GN'], + ['Guinea-Bissau', 'GW'], + ['Guyana', 'GY'], + ['Haiti', 'HT'], + ['Heard Island and McDonald Islands', 'HM'], + ['Holy See (Vatican City)', 'VA'], + ['Honduras', 'HN'], + ['Hong Kong', 'HK'], + ['Hungary', 'HU'], + ['Iceland', 'IS'], + ['India', 'IN'], + ['Indonesia', 'ID'], + ['Iran, Islamic Republic of', 'IR'], + ['Iraq', 'IQ'], + ['Ireland', 'IE'], + ['Isle of Man', 'IM'], + ['Israel', 'IL'], + ['Italy', 'IT'], + ['Jamaica', 'JM'], + ['Japan', 'JP'], + ['Jersey', 'JE'], + ['Jordan', 'JO'], + ['Kazakhstan', 'KZ'], + ['Kenya', 'KE'], + ['Kiribati', 'KI'], + ["Korea, Democratic People's Republic of", 'KP'], + ['Korea, Republic of', 'KR'], + ['Kosovo', 'XK'], + ['Kuwait', 'KW'], + ['Kyrgyzstan', 'KG'], + ['Laos', 'LA'], + ['Latvia', 'LV'], + ['Lebanon', 'LB'], + ['Lesotho', 'LS'], + ['Liberia', 'LR'], + ['Libya', 'LY'], + ['Liechtenstein', 'LI'], + ['Lithuania', 'LT'], + ['Luxembourg', 'LU'], + ['Macao', 'MO'], + ['Macedonia, Republic of', 'MK'], + ['Madagascar', 'MG'], + ['Malawi', 'MW'], + ['Malaysia', 'MY'], + ['Maldives', 'MV'], + ['Mali', 'ML'], + ['Malta', 'MT'], + ['Marshall Islands', 'MH'], + ['Martinique', 'MQ'], + ['Mauritania', 'MR'], + ['Mauritius', 'MU'], + ['Mayotte', 'YT'], + ['Mexico', 'MX'], + ['Micronesia, Federated States of', 'FM'], + ['Moldova', 'MD'], + ['Monaco', 'MC'], + ['Mongolia', 'MN'], + ['Montenegro', 'ME'], + ['Montserrat', 'MS'], + ['Morocco', 'MA'], + ['Mozambique', 'MZ'], + ['Myanmar', 'MM'], + ['Namibia', 'NA'], + ['Nauru', 'NR'], + ['Nepal', 'NP'], + ['Netherlands', 'NL'], + ['New Caledonia', 'NC'], + ['New Zealand', 'NZ'], + ['Nicaragua', 'NI'], + ['Niger', 'NE'], + ['Nigeria', 'NG'], + ['Niue', 'NU'], + ['Norfolk Island', 'NF'], + ['Northern Mariana Islands', 'MP'], + ['Norway', 'NO'], + ['Oman', 'OM'], + ['Pakistan', 'PK'], + ['Palau', 'PW'], + ['Palestine', 'PS'], + ['Panama', 'PA'], + ['Papua New Guinea', 'PG'], + ['Paraguay', 'PY'], + ['Peru', 'PE'], + ['Philippines', 'PH'], + ['Pitcairn', 'PN'], + ['Poland', 'PL'], + ['Portugal', 'PT'], + ['Puerto Rico', 'PR'], + ['Qatar', 'QA'], + ['Réunion', 'RE'], + ['Romania', 'RO'], + ['Russian Federation', 'RU'], + ['Rwanda', 'RW'], + ['Saint Barthélemy', 'BL'], + ['Saint Helena, Ascension and Tristan da Cunha', 'SH'], + ['Saint Kitts and Nevis', 'KN'], + ['Saint Lucia', 'LC'], + ['Saint Martin', 'MF'], + ['Saint Pierre and Miquelon', 'PM'], + ['Saint Vincent and the Grenadines', 'VC'], + ['Samoa', 'WS'], + ['San Marino', 'SM'], + ['Sao Tome and Principe', 'ST'], + ['Saudi Arabia', 'SA'], + ['Senegal', 'SN'], + ['Serbia', 'RS'], + ['Seychelles', 'SC'], + ['Sierra Leone', 'SL'], + ['Singapore', 'SG'], + ['Sint Maarten (Dutch part)', 'SX'], + ['Slovakia', 'SK'], + ['Slovenia', 'SI'], + ['Solomon Islands', 'SB'], + ['Somalia', 'SO'], + ['South Africa', 'ZA'], + ['South Georgia and South Sandwich Islands', 'GS'], + ['South Sudan', 'SS'], + ['Spain', 'ES'], + ['Sri Lanka', 'LK'], + ['Sudan', 'SD'], + ['Suriname', 'SR'], + ['Eswatini', 'SZ'], + ['Sweden', 'SE'], + ['Switzerland', 'CH'], + ['Syrian Arab Republic', 'SY'], + ['Taiwan', 'TW'], + ['Tajikistan', 'TJ'], + ['Tanzania, United Republic of', 'TZ'], + ['Thailand', 'TH'], + ['Timor-Leste', 'TL'], + ['Togo', 'TG'], + ['Tokelau', 'TK'], + ['Tonga', 'TO'], + ['Trinidad and Tobago', 'TT'], + ['Tunisia', 'TN'], + ['Turkey', 'TR'], + ['Turkmenistan', 'TM'], + ['Turks and Caicos Islands', 'TC'], + ['Tuvalu', 'TV'], + ['Uganda', 'UG'], + ['Ukraine', 'UA'], + ['United Arab Emirates', 'AE'], + ['United Kingdom', 'GB'], + ['United States', 'US'], + ['United States Minor Outlying Islands', 'UM'], + ['Uruguay', 'UY'], + ['Uzbekistan', 'UZ'], + ['Vanuatu', 'VU'], + ['Venezuela, Bolivarian Republic of', 'VE'], + ['Vietnam', 'VN'], + ['Virgin Islands, British', 'VG'], + ['Virgin Islands, U.S.', 'VI'], + ['Wallis and Futuna', 'WF'], + ['Western Sahara', 'EH'], + ['Yemen', 'YE'], + ['Zambia', 'ZM'], + ['Zimbabwe', 'ZW'], ]; diff --git a/packages/react/src/components/checkout/address/get-country-region.ts b/packages/react/src/components/checkout/address/get-country-region.ts index ffaa4caf..63434ada 100644 --- a/packages/react/src/components/checkout/address/get-country-region.ts +++ b/packages/react/src/components/checkout/address/get-country-region.ts @@ -1,39 +1,29 @@ -import { allCountries, countryTuples } from "./country-region-data"; +import { allCountries, countryTuples } from './country-region-data'; export interface Country { - label: string; - value: string; + label: string; + value: string; } export const countries: Country[] = countryTuples.map(([label, value]) => ({ - label, - value, + label, + value, })); export function hasRegionData(countryCode: string): boolean { - const countryData = allCountries.find( - (country) => country[1] === countryCode, - ); - return !!( - countryData?.[2] && - Array.isArray(countryData[2]) && - countryData[2].length > 0 - ); + const countryData = allCountries.find(country => country[1] === countryCode); + return !!(countryData?.[2] && Array.isArray(countryData[2]) && countryData[2].length > 0); } -export function getRegions( - countryCode: string, -): { label: string; code: string }[] { - const countryData = allCountries.find( - (country) => country[1] === countryCode, - ); +export function getRegions(countryCode: string): { label: string; code: string }[] { + const countryData = allCountries.find(country => country[1] === countryCode); - if (!countryData || !countryData[2] || !Array.isArray(countryData[2])) { - return []; - } + if (!countryData || !countryData[2] || !Array.isArray(countryData[2])) { + return []; + } - return countryData[2].map((region: string[]) => ({ - label: region[0], - code: region[1], - })); + return countryData[2].map((region: (string | undefined)[]) => ({ + label: region[0] ?? '', + code: region[1] ?? region[0] ?? '', + })); } diff --git a/packages/react/src/components/checkout/address/index.ts b/packages/react/src/components/checkout/address/index.ts index 69677221..b8ea9f1e 100644 --- a/packages/react/src/components/checkout/address/index.ts +++ b/packages/react/src/components/checkout/address/index.ts @@ -1,2 +1,2 @@ -export * from "./address-form"; -export * from "./get-country-region"; +export * from './address-form'; +export * from './get-country-region'; diff --git a/packages/react/src/components/checkout/address/utils/check-is-valid-address.ts b/packages/react/src/components/checkout/address/utils/check-is-valid-address.ts index 1dd74953..f8c6e1b6 100644 --- a/packages/react/src/components/checkout/address/utils/check-is-valid-address.ts +++ b/packages/react/src/components/checkout/address/utils/check-is-valid-address.ts @@ -1,26 +1,16 @@ -import type { Address } from "@/types"; +import type { Address } from '@/types'; -const convertCountryCode = ( - country?: string | null, -): string | null | undefined => { - if (country === "USA") return "US"; - return country; +const convertCountryCode = (country?: string | null): string | null | undefined => { + if (country === 'USA') return 'US'; + return country; }; -export function checkIsValidAddress( - address: Address, - verifiedAddress?: Address, -) { - return ( - address.addressLine1?.toLowerCase() === - verifiedAddress?.addressLine1?.toLowerCase() && - address.adminArea1?.toLowerCase() === - verifiedAddress?.adminArea1?.toLowerCase() && - address.adminArea3?.toLowerCase() === - verifiedAddress?.adminArea3?.toLowerCase() && - address.postalCode?.toLowerCase() === - verifiedAddress?.postalCode?.toLowerCase() && - address.countryCode?.toLowerCase() === - convertCountryCode(verifiedAddress?.countryCode)?.toLowerCase() - ); +export function checkIsValidAddress(address: Address, verifiedAddress?: Address) { + return ( + address.addressLine1?.toLowerCase() === verifiedAddress?.addressLine1?.toLowerCase() && + address.adminArea1?.toLowerCase() === verifiedAddress?.adminArea1?.toLowerCase() && + address.adminArea2?.toLowerCase() === verifiedAddress?.adminArea3?.toLowerCase() && + address.postalCode?.toLowerCase() === verifiedAddress?.postalCode?.toLowerCase() && + address.countryCode?.toLowerCase() === convertCountryCode(verifiedAddress?.countryCode)?.toLowerCase() + ); } diff --git a/packages/react/src/components/checkout/address/utils/check-is-valid-phone.ts b/packages/react/src/components/checkout/address/utils/check-is-valid-phone.ts index afa48a80..e0ea8a57 100644 --- a/packages/react/src/components/checkout/address/utils/check-is-valid-phone.ts +++ b/packages/react/src/components/checkout/address/utils/check-is-valid-phone.ts @@ -1,7 +1,7 @@ -import { isPossiblePhoneNumber } from "react-phone-number-input"; +import { isPossiblePhoneNumber } from 'react-phone-number-input'; export function checkIsValidPhone(phoneNumber: string): boolean { - if (!phoneNumber) return false; + if (!phoneNumber) return false; - return isPossiblePhoneNumber(phoneNumber); + return isPossiblePhoneNumber(phoneNumber); } diff --git a/packages/react/src/components/checkout/address/utils/format-address.ts b/packages/react/src/components/checkout/address/utils/format-address.ts index ccc7b735..3cc96011 100644 --- a/packages/react/src/components/checkout/address/utils/format-address.ts +++ b/packages/react/src/components/checkout/address/utils/format-address.ts @@ -1,38 +1,29 @@ -import type { Address } from "@/types"; +import type { Address } from '@/types'; export function formatSingleLineAddress(address?: Address): string { - if (!address) return ""; + if (!address) return ''; - const { - addressLine1, - addressLine2, - addressLine3, - adminArea1, - adminArea2, - adminArea3, - adminArea4, - postalCode, - countryCode, - } = address; + const { addressLine1, addressLine2, addressLine3, adminArea1, adminArea2, adminArea3, adminArea4, postalCode, countryCode } = + address; - const parts = [ - addressLine1, - addressLine2, - addressLine3, - adminArea4, - adminArea3, - adminArea2, - adminArea1, - postalCode, - countryCode, - ]; + const parts = [ + addressLine1, + addressLine2, + addressLine3, + adminArea4, + adminArea3, + adminArea2, + adminArea1, + postalCode, + countryCode, + ]; - const seen = new Set(); - const formattedParts = parts.filter((part): part is string => { - if (!part || seen.has(part)) return false; - seen.add(part); - return true; - }); + const seen = new Set(); + const formattedParts = parts.filter((part): part is string => { + if (!part || seen.has(part)) return false; + seen.add(part); + return true; + }); - return formattedParts.join(", "); + return formattedParts.join(', '); } diff --git a/packages/react/src/components/checkout/address/utils/is-address-complete.ts b/packages/react/src/components/checkout/address/utils/is-address-complete.ts index c4226f5d..ed5d6f42 100644 --- a/packages/react/src/components/checkout/address/utils/is-address-complete.ts +++ b/packages/react/src/components/checkout/address/utils/is-address-complete.ts @@ -5,17 +5,17 @@ * @returns true if all required fields are present and non-empty */ export function isAddressComplete(address: { - addressLine1?: string; - adminArea1?: string; - adminArea2?: string; - postalCode?: string; - countryCode?: string; + addressLine1?: string; + adminArea1?: string; + adminArea2?: string; + postalCode?: string; + countryCode?: string; }): boolean { - return !!( - address.addressLine1?.trim() && - address.adminArea1?.trim() && - address.adminArea2?.trim() && - address.postalCode?.trim() && - address.countryCode?.trim() - ); + return !!( + address.addressLine1?.trim() && + address.adminArea1?.trim() && + address.adminArea2?.trim() && + address.postalCode?.trim() && + address.countryCode?.trim() + ); } diff --git a/packages/react/src/components/checkout/address/utils/map-address-fields-to-input.ts b/packages/react/src/components/checkout/address/utils/map-address-fields-to-input.ts index dd6c5bc6..79356ecd 100644 --- a/packages/react/src/components/checkout/address/utils/map-address-fields-to-input.ts +++ b/packages/react/src/components/checkout/address/utils/map-address-fields-to-input.ts @@ -1,17 +1,17 @@ -import type { UpdateDraftOrderInput } from "@/types"; +import type { UpdateDraftOrderInput } from '@/types'; export function mapAddressFieldsToInput>( - fields: T, - sectionKey: "shipping" | "billing", - useShippingAddress: boolean, -): Omit { - const input: Omit = {}; - if (sectionKey === "shipping" && useShippingAddress) { - input.shipping = { ...fields }; - input.billing = { ...fields }; - } else { - input[sectionKey] = { ...fields }; - } + fields: T, + sectionKey: 'shipping' | 'billing', + useShippingAddress: boolean +): Omit { + const input: Omit = {}; + if (sectionKey === 'shipping' && useShippingAddress) { + input.shipping = { ...fields }; + input.billing = { ...fields }; + } else { + input[sectionKey] = { ...fields }; + } - return input; + return input; } diff --git a/packages/react/src/components/checkout/address/utils/use-address-matches.ts b/packages/react/src/components/checkout/address/utils/use-address-matches.ts index 008b8900..46f03596 100644 --- a/packages/react/src/components/checkout/address/utils/use-address-matches.ts +++ b/packages/react/src/components/checkout/address/utils/use-address-matches.ts @@ -1,6 +1,6 @@ -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { getAddressMatches } from "@/lib/godaddy/godaddy"; -import { useQuery } from "@tanstack/react-query"; +import { useQuery } from '@tanstack/react-query'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { getAddressMatches } from '@/lib/godaddy/godaddy'; /** * Hook to fetch address matches for address autocomplete @@ -10,18 +10,18 @@ import { useQuery } from "@tanstack/react-query"; * @returns Query result with address matches data */ export function useAddressMatches( - debouncedAddressValue: string, - options: { - enabled: boolean; - } = { enabled: true }, + debouncedAddressValue: string, + options: { + enabled: boolean; + } = { enabled: true } ) { - const { session } = useCheckoutContext(); + const { session } = useCheckoutContext(); - return useQuery({ - queryKey: ["addressMatchesQuery", debouncedAddressValue], - queryFn: () => getAddressMatches({ query: debouncedAddressValue }, session), - enabled: !!debouncedAddressValue && !!session?.id && options.enabled, - placeholderData: (prev) => prev, - select: (data) => data.checkoutSession?.addresses, - }); + return useQuery({ + queryKey: ['addressMatchesQuery', debouncedAddressValue], + queryFn: () => getAddressMatches({ query: debouncedAddressValue }, session), + enabled: !!debouncedAddressValue && !!session?.id && options.enabled, + placeholderData: prev => prev, + select: data => data.checkoutSession?.addresses, + }); } diff --git a/packages/react/src/components/checkout/address/utils/use-address-verification.ts b/packages/react/src/components/checkout/address/utils/use-address-verification.ts index 607c30f7..d2f53dcb 100644 --- a/packages/react/src/components/checkout/address/utils/use-address-verification.ts +++ b/packages/react/src/components/checkout/address/utils/use-address-verification.ts @@ -1,20 +1,20 @@ -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { verifyAddress } from "@/lib/godaddy/godaddy"; -import { useQuery } from "@tanstack/react-query"; +import { useQuery } from '@tanstack/react-query'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { verifyAddress } from '@/lib/godaddy/godaddy'; /** * Address input for verification */ export interface AddressVerificationInput { - addressLine1: string; - addressLine2: string; - addressLine3: string; - postalCode: string; - countryCode: string; - adminArea1?: string; - adminArea2?: string; - adminArea3?: string; - adminArea4?: string; + addressLine1: string; + addressLine2: string; + addressLine3: string; + postalCode: string; + countryCode: string; + adminArea1?: string; + adminArea2?: string; + adminArea3?: string; + adminArea4?: string; } /** @@ -25,33 +25,29 @@ export interface AddressVerificationInput { * @returns Query result with verified address data */ export function useAddressVerification( - address: AddressVerificationInput, - options: { - enabled: boolean; - } = { enabled: true }, + address: AddressVerificationInput, + options: { + enabled: boolean; + } = { enabled: true } ) { - const { session } = useCheckoutContext(); + const { session } = useCheckoutContext(); - const queryKey = [ - "verifyAddressQuery", - { - addressLine1: address.addressLine1.toLowerCase(), - postalCode: address.postalCode.toLowerCase(), - countryCode: address.countryCode.toLowerCase(), - city: address.adminArea2?.toLowerCase(), - state: address.adminArea1?.toLowerCase(), - }, - ]; + const queryKey = [ + 'verifyAddressQuery', + { + sessionId: session?.id, + addressLine1: address?.addressLine1?.toLowerCase(), + postalCode: address?.postalCode?.toLowerCase(), + countryCode: address?.countryCode?.toLowerCase(), + city: address?.adminArea3?.toLowerCase(), + state: address?.adminArea1?.toLowerCase(), + }, + ]; - return useQuery({ - queryKey, - queryFn: async () => verifyAddress(address, session), - enabled: - options.enabled && - !!session?.id && - !!address.addressLine1 && - !!address.postalCode && - !!address.countryCode, - select: (data) => data.verifyAddress, - }); + return useQuery({ + queryKey, + queryFn: async () => verifyAddress(address, session), + enabled: options.enabled && !!session?.id && !!address?.addressLine1 && !!address?.postalCode && !!address?.countryCode, + select: data => data.verifyAddress, + }); } diff --git a/packages/react/src/components/checkout/address/utils/use-clear-billing-address.ts b/packages/react/src/components/checkout/address/utils/use-clear-billing-address.ts new file mode 100644 index 00000000..ea3f8ac6 --- /dev/null +++ b/packages/react/src/components/checkout/address/utils/use-clear-billing-address.ts @@ -0,0 +1,25 @@ +import { useFormContext } from 'react-hook-form'; +import { useTryUpdateDraftOrder } from '@/components/checkout/order/use-try-update-draft-order'; + +export function useClearBillingAddress() { + const form = useFormContext(); + const tryUpdateDraftOrder = useTryUpdateDraftOrder(); + + return function clearBillingAddress() { + tryUpdateDraftOrder({ + billing: null, + }); + form.setValue('billingAddressLine1', ''); + form.setValue('billingAddressLine2', ''); + form.setValue('billingAddressLine3', ''); + form.setValue('billingAdminArea4', ''); + form.setValue('billingAdminArea3', ''); + form.setValue('billingAdminArea2', ''); + form.setValue('billingAdminArea1', ''); + form.setValue('billingPostalCode', ''); + form.setValue('billingCountryCode', ''); + form.setValue('billingFirstName', ''); + form.setValue('billingLastName', ''); + form.setValue('billingPhone', ''); + }; +} diff --git a/packages/react/src/components/checkout/address/utils/use-sync-billing-address.ts b/packages/react/src/components/checkout/address/utils/use-sync-billing-address.ts new file mode 100644 index 00000000..c7f0cbca --- /dev/null +++ b/packages/react/src/components/checkout/address/utils/use-sync-billing-address.ts @@ -0,0 +1,67 @@ +import { useFormContext } from 'react-hook-form'; +import { useTryUpdateDraftOrder } from '@/components/checkout/order/use-try-update-draft-order'; + +export function useSyncBillingAddressWithShippingAddress() { + const form = useFormContext(); + const tryUpdateDraftOrder = useTryUpdateDraftOrder(); + + return function syncBillingAddressWithShippingAddress() { + tryUpdateDraftOrder({ + billing: { + firstName: form.getValues('shippingFirstName'), + lastName: form.getValues('shippingLastName'), + phone: form.getValues('shippingPhone'), + address: { + // Use the shipping address fields for billing address + // This assumes that the form has these fields defined + // and they are correctly populated with shipping address data + addressLine1: form.getValues('shippingAddressLine1'), + addressLine2: form.getValues('shippingAddressLine2'), + addressLine3: form.getValues('shippingAddressLine3'), + adminArea4: form.getValues('shippingAdminArea4'), + adminArea3: form.getValues('shippingAdminArea3'), + adminArea2: form.getValues('shippingAdminArea2'), + adminArea1: form.getValues('shippingAdminArea1'), + postalCode: form.getValues('shippingPostalCode'), + countryCode: form.getValues('shippingCountryCode'), + }, + }, + }); + form.setValue('billingFirstName', form.getValues('shippingFirstName'), { + shouldValidate: true, + }); + form.setValue('billingLastName', form.getValues('shippingLastName'), { + shouldValidate: true, + }); + form.setValue('billingPhone', form.getValues('shippingPhone'), { + shouldValidate: true, + }); + form.setValue('billingAddressLine1', form.getValues('shippingAddressLine1'), { + shouldValidate: true, + }); + form.setValue('billingAddressLine2', form.getValues('shippingAddressLine2'), { + shouldValidate: true, + }); + form.setValue('billingAddressLine3', form.getValues('shippingAddressLine3'), { + shouldValidate: true, + }); + form.setValue('billingAdminArea4', form.getValues('shippingAdminArea4'), { + shouldValidate: true, + }); + form.setValue('billingAdminArea3', form.getValues('shippingAdminArea3'), { + shouldValidate: true, + }); + form.setValue('billingAdminArea2', form.getValues('shippingAdminArea2'), { + shouldValidate: true, + }); + form.setValue('billingAdminArea1', form.getValues('shippingAdminArea1'), { + shouldValidate: true, + }); + form.setValue('billingPostalCode', form.getValues('shippingPostalCode'), { + shouldValidate: true, + }); + form.setValue('billingCountryCode', form.getValues('shippingCountryCode'), { + shouldValidate: true, + }); + }; +} diff --git a/packages/react/src/components/checkout/checkout-section-header.tsx b/packages/react/src/components/checkout/checkout-section-header.tsx index 821e9fb6..e6d00f50 100644 --- a/packages/react/src/components/checkout/checkout-section-header.tsx +++ b/packages/react/src/components/checkout/checkout-section-header.tsx @@ -1,31 +1,25 @@ -import { cn } from "@/lib/utils"; +import { cn } from '@/lib/utils'; export function CheckoutSectionHeader({ - title, - description, - className, - classNames, + title, + description, + className, + classNames, }: React.PropsWithChildren<{ - title?: string; - description?: string; - className?: string; - classNames?: { - title?: string; - description?: string; - }; + title?: string; + description?: string; + className?: string; + classNames?: { + title?: string; + description?: string; + }; }>) { - return ( -
-
- {title ? ( -

{title}

- ) : null} - {description ? ( -

- {description} -

- ) : null} -
-
- ); + return ( +
+
+ {title ?

{title}

: null} + {description ?

{description}

: null} +
+
+ ); } diff --git a/packages/react/src/components/checkout/checkout-section.tsx b/packages/react/src/components/checkout/checkout-section.tsx index 9f4ba84c..75a7d758 100644 --- a/packages/react/src/components/checkout/checkout-section.tsx +++ b/packages/react/src/components/checkout/checkout-section.tsx @@ -1,16 +1,16 @@ -import { cn } from "@/lib/utils"; +import { cn } from '@/lib/utils'; export function CheckoutSection({ - children, - className, - style, + children, + className, + style, }: React.PropsWithChildren<{ - className?: string; - style?: React.CSSProperties; + className?: string; + style?: React.CSSProperties; }>) { - return ( -
- {children} -
- ); + return ( +
+ {children} +
+ ); } diff --git a/packages/react/src/components/checkout/checkout-skeleton.tsx b/packages/react/src/components/checkout/checkout-skeleton.tsx index 67146dd0..0098c9a7 100644 --- a/packages/react/src/components/checkout/checkout-skeleton.tsx +++ b/packages/react/src/components/checkout/checkout-skeleton.tsx @@ -1,129 +1,123 @@ -import { LineItemSkeleton } from "@/components/checkout/line-items/line-item-skeleton"; -import { TotalsSkeleton } from "@/components/checkout/totals/totals-skeleton"; -import { Skeleton } from "@/components/ui/skeleton"; -import { CheckoutSection } from "./checkout-section"; +import { LineItemSkeleton } from '@/components/checkout/line-items/line-item-skeleton'; +import { TotalsSkeleton } from '@/components/checkout/totals/totals-skeleton'; +import { Skeleton } from '@/components/ui/skeleton'; +import { CheckoutSection } from './checkout-section'; function CheckoutSectionHeaderSkeleton() { - return ( -
- - -
- ); + return ( +
+ + +
+ ); } export function CheckoutSkeleton({ direction }: { direction?: string }) { - return ( -
-
- {/* Left column - Forms */} -
-
-
-
- {/* Contact section skeleton */} - - -
- -
-
+ return ( +
+
+ {/* Left column - Forms */} +
+
+
+
+ {/* Contact section skeleton */} + + +
+ +
+
- {/* Delivery section skeleton */} - - -
- {[1, 2].map((i, index) => ( -
-
- -
- - -
-
-
- -
-
- ))} -
-
+ {/* Delivery section skeleton */} + + +
+ {[1, 2].map((i, index) => ( +
+
+ +
+ + +
+
+
+ +
+
+ ))} +
+
- {/* Payment section skeleton */} - - -
- -
- - -
- -
-
-
+ {/* Payment section skeleton */} + + +
+ +
+ + +
+ +
+
+
-
- -
-
-
-
+
+ +
+
+
+
- {/* Right column - Order summary */} -
-
- {/* Mobile view */} -
- {/* Collapsible summary header for mobile */} -
-
- - -
- -
- -
+ {/* Right column - Order summary */} +
+
+ {/* Mobile view */} +
+ {/* Collapsible summary header for mobile */} +
+
+ + +
+ +
+ +
- {/* Desktop view - always visible */} -
- - -
-
-
-
-
- ); + {/* Desktop view - always visible */} +
+ + +
+
+
+
+
+ ); } diff --git a/packages/react/src/components/checkout/checkout.tsx b/packages/react/src/components/checkout/checkout.tsx index 9e22c168..615d1a65 100644 --- a/packages/react/src/components/checkout/checkout.tsx +++ b/packages/react/src/components/checkout/checkout.tsx @@ -1,533 +1,329 @@ -"use client"; - -import { hasRegionData } from "@/components/checkout/address"; -import { checkIsValidPhone } from "@/components/checkout/address/utils/check-is-valid-phone"; -import { DeliveryMethods } from "@/components/checkout/delivery/delivery-method"; -import { getRequiredFieldsFromSchema } from "@/components/checkout/form/utils/get-required-fields-from-schema"; -import { type GoDaddyVariables, useGoDaddyContext } from "@/godaddy-provider"; -import { type Theme, useTheme } from "@/hooks/use-theme"; -import { useVariables } from "@/hooks/use-variables"; -import { TrackingProvider } from "@/tracking/tracking-provider"; -import type { CheckoutSession } from "@/types"; -import React, { type ReactNode } from "react"; -import { z } from "zod"; -import { CheckoutFormContainer } from "./form/checkout-form-container"; -import type { Target } from "./target/target"; +'use client'; + +import React, { type ReactNode } from 'react'; +import { z } from 'zod'; +import { hasRegionData } from '@/components/checkout/address'; +import { checkIsValidPhone } from '@/components/checkout/address/utils/check-is-valid-phone'; +import { DeliveryMethods } from '@/components/checkout/delivery/delivery-method'; +import { getRequiredFieldsFromSchema } from '@/components/checkout/form/utils/get-required-fields-from-schema'; +import { type GoDaddyVariables, useGoDaddyContext } from '@/godaddy-provider'; +import { type Theme, useTheme } from '@/hooks/use-theme'; +import { useVariables } from '@/hooks/use-variables'; +import type { TrackingProperties } from '@/tracking/event-properties'; +import { TrackingProvider } from '@/tracking/tracking-provider'; +import type { CheckoutSession } from '@/types'; +import { CheckoutFormContainer } from './form/checkout-form-container'; +import type { Target } from './target/target'; // Utility function for redirecting to success URL after checkout export function redirectToSuccessUrl(successUrl?: string): void { - if (successUrl && typeof window !== "undefined") { - window.location.href = successUrl; - } + if (successUrl && typeof window !== 'undefined') { + setTimeout(() => { + window.location.href = successUrl; + }, 1000); + } } export interface CheckoutElements { - input?: string; - select?: string; - button?: string; - card?: string; - checkbox?: string; - radio?: string; + input?: string; + select?: string; + button?: string; + card?: string; + checkbox?: string; + radio?: string; } interface Appearance { - theme?: Theme; - elements?: CheckoutElements; - variables?: Omit; + theme?: Theme; + elements?: CheckoutElements; + variables?: Omit; } -export type LayoutSection = - | "express-checkout" - | "contact" - | "shipping" - | "payment" - | "pickup" - | "tips" - | "delivery"; +export type LayoutSection = 'express-checkout' | 'contact' | 'shipping' | 'payment' | 'pickup' | 'tips' | 'delivery'; export const LayoutSections = { - EXPRESS_CHECKOUT: "express-checkout", - CONTACT: "contact", - SHIPPING: "shipping", - PAYMENT: "payment", - PICKUP: "pickup", - DELIVERY: "delivery", - TIPS: "tips", + EXPRESS_CHECKOUT: 'express-checkout', + CONTACT: 'contact', + SHIPPING: 'shipping', + PAYMENT: 'payment', + PICKUP: 'pickup', + DELIVERY: 'delivery', + TIPS: 'tips', } as const; export type StripeConfig = { - publishableKey: string; - testMode?: boolean; + publishableKey: string; + testMode?: boolean; }; export type GodaddyPaymentsConfig = { - businessId: string; - appId: string; + businessId: string; + appId: string; }; export type SquareConfig = { - locationId: string; - appId: string; + locationId: string; + appId: string; }; export type PayPalConfig = { - clientId: string; - disableFunding?: Array<"credit" | "card" | "paylater" | "venmo">; + clientId: string; + disableFunding?: Array<'credit' | 'card' | 'paylater' | 'venmo'>; }; interface CheckoutContextValue { - elements?: CheckoutElements; - targets?: Partial ReactNode>>; - session?: CheckoutSession; - isCheckoutDisabled?: boolean; - stripeConfig?: StripeConfig; - godaddyPaymentsConfig?: GodaddyPaymentsConfig; - squareConfig?: SquareConfig; - paypalConfig?: PayPalConfig; - isConfirmingCheckout: boolean; - setIsConfirmingCheckout: (isConfirming: boolean) => void; - checkoutErrors?: string[] | undefined; - setCheckoutErrors: (error?: string[] | undefined) => void; - requiredFields?: { [key: string]: boolean }; -} -/** - * Non-digit regex. - */ -const NON_DIGIT_REGEX = /\D/g; - -export function _isLuhnAlgo(input: string): boolean { - // Remove any non-digit chars - const number = input.replace(NON_DIGIT_REGEX, ""); - - // Create necessary variables - let length = number.length; - let bit = 1; - let sum = 0; - - // Calculate sum of algorithm - while (length) { - const value = +number[--length]; - bit ^= 1; - sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value] : value; - } - - // Return whether its valid - return sum % 10 === 0; + elements?: CheckoutElements; + targets?: Partial ReactNode>>; + session?: CheckoutSession; + isCheckoutDisabled?: boolean; + stripeConfig?: StripeConfig; + godaddyPaymentsConfig?: GodaddyPaymentsConfig; + squareConfig?: SquareConfig; + paypalConfig?: PayPalConfig; + isConfirmingCheckout: boolean; + setIsConfirmingCheckout: (isConfirming: boolean) => void; + checkoutErrors?: string[] | undefined; + setCheckoutErrors: (error?: string[] | undefined) => void; + requiredFields?: { [key: string]: boolean }; } export const checkoutContext = React.createContext({ - isConfirmingCheckout: false, - setIsConfirmingCheckout: () => {}, - checkoutErrors: undefined, - setCheckoutErrors: () => {}, + isConfirmingCheckout: false, + setIsConfirmingCheckout: () => { + // no op + }, + checkoutErrors: undefined, + setCheckoutErrors: () => { + // no op + }, }); export const useCheckoutContext = () => React.useContext(checkoutContext); export const baseCheckoutSchema = z.object({ - contactEmail: z - .string() - .min(1, "Enter an email") - .email("Enter a valid email"), - deliveryMethod: z.nativeEnum(DeliveryMethods).describe("fulfillmentModes"), - paymentUseShippingAddress: z.boolean().default(true), - shippingFirstName: z.string().max(60), - shippingLastName: z.string().max(60), - shippingPhone: z.string().max(15, "Phone number too long").optional(), - shippingAddressLine1: z.string().max(300), - shippingAddressLine2: z.string().max(300).optional(), - shippingAddressLine3: z.string().max(300).optional(), - shippingAdminArea4: z - .string() - .max(100) - .describe("The neighborhood") - .optional(), - shippingAdminArea3: z - .string() - .max(100) - .describe("City, town, or village") - .optional(), - shippingAdminArea2: z.string().max(100).describe("Sub-locality or suburb"), - shippingAdminArea1: z.string().max(100).describe("State or province"), - shippingPostalCode: z.string().max(60), - shippingCountryCode: z.string().max(2), - shippingMethod: z.string().optional(), - shippingValid: z.literal(true, { - errorMap: () => ({ message: "Invalid shipping address" }), - }), - billingFirstName: z.string().max(60), - billingLastName: z.string().max(60), - billingPhone: z.string().max(15, "Phone number too long").optional(), - billingAddressLine1: z.string().max(300), - billingAddressLine2: z.string().max(300).optional(), - billingAddressLine3: z.string().max(300).optional(), - billingAdminArea4: z - .string() - .max(100) - .describe("The neighborhood") - .optional(), - billingAdminArea3: z - .string() - .max(100) - .describe("City, town, or village") - .optional(), - billingAdminArea2: z.string().max(100).describe("Sub-locality or suburb"), - billingAdminArea1: z.string().max(100).describe("State or province"), - billingPostalCode: z.string().max(60), - billingCountryCode: z.string().max(2), - billingValid: z.literal(true, { - errorMap: () => ({ message: "Invalid billing address" }), - }), - paymentCardNumber: z.string().optional(), - paymentCardNumberDisplay: z.string().optional(), - paymentCardType: z.string().optional(), - paymentExpiryDate: z.string().optional(), - paymentMonth: z.string().nullish(), - paymentYear: z.string().nullish(), - paymentSecurityCode: z.string().optional(), - paymentNameOnCard: z.string().optional(), - notes: z.string().optional(), - pickupDate: z.union([z.string(), z.date()]).nullish(), - pickupTime: z.string().nullish(), - pickupLocationId: z.string().nullish(), - pickupLeadTime: z.number().nullish(), - pickupTimezone: z.string().nullish(), - tipAmount: z.number().optional(), - tipPercentage: z.number().optional(), - paymentMethod: z.string().min(1, "Select a payment method"), - stripePaymentIntent: z.string().optional(), - stripePaymentIntentId: z.string().optional(), + contactEmail: z.string().min(1, 'Enter an email').email('Enter a valid email'), + deliveryMethod: z.nativeEnum(DeliveryMethods).describe('fulfillmentModes'), + paymentUseShippingAddress: z.boolean().default(true), + shippingFirstName: z.string().max(60), + shippingLastName: z.string().max(60), + shippingPhone: z.string().max(15, 'Phone number too long').optional(), + shippingAddressLine1: z.string().max(300), + shippingAddressLine2: z.string().max(300).optional(), + shippingAddressLine3: z.string().max(300).optional(), + shippingAdminArea4: z.string().max(100).describe('The neighborhood').optional(), + shippingAdminArea3: z.string().max(100).describe('City, town, or village').optional(), + shippingAdminArea2: z.string().max(100).describe('Sub-locality or suburb'), + shippingAdminArea1: z.string().max(100).describe('State or province'), + shippingPostalCode: z.string().max(60), + shippingCountryCode: z.string().max(2), + shippingMethod: z.string().optional(), + shippingValid: z.literal(true, { + errorMap: () => ({ message: 'Invalid shipping address' }), + }), + billingFirstName: z.string().max(60), + billingLastName: z.string().max(60), + billingPhone: z.string().max(15, 'Phone number too long').optional(), + billingAddressLine1: z.string().max(300), + billingAddressLine2: z.string().max(300).optional(), + billingAddressLine3: z.string().max(300).optional(), + billingAdminArea4: z.string().max(100).describe('The neighborhood').optional(), + billingAdminArea3: z.string().max(100).describe('City, town, or village').optional(), + billingAdminArea2: z.string().max(100).describe('Sub-locality or suburb'), + billingAdminArea1: z.string().max(100).describe('State or province'), + billingPostalCode: z.string().max(60), + billingCountryCode: z.string().max(2), + billingValid: z.literal(true, { + errorMap: () => ({ message: 'Invalid billing address' }), + }), + paymentCardNumber: z.string().optional(), + paymentCardNumberDisplay: z.string().optional(), + paymentCardType: z.string().optional(), + paymentExpiryDate: z.string().optional(), + paymentMonth: z.string().nullish(), + paymentYear: z.string().nullish(), + paymentSecurityCode: z.string().optional(), + paymentNameOnCard: z.string().optional(), + notes: z.string().optional(), + pickupDate: z.union([z.string(), z.date()]).nullish(), + pickupTime: z.string().nullish(), + pickupLocationId: z.string().nullish(), + pickupLeadTime: z.number().nullish(), + pickupTimezone: z.string().nullish(), + tipAmount: z.number().optional(), + tipPercentage: z.number().optional(), + paymentMethod: z.string().min(1, 'Select a payment method'), + stripePaymentIntent: z.string().optional(), + stripePaymentIntentId: z.string().optional(), }); // We cannot use refine here, as it would not allow extending the schema with session overrides. -export type CheckoutFormSchema = Partial<{ - [K in keyof z.infer]: z.ZodTypeAny; -}> & - z.ZodRawShape; +export type CheckoutFormSchema = { + [K in keyof z.infer]?: z.ZodTypeAny; +} & { + [key: string]: z.ZodTypeAny; +}; export type CheckoutFormData = z.infer; export interface CheckoutProps { - session: CheckoutSession | undefined; - appearance?: Appearance; - isCheckoutDisabled?: boolean; - stripeConfig?: StripeConfig; - godaddyPaymentsConfig?: GodaddyPaymentsConfig; - squareConfig?: SquareConfig; - paypalConfig?: PayPalConfig; - layout?: LayoutSection[]; - direction?: "ltr" | "rtl"; - showStoreHours?: boolean; - enableTracking?: boolean; - targets?: Partial ReactNode>>; - checkoutFormSchema?: CheckoutFormSchema; - defaultValues?: Pick; + session: CheckoutSession | undefined; + appearance?: Appearance; + isCheckoutDisabled?: boolean; + stripeConfig?: StripeConfig; + godaddyPaymentsConfig?: GodaddyPaymentsConfig; + squareConfig?: SquareConfig; + paypalConfig?: PayPalConfig; + layout?: LayoutSection[]; + direction?: 'ltr' | 'rtl'; + showStoreHours?: boolean; + enableTracking?: boolean; + trackingProperties?: TrackingProperties; + targets?: Partial ReactNode>>; + checkoutFormSchema?: CheckoutFormSchema; + defaultValues?: Pick; } export function Checkout(props: CheckoutProps) { - const { - session, - checkoutFormSchema, - enableTracking = false, - stripeConfig, - godaddyPaymentsConfig, - squareConfig, - paypalConfig, - isCheckoutDisabled, - } = props; - - const [isConfirmingCheckout, setIsConfirmingCheckout] = React.useState(false); - const [checkoutErrors, setCheckoutErrors] = React.useState< - string[] | undefined - >(undefined); - const { t } = useGoDaddyContext(); - - useTheme(); - useVariables(props?.appearance?.variables); - - const formSchema = React.useMemo(() => { - const extendedSchema = checkoutFormSchema - ? baseCheckoutSchema.extend(checkoutFormSchema) - : baseCheckoutSchema; - - return extendedSchema.superRefine((data, ctx) => { - if (data.billingPhone) { - if (!checkIsValidPhone(String(data?.billingPhone))) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: "Enter a valid billing phone number", - path: ["billingPhone"], - }); - } - } - - if (data.shippingPhone) { - if (!checkIsValidPhone(String(data?.shippingPhone))) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: "Enter a valid shipping phone number", - path: ["shippingPhone"], - }); - } - } - // Skip validation if payment method isn't credit card - // const selectedMethod = data.paymentMethod - // ? session?.paymentMethods?.[ - // data.paymentMethod as keyof typeof session.paymentMethods - // ] - // : null; - - // if ( - // data.paymentMethod === PaymentMethodType.CREDIT_CARD && - // selectedMethod?.processor === PaymentProvider.GODADDY - // ) { - // // Validate card number presence - // if (!data.paymentCardNumber) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a card number", - // path: ["paymentCardNumber"], - // }); - // } - // - // // Validate card number display and format - // if (!data.paymentCardNumberDisplay) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a card number", - // path: ["paymentCardNumberDisplay"], - // }); - // } else { - // // Card number format validation - // const SANITIZE_REGEX = /[- ]/g; - // const CREDIT_CARD_REGEX = - // /^(?:\d{14,19}|\d{4}(?: \d{3,6}){2,4}|\d{4}(?:-\d{3,6}){2,4})$/; - // const PROVIDER_REGEX_LIST = [ - // // American Express - // /^3[47]\d{13}$/, - // // Diners Club - // /^3(?:0[0-5]|[68]\d)\d{11,13}$/, - // // Discover - // /^6(?:011|5\d{2})\d{12,15}$/, - // // JCB - // /^(?:2131|1800|35\d{3})\d{11}$/, - // // Mastercard - // /^5[1-5]\d{2}|(?:222\d|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)\d{12}$/, - // // UnionPay - // /^(?:6[27]\d{14,17}|81\d{14,17})$/, - // // Visa - // /^4\d{12}(?:\d{3,6})?$/, - // ]; - // - // const sanitized = String(data.paymentCardNumberDisplay).replace( - // SANITIZE_REGEX, - // "", - // ); - // - // const isValid = - // CREDIT_CARD_REGEX.test(String(data?.paymentCardNumberDisplay)) && - // sanitized && - // PROVIDER_REGEX_LIST.some((regex) => regex.test(sanitized)) && - // _isLuhnAlgo(sanitized); - // - // if (!isValid) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a valid card number", - // path: ["paymentCardNumberDisplay"], - // }); - // } - // } - // - // // Validate expiry date - // if (!data.paymentExpiryDate) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter an expiration date", - // path: ["paymentExpiryDate"], - // }); - // } else { - // const [monthInput, yearInput] = String(data.paymentExpiryDate) - // .split(" / ") - // .map((str) => str.trim()); - // - // if (!monthInput || !yearInput) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a valid expiration date", - // path: ["paymentExpiryDate"], - // }); - // return; - // } - // - // const month = Number.parseInt(monthInput, 10); - // const year = Number.parseInt(yearInput, 10) + 2000; - // - // if (Number.isNaN(month) || Number.isNaN(year)) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a valid expiration date", - // path: ["paymentExpiryDate"], - // }); - // return; - // } - // - // if (month < 1 || month > 12) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a valid month", - // path: ["paymentExpiryDate"], - // }); - // return; - // } - // - // // Last day of the month - // const expiryDate = new Date(year, month, 0, 23, 59, 59, 999); - // - // if (Number.isNaN(expiryDate.getTime())) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a valid expiration date", - // path: ["paymentExpiryDate"], - // }); - // return; - // } - // - // const now = new Date(); - // if (expiryDate <= now) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a valid future date", - // path: ["paymentExpiryDate"], - // }); - // } - // } - // - // // Validate security code - // if (!data.paymentSecurityCode) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter a security code", - // path: ["paymentSecurityCode"], - // }); - // } - // - // // Validate name on card - // if (!data.paymentNameOnCard) { - // ctx.addIssue({ - // code: z.ZodIssueCode.custom, - // message: "Enter the name on card", - // path: ["paymentNameOnCard"], - // }); - // } - //} - - // Billing address validation - only required if not using shipping address OR pickup - const requireBillingAddress = - !data.paymentUseShippingAddress || data.deliveryMethod === "PICKUP"; - - if (requireBillingAddress) { - // Basic billing fields required for all countries - const billingFields = [ - { key: "billingFirstName", message: t.validation.enterFirstName }, - { key: "billingLastName", message: t.validation.enterLastName }, - { key: "billingAddressLine1", message: t.validation.enterAddress }, - { key: "billingAdminArea2", message: t.validation.enterCity }, - { - key: "billingPostalCode", - message: t.validation.enterZipPostalCode, - }, - { key: "billingCountryCode", message: t.validation.enterCountry }, - ]; - - if (hasRegionData(String(data.billingCountryCode))) { - billingFields.push({ - key: "billingAdminArea1", - message: t.validation.selectState, - }); - } - - for (const { key, message } of billingFields) { - if (!data[key as keyof typeof data]) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message, - path: [key], - }); - } - } - } - - // Shipping address validation - only required if delivery method is SHIP - const requireShippingAddress = - data.deliveryMethod === DeliveryMethods.SHIP; - - if (requireShippingAddress) { - // Basic shipping fields required for all countries - const shippingFields = [ - { key: "shippingFirstName", message: t.validation.enterFirstName }, - { key: "shippingLastName", message: t.validation.enterLastName }, - { key: "shippingAddressLine1", message: t.validation.enterAddress }, - { key: "shippingAdminArea2", message: t.validation.enterCity }, - { - key: "shippingPostalCode", - message: t.validation.enterZipPostalCode, - }, - { key: "shippingCountryCode", message: t.validation.enterCountry }, - ]; - - if (hasRegionData(String(data.shippingCountryCode))) { - shippingFields.push({ - key: "shippingAdminArea1", - message: t.validation.selectState, - }); - } - - for (const { key, message } of shippingFields) { - if (!data[key as keyof typeof data]) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message, - path: [key], - }); - } - } - } - }); - }, [checkoutFormSchema, t]); - // }, [checkoutFormSchema, session?.paymentMethods]); - - const requiredFields = React.useMemo(() => { - return getRequiredFieldsFromSchema(formSchema); - }, [formSchema]); - - return ( - - - - - - ); + const { + session, + checkoutFormSchema, + enableTracking = false, + trackingProperties, + stripeConfig, + godaddyPaymentsConfig, + squareConfig, + paypalConfig, + isCheckoutDisabled, + } = props; + + const [isConfirmingCheckout, setIsConfirmingCheckout] = React.useState(false); + const [checkoutErrors, setCheckoutErrors] = React.useState(undefined); + const { t } = useGoDaddyContext(); + + useTheme(); + useVariables(props?.appearance?.variables); + + const formSchema = React.useMemo(() => { + const extendedSchema = checkoutFormSchema ? baseCheckoutSchema.extend(checkoutFormSchema) : baseCheckoutSchema; + + return extendedSchema.superRefine((data, ctx) => { + if (data.billingPhone) { + if (!checkIsValidPhone(String(data?.billingPhone))) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'Enter a valid billing phone number', + path: ['billingPhone'], + }); + } + } + + if (data.shippingPhone) { + if (!checkIsValidPhone(String(data?.shippingPhone))) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'Enter a valid shipping phone number', + path: ['shippingPhone'], + }); + } + } + + // Billing address validation - only required if not using shipping address OR pickup + const requireBillingAddress = !data.paymentUseShippingAddress || data.deliveryMethod === DeliveryMethods.PICKUP; + + if (requireBillingAddress) { + // Basic billing fields required for all countries + const billingFields = [ + { key: 'billingFirstName', message: t.validation.enterFirstName }, + { key: 'billingLastName', message: t.validation.enterLastName }, + { key: 'billingAddressLine1', message: t.validation.enterAddress }, + { key: 'billingAdminArea2', message: t.validation.enterCity }, + { + key: 'billingPostalCode', + message: t.validation.enterZipPostalCode, + }, + { key: 'billingCountryCode', message: t.validation.enterCountry }, + ]; + + if (hasRegionData(String(data.billingCountryCode))) { + billingFields.push({ + key: 'billingAdminArea1', + message: t.validation.selectState, + }); + } + + for (const { key, message } of billingFields) { + if (!data[key as keyof typeof data]) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message, + path: [key], + }); + } + } + } + + // Shipping address validation - only required if delivery method is SHIP + const requireShippingAddress = data.deliveryMethod === DeliveryMethods.SHIP; + + if (requireShippingAddress) { + // Basic shipping fields required for all countries + const shippingFields = [ + { key: 'shippingFirstName', message: t.validation.enterFirstName }, + { key: 'shippingLastName', message: t.validation.enterLastName }, + { key: 'shippingAddressLine1', message: t.validation.enterAddress }, + { key: 'shippingAdminArea2', message: t.validation.enterCity }, + { + key: 'shippingPostalCode', + message: t.validation.enterZipPostalCode, + }, + { key: 'shippingCountryCode', message: t.validation.enterCountry }, + ]; + + if (hasRegionData(String(data.shippingCountryCode))) { + shippingFields.push({ + key: 'shippingAdminArea1', + message: t.validation.selectState, + }); + } + + for (const { key, message } of shippingFields) { + if (!data[key as keyof typeof data]) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message, + path: [key], + }); + } + } + } + }); + }, [checkoutFormSchema, t]); + // }, [checkoutFormSchema, session?.paymentMethods]); + + const requiredFields = React.useMemo(() => { + return getRequiredFieldsFromSchema(formSchema); + }, [formSchema]); + + return ( + + + + + + ); } diff --git a/packages/react/src/components/checkout/contact/contact-form.tsx b/packages/react/src/components/checkout/contact/contact-form.tsx index 957e892b..ce51ccd7 100644 --- a/packages/react/src/components/checkout/contact/contact-form.tsx +++ b/packages/react/src/components/checkout/contact/contact-form.tsx @@ -1,113 +1,97 @@ -"use client"; +'use client'; -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { useDraftOrder } from "@/components/checkout/order/use-draft-order"; -import { useDraftOrderFieldSync } from "@/components/checkout/order/use-draft-order-sync"; -import { - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Input } from "@/components/ui/input"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -import { useDebouncedValue } from "@tanstack/react-pacer"; -import { useMemo } from "react"; -import { useFormContext } from "react-hook-form"; +import { useDebouncedValue } from '@tanstack/react-pacer'; +import { useMemo } from 'react'; +import { useFormContext } from 'react-hook-form'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { useDraftOrder } from '@/components/checkout/order/use-draft-order'; +import { useDraftOrderFieldSync } from '@/components/checkout/order/use-draft-order-sync'; +import { FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; +import { Input } from '@/components/ui/input'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; export function ContactForm() { - const form = useFormContext(); - const { t } = useGoDaddyContext(); - const { isConfirmingCheckout, requiredFields } = useCheckoutContext(); - const { data: draftOrder } = useDraftOrder(); + const form = useFormContext(); + const { t } = useGoDaddyContext(); + const { isConfirmingCheckout, requiredFields } = useCheckoutContext(); + const { data: draftOrder } = useDraftOrder(); - const contactEmail = form.watch("contactEmail"); + const contactEmail = form.watch('contactEmail'); - // Check if email values differ from order values - const emailHasChanged = useMemo(() => { - if (!draftOrder) return true; // If no order, allow sync + // Check if email values differ from order values + const emailHasChanged = useMemo(() => { + if (!draftOrder) return true; // If no order, allow sync - const shippingEmailMissing = !draftOrder?.shipping?.email; - const billingEmailMissing = !draftOrder?.billing?.email; + const shippingEmailMissing = !draftOrder?.shipping?.email; + const billingEmailMissing = !draftOrder?.billing?.email; - const shippingIsDifferent = draftOrder?.shipping?.email !== contactEmail; - const billingIsDifferent = draftOrder?.billing?.email !== contactEmail; + const shippingIsDifferent = draftOrder?.shipping?.email !== contactEmail; + const billingIsDifferent = draftOrder?.billing?.email !== contactEmail; - return ( - !!contactEmail?.trim() && - (shippingEmailMissing || - billingEmailMissing || - shippingIsDifferent || - billingIsDifferent) - ); - }, [draftOrder, contactEmail]); + return !!contactEmail?.trim() && (shippingEmailMissing || billingEmailMissing || shippingIsDifferent || billingIsDifferent); + }, [draftOrder, contactEmail]); - const [email] = useDebouncedValue(contactEmail, { - wait: 1000, - }); + const [email] = useDebouncedValue(contactEmail, { + wait: 1000, + }); - useDraftOrderFieldSync({ - key: "email", - data: email, - deps: [email, emailHasChanged, draftOrder], - enabled: - emailHasChanged && - email?.trim() && - email === contactEmail && - !!draftOrder, - fieldNames: ["contactEmail"], - mapToInput: (email) => { - if (!draftOrder) return {}; + useDraftOrderFieldSync({ + key: 'email', + data: email, + deps: [email, emailHasChanged, draftOrder], + enabled: emailHasChanged && email?.trim() && email === contactEmail && !!draftOrder, + fieldNames: ['contactEmail'], + mapToInput: emailValue => { + if (!draftOrder) return {}; - const shippingIsDifferent = draftOrder?.shipping?.email !== email; - const billingIsDifferent = draftOrder?.billing?.email !== email; + const shippingIsDifferent = draftOrder?.shipping?.email !== emailValue; + const billingIsDifferent = draftOrder?.billing?.email !== emailValue; - return { - ...(shippingIsDifferent ? { shipping: { email: email?.trim() } } : {}), - ...(billingIsDifferent ? { billing: { email: email?.trim() } } : {}), - }; - }, - }); + return { + ...(shippingIsDifferent ? { shipping: { email: emailValue?.trim() } } : {}), + ...(billingIsDifferent ? { billing: { email: emailValue?.trim() } } : {}), + }; + }, + }); - return ( -
- ( - - {t.contact.email} - - { - field.onBlur(); + return ( +
+ ( + + {t.contact.email} + + { + field.onBlur(); - // Only track on blur if value is present and valid - if (e.target.value && !fieldState.error) { - track({ - eventId: eventIds.changeEmail, - type: TrackingEventType.CLICK, - properties: { - hasValue: !!e.target.value, - isValid: !fieldState.error, - }, - }); - } - }} - /> - - - - )} - /> -
- ); + // Only track on blur if value is present and valid + if (e.target.value && !fieldState.error) { + track({ + eventId: eventIds.changeEmail, + type: TrackingEventType.CLICK, + properties: { + hasValue: !!e.target.value, + isValid: !fieldState.error, + }, + }); + } + }} + /> +
+ +
+ )} + /> +
+ ); } diff --git a/packages/react/src/components/checkout/contact/phone-input.tsx b/packages/react/src/components/checkout/contact/phone-input.tsx index 5e08c0c2..e50d891d 100644 --- a/packages/react/src/components/checkout/contact/phone-input.tsx +++ b/packages/react/src/components/checkout/contact/phone-input.tsx @@ -1,295 +1,259 @@ -"use client"; +'use client'; -import { checkIsValidPhone } from "@/components/checkout/address/utils/check-is-valid-phone"; -import { mapAddressFieldsToInput } from "@/components/checkout/address/utils/map-address-fields-to-input"; -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { useDraftOrder } from "@/components/checkout/order/use-draft-order"; -import { useDraftOrderFieldSync } from "@/components/checkout/order/use-draft-order-sync"; -import { Button } from "@/components/ui/button"; -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, - CommandList, -} from "@/components/ui/command"; -import { - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Input } from "@/components/ui/input"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/components/ui/popover"; -import { ScrollArea } from "@/components/ui/scroll-area"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { cn } from "@/lib/utils"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -import { useDebouncedValue } from "@tanstack/react-pacer"; -import { CheckIcon, ChevronsUpDown } from "lucide-react"; -import React from "react"; -import { useFormContext } from "react-hook-form"; -import * as RPNInput from "react-phone-number-input"; -import flags from "react-phone-number-input/flags"; +import { useDebouncedValue } from '@tanstack/react-pacer'; +import { CheckIcon, ChevronsUpDown } from 'lucide-react'; +import React from 'react'; +import { useFormContext } from 'react-hook-form'; +import * as RPNInput from 'react-phone-number-input'; +import flags from 'react-phone-number-input/flags'; +import { checkIsValidPhone } from '@/components/checkout/address/utils/check-is-valid-phone'; +import { mapAddressFieldsToInput } from '@/components/checkout/address/utils/map-address-fields-to-input'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { useDraftOrder } from '@/components/checkout/order/use-draft-order'; +import { useDraftOrderFieldSync } from '@/components/checkout/order/use-draft-order-sync'; +import { Button } from '@/components/ui/button'; +import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command'; +import { FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; +import { Input } from '@/components/ui/input'; +import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; +import { ScrollArea } from '@/components/ui/scroll-area'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { cn } from '@/lib/utils'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; function FlagComponent({ country, countryName }: RPNInput.FlagProps) { - const Flag = flags[country]; + const Flag = flags[country]; - return ( - - {Flag && } - - ); + return ( + + {Flag && } + + ); } const PhoneTextInput = React.memo( - React.forwardRef< - HTMLInputElement, - React.ComponentProps<"input"> & { hasError?: boolean } - >(({ className, hasError, ...props }, ref) => ( - - )), + React.forwardRef & { hasError?: boolean }>( + ({ className, hasError, ...props }, ref) => ( + + ) + ) ); interface CountryEntry { - label: string; - value: RPNInput.Country | undefined; + label: string; + value: RPNInput.Country | undefined; } interface CountrySelectProps { - disabled?: boolean; - value: RPNInput.Country; - options: CountryEntry[]; - onChange: (country: RPNInput.Country) => void; - hasError?: boolean; + disabled?: boolean; + value: RPNInput.Country; + options: CountryEntry[]; + onChange: (country: RPNInput.Country) => void; + hasError?: boolean; } -function CountrySelect({ - disabled, - value: selectedCountry, - options: countryList, - onChange, - hasError, -}: CountrySelectProps) { - const { t } = useGoDaddyContext(); - const scrollAreaRef = React.useRef(null); - const [searchValue, setSearchValue] = React.useState(""); - return ( - - - - - - - { - setSearchValue(value); - setTimeout(() => { - if (scrollAreaRef.current) { - const viewportElement = scrollAreaRef.current.querySelector( - "[data-radix-scroll-area-viewport]", - ); - if (viewportElement) { - viewportElement.scrollTop = 0; - } - } - }, 0); - }} - placeholder={t.phone.searchCountry} - /> - - - {t.phone.noCountryFound} - - {countryList.map(({ value, label }) => - value ? ( - - ) : null, - )} - - - - - - - ); +function CountrySelect({ disabled, value: selectedCountry, options: countryList, onChange, hasError }: CountrySelectProps) { + const { t } = useGoDaddyContext(); + const scrollAreaRef = React.useRef(null); + const [searchValue, setSearchValue] = React.useState(''); + return ( + + + + + + + { + setSearchValue(value); + setTimeout(() => { + if (scrollAreaRef.current) { + const viewportElement = scrollAreaRef.current.querySelector('[data-radix-scroll-area-viewport]'); + if (viewportElement) { + viewportElement.scrollTop = 0; + } + } + }, 0); + }} + placeholder={t.phone.searchCountry} + /> + + + {t.phone.noCountryFound} + + {countryList.map(({ value, label }) => + value ? ( + + ) : null + )} + + + + + + + ); } interface CountrySelectOptionProps extends RPNInput.FlagProps { - selectedCountry: RPNInput.Country; - onChange: (country: RPNInput.Country) => void; + selectedCountry: RPNInput.Country; + onChange: (country: RPNInput.Country) => void; } -const CountrySelectOption = ({ - country, - countryName, - selectedCountry, - onChange, -}: CountrySelectOptionProps) => { - return ( - { - onChange(country); +const CountrySelectOption = ({ country, countryName, selectedCountry, onChange }: CountrySelectOptionProps) => { + return ( + { + onChange(country); - // Track phone country selection - track({ - eventId: eventIds.changePhoneCountry, - type: TrackingEventType.CLICK, - properties: { - country, - countryName, - countryCode: `+${RPNInput.getCountryCallingCode(country)}`, - }, - }); - }} - > - - {countryName} - {`+${RPNInput.getCountryCallingCode(country)}`} - - - ); + // Track phone country selection + track({ + eventId: eventIds.changePhoneCountry, + type: TrackingEventType.CLICK, + properties: { + country, + countryName, + countryCode: `+${RPNInput.getCountryCallingCode(country)}`, + }, + }); + }} + > + + {countryName} + {`+${RPNInput.getCountryCallingCode(country)}`} + + + ); }; -export function PhoneInput({ - sectionKey, - disabled, -}: { sectionKey: string; disabled?: boolean }) { - const form = useFormContext(); - const { t } = useGoDaddyContext(); - const { session, requiredFields } = useCheckoutContext(); - const { data: draftOrder } = useDraftOrder(); +function getCountryFromPhoneNumber(phoneNumberString: string) { + try { + const phoneNumber = RPNInput.parsePhoneNumber(phoneNumberString); + if (phoneNumber) { + return phoneNumber.country; + } + } catch { + // Error is handled by returning undefined. + } + return undefined; +} + +export function PhoneInput({ sectionKey, disabled }: { sectionKey: string; disabled?: boolean }) { + const form = useFormContext(); + const { t } = useGoDaddyContext(); + const { session, requiredFields } = useCheckoutContext(); + const { data: draftOrder } = useDraftOrder(); + + const phoneValue = form.watch(`${sectionKey}Phone`); + const useShippingAddress = form.watch('paymentUseShippingAddress'); + + const [phone] = useDebouncedValue(phoneValue, { + wait: 1000, + }); - const phoneValue = form.watch(`${sectionKey}Phone`); - const useShippingAddress = form.watch("paymentUseShippingAddress"); + const section = sectionKey === 'shipping' ? draftOrder?.shipping : draftOrder?.billing; - const [phone] = useDebouncedValue(phoneValue, { - wait: 1000, - }); + const defaultCountryCode = + getCountryFromPhoneNumber(section?.phone || '') || session?.shipping?.originAddress?.countryCode || 'US'; - const isValidPhone = React.useMemo(() => checkIsValidPhone(phone), [phone]); + const isValidPhone = React.useMemo(() => checkIsValidPhone(phone), [phone]); - // Check if phone value differs from order value - const phoneHasChanged = React.useMemo(() => { - if (!draftOrder) return true; // If no order, allow sync - const section = - sectionKey === "shipping" ? draftOrder.shipping : draftOrder.billing; - return (section?.phone || "") !== (phone || ""); - }, [draftOrder, sectionKey, phone]); + // Check if phone value differs from order value + const phoneHasChanged = React.useMemo(() => { + if (!draftOrder) return true; // If no order, allow sync + const orderSection = sectionKey === 'shipping' ? draftOrder.shipping : draftOrder.billing; + return (orderSection?.phone || '') !== (phone || ''); + }, [draftOrder, sectionKey, phone]); - useDraftOrderFieldSync({ - key: "phone", - data: phone, - deps: [phone, isValidPhone], - enabled: - phoneHasChanged && // Only sync if values differ from order - phone === phoneValue && - (phone - ? isValidPhone && phone?.trim() !== "" - : !phone && phoneValue === ""), - fieldNames: [`${sectionKey}Phone`], - mapToInput: (data) => - mapAddressFieldsToInput( - { phone: data }, - sectionKey as "shipping" | "billing", - useShippingAddress, - ), - }); + useDraftOrderFieldSync({ + key: 'phone', + data: phone, + deps: [phone, isValidPhone], + enabled: + phoneHasChanged && // Only sync if values differ from order + phone === phoneValue && + (phone ? isValidPhone && phone?.trim() !== '' : !phone && phoneValue === ''), + fieldNames: [`${sectionKey}Phone`], + mapToInput: data => mapAddressFieldsToInput({ phone: data }, sectionKey as 'shipping' | 'billing', useShippingAddress), + }); - return session?.enablePhoneCollection ? ( - ( - - {t.shipping.phone} - - { - // Allow truly empty values - const newValue = value ?? ""; - field.onChange(newValue); + return session?.enablePhoneCollection ? ( + ( + + {t.shipping.phone} + + { + // Allow truly empty values + const newValue = value ?? ''; + field.onChange(newValue); - // Track phone number change - if (newValue) { - track({ - eventId: eventIds.changePhoneNumber, - type: TrackingEventType.CLICK, - properties: { - sectionKey, - hasValue: !!newValue, - isValid: checkIsValidPhone(newValue), - }, - }); - } - }} - onBlur={field.onBlur} - disabled={disabled} - smartCaret={false} - addInternationalOption={false} - international={false} - flagComponent={FlagComponent} - inputComponent={React.useCallback( - (props: React.ComponentProps<"input">) => ( - - ), - [fieldState.error, sectionKey], - )} - countrySelectComponent={React.useCallback( - (props: CountrySelectProps) => ( - - ), - [fieldState.error], - )} - className="flex rounded-md" - /> - - - - )} - /> - ) : null; + // Track phone number change + if (newValue) { + track({ + eventId: eventIds.changePhoneNumber, + type: TrackingEventType.CLICK, + properties: { + sectionKey, + hasValue: !!newValue, + isValid: checkIsValidPhone(newValue), + }, + }); + } + }} + onBlur={field.onBlur} + disabled={disabled} + smartCaret={false} + addInternationalOption={false} + international={false} + flagComponent={FlagComponent} + inputComponent={React.useCallback( + (props: React.ComponentProps<'input'>) => ( + + ), + [fieldState.error, sectionKey] + )} + countrySelectComponent={React.useCallback( + (props: CountrySelectProps) => , + [fieldState.error] + )} + className='flex rounded-md' + /> + + + + )} + /> + ) : null; } diff --git a/packages/react/src/components/checkout/delivery/delivery-method.tsx b/packages/react/src/components/checkout/delivery/delivery-method.tsx index c157c731..cff4d2c5 100644 --- a/packages/react/src/components/checkout/delivery/delivery-method.tsx +++ b/packages/react/src/components/checkout/delivery/delivery-method.tsx @@ -1,164 +1,138 @@ -import { - type CheckoutFormData, - useCheckoutContext, -} from "@/components/checkout/checkout"; -import { useApplyDeliveryMethod } from "@/components/checkout/delivery/utils/use-apply-delivery-method"; -import { useRemoveShippingMethod } from "@/components/checkout/shipping/utils/use-remove-shipping-method"; -import { FormControl, FormField, FormItem } from "@/components/ui/form"; -import { Label } from "@/components/ui/label"; -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { TrackingEventType, track } from "@/tracking/track"; -import { Store, Truck } from "lucide-react"; -import { useFormContext } from "react-hook-form"; +import { Store, Truck } from 'lucide-react'; +import { useFormContext } from 'react-hook-form'; +import { type CheckoutFormData, useCheckoutContext } from '@/components/checkout/checkout'; +import { useIsPaymentDisabled } from '@/components/checkout/payment/utils/use-is-payment-disabled'; +import { FormControl, FormField, FormItem } from '@/components/ui/form'; +import { Label } from '@/components/ui/label'; +import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { TrackingEventType, track } from '@/tracking/track'; export enum DeliveryMethods { - NONE = "NONE", - PICKUP = "PICKUP", - SHIP = "SHIP", - CURBSIDE = "CURBSIDE", - DELIVERY = "DELIVERY", - DRIVE_THRU = "DRIVE_THRU", - FOR_HERE = "FOR_HERE", - TO_GO = "TO_GO", - DIGITAL = "DIGITAL", - PURCHASE = "PURCHASE", - GENERAL_CONTAINER = "GENERAL_CONTAINER", - QUICK_STAY = "QUICK_STAY", - REGULAR_STAY = "REGULAR_STAY", - NON_LODGING_NRR = "NON_LODGING_NRR", - NON_LODGING_SALE = "NON_LODGING_SALE", - GIFT_CARD = "GIFT_CARD", + NONE = 'NONE', + PICKUP = 'PICKUP', + SHIP = 'SHIP', + CURBSIDE = 'CURBSIDE', + DELIVERY = 'DELIVERY', + DRIVE_THRU = 'DRIVE_THRU', + FOR_HERE = 'FOR_HERE', + TO_GO = 'TO_GO', + DIGITAL = 'DIGITAL', + PURCHASE = 'PURCHASE', + GENERAL_CONTAINER = 'GENERAL_CONTAINER', + QUICK_STAY = 'QUICK_STAY', + REGULAR_STAY = 'REGULAR_STAY', + NON_LODGING_NRR = 'NON_LODGING_NRR', + NON_LODGING_SALE = 'NON_LODGING_SALE', + GIFT_CARD = 'GIFT_CARD', } export interface DeliveryMethod { - id: CheckoutFormData["deliveryMethod"]; - name: string; - description: string; - icon: React.ReactNode; + id: CheckoutFormData['deliveryMethod']; + name: string; + description: string; + icon: React.ReactNode; } const DELIVERY_METHODS: DeliveryMethod[] = [ - { - id: DeliveryMethods.SHIP, - name: "Shipping", // This will be replaced with localized version in component - description: "Ship to your address", // This will be replaced with localized version in component - icon: , - }, - { - id: DeliveryMethods.PICKUP, - name: "Local Pickup", // This will be replaced with localized version in component - description: "Pick up from store location", // This will be replaced with localized version in component - icon: , - }, + { + id: DeliveryMethods.SHIP, + name: 'Shipping', // This will be replaced with localized version in component + description: 'Ship to your address', // This will be replaced with localized version in component + icon: , + }, + { + id: DeliveryMethods.PICKUP, + name: 'Local Pickup', // This will be replaced with localized version in component + description: 'Pick up from store location', // This will be replaced with localized version in component + icon: , + }, ]; export function DeliveryMethodForm() { - const { t } = useGoDaddyContext(); - const form = useFormContext(); - const { session, isConfirmingCheckout } = useCheckoutContext(); - const removeShippingMethod = useRemoveShippingMethod(); - const applyDeliveryMethod = useApplyDeliveryMethod(); - const shippingMethod = form.watch("shippingMethod"); + const { t } = useGoDaddyContext(); + const form = useFormContext(); + const { session, isConfirmingCheckout } = useCheckoutContext(); + const isPaymentDisabled = useIsPaymentDisabled(); - const handleDeliveryMethodChange = (value: DeliveryMethods) => { - form.setValue("deliveryMethod", value); - if (value === DeliveryMethods.PICKUP) { - if (shippingMethod) { - removeShippingMethod.mutate(shippingMethod); - form.setValue("shippingMethod", undefined); - } - } else { - applyDeliveryMethod.mutate(value); - } - track({ - eventId: "change_delivery_method.click", - type: TrackingEventType.CLICK, - properties: { - deliveryMethod: value, - }, - }); - }; + const handleDeliveryMethodChange = (value: DeliveryMethods) => { + form.setValue('deliveryMethod', value); + if (value === DeliveryMethods.PICKUP) { + form.setValue('shippingMethod', undefined); + } + track({ + eventId: 'change_delivery_method.click', + type: TrackingEventType.CLICK, + properties: { + deliveryMethod: value, + }, + }); + }; - const availableMethods = [ - DELIVERY_METHODS[0], - ...(session?.enableLocalPickup ? [DELIVERY_METHODS[1]] : []), - ]; + const availableMethods = [DELIVERY_METHODS[0], ...(session?.enableLocalPickup ? [DELIVERY_METHODS[1]] : [])]; - return ( -
-
- -
- {availableMethods.length === 1 ? ( - - ) : ( - ( - - - - {availableMethods.map((method, index) => ( -
+ + ))} + + + + )} + /> + )} + + ); } diff --git a/packages/react/src/components/checkout/delivery/utils/use-apply-delivery-method.ts b/packages/react/src/components/checkout/delivery/utils/use-apply-delivery-method.ts index c33cf107..5ba0bfd5 100644 --- a/packages/react/src/components/checkout/delivery/utils/use-apply-delivery-method.ts +++ b/packages/react/src/components/checkout/delivery/utils/use-apply-delivery-method.ts @@ -1,18 +1,16 @@ -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { applyDeliveryMethod } from "@/lib/godaddy/godaddy"; -import type { ApplyCheckoutSessionDeliveryMethodInput } from "@/types"; -import { useMutation } from "@tanstack/react-query"; +import { useMutation } from '@tanstack/react-query'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { applyDeliveryMethod } from '@/lib/godaddy/godaddy'; +import type { ApplyCheckoutSessionDeliveryMethodInput } from '@/types'; export function useApplyDeliveryMethod() { - const { session } = useCheckoutContext(); + const { session } = useCheckoutContext(); - return useMutation({ - mutationKey: ["apply-delivery-method", { sessionId: session?.id }], - mutationFn: async ( - mode: ApplyCheckoutSessionDeliveryMethodInput["input"]["mode"], - ) => { - if (!session) return; - return await applyDeliveryMethod({ mode }, session); - }, - }); + return useMutation({ + mutationKey: ['apply-delivery-method', { sessionId: session?.id }], + mutationFn: async (mode: ApplyCheckoutSessionDeliveryMethodInput['input']['mode']) => { + if (!session) return; + return await applyDeliveryMethod({ mode }, session); + }, + }); } diff --git a/packages/react/src/components/checkout/delivery/utils/use-apply-fulfillment-location.ts b/packages/react/src/components/checkout/delivery/utils/use-apply-fulfillment-location.ts index 0b8f1c3c..d9c539cc 100644 --- a/packages/react/src/components/checkout/delivery/utils/use-apply-fulfillment-location.ts +++ b/packages/react/src/components/checkout/delivery/utils/use-apply-fulfillment-location.ts @@ -1,49 +1,53 @@ -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { useUpdateTaxes } from "@/components/checkout/order/use-update-taxes"; -import { applyFulfillmentLocation } from "@/lib/godaddy/godaddy"; -import type { ApplyCheckoutSessionFulfillmentLocationInput } from "@/types"; -import { useMutation } from "@tanstack/react-query"; +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { useUpdateTaxes } from '@/components/checkout/order/use-update-taxes'; +import { applyFulfillmentLocation } from '@/lib/godaddy/godaddy'; +import type { ApplyCheckoutSessionFulfillmentLocationInput } from '@/types'; export function useApplyFulfillmentLocation() { - const { session } = useCheckoutContext(); - const updateTaxes = useUpdateTaxes(); + const { session } = useCheckoutContext(); + const updateTaxes = useUpdateTaxes(); + const queryClient = useQueryClient(); - return useMutation({ - mutationKey: ["apply-fulfillment-location", { sessionId: session?.id }], - mutationFn: async ({ - fulfillmentLocationId, - }: { - fulfillmentLocationId: ApplyCheckoutSessionFulfillmentLocationInput["input"]["fulfillmentLocationId"]; - locationAddress?: { - addressLine1?: string | null; - addressLine2?: string | null; - addressLine3?: string | null; - adminArea1?: string | null; - adminArea2?: string | null; - adminArea3?: string | null; - countryCode?: string | null; - postalCode?: string | null; - }; - }) => { - // Don't process empty string or undefined location IDs - if (!session || !fulfillmentLocationId) return; + return useMutation({ + mutationKey: ['apply-fulfillment-location', { sessionId: session?.id }], + mutationFn: async ({ + fulfillmentLocationId, + }: { + fulfillmentLocationId: ApplyCheckoutSessionFulfillmentLocationInput['input']['fulfillmentLocationId']; + locationAddress?: { + addressLine1?: string | null; + addressLine2?: string | null; + addressLine3?: string | null; + adminArea1?: string | null; + adminArea2?: string | null; + adminArea3?: string | null; + countryCode?: string | null; + postalCode?: string | null; + }; + }) => { + // Don't process empty string or undefined location IDs + if (!session || !fulfillmentLocationId) return; - return await applyFulfillmentLocation({ fulfillmentLocationId }, session); - }, - onSuccess: (_data, { locationAddress }) => { - if (!session) return; + return await applyFulfillmentLocation({ fulfillmentLocationId }, session); + }, + onSuccess: (_data, { locationAddress }) => { + if (!session) return; - if (session?.enableTaxCollection && locationAddress) { - updateTaxes.mutate(locationAddress); - } - }, - onError: (error, { locationAddress }) => { - // Graceful degradation: still calculate taxes with pickup location address - // even if fulfillment location API fails - if (session?.enableTaxCollection && locationAddress) { - console.log("Calculating taxes despite fulfillment location failure"); - updateTaxes.mutate(locationAddress); - } - }, - }); + if (session?.enableTaxCollection && locationAddress) { + updateTaxes.mutate(locationAddress); + } else { + queryClient.invalidateQueries({ + queryKey: ['draft-order', { id: session?.id }], + }); + } + }, + onError: (_error, { locationAddress }) => { + // Graceful degradation: still calculate taxes with pickup location address + // even if fulfillment location API fails + if (session?.enableTaxCollection && locationAddress) { + updateTaxes.mutate(locationAddress); + } + }, + }); } diff --git a/packages/react/src/components/checkout/discount/discount-apply-button.tsx b/packages/react/src/components/checkout/discount/discount-apply-button.tsx index a022fcd6..bd0b1da4 100644 --- a/packages/react/src/components/checkout/discount/discount-apply-button.tsx +++ b/packages/react/src/components/checkout/discount/discount-apply-button.tsx @@ -1,43 +1,35 @@ -"use client"; +'use client'; -import { Button } from "@/components/ui/button"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { Loader2 } from "lucide-react"; -import type { ComponentProps } from "react"; +import { Loader2 } from 'lucide-react'; +import type { ComponentProps } from 'react'; +import { Button } from '@/components/ui/button'; +import { useGoDaddyContext } from '@/godaddy-provider'; export type ApplyButtonProps = ComponentProps & { - isSubmitting?: boolean; + isSubmitting?: boolean; }; -export function DiscountApplyButton({ - onClick, - disabled, - isSubmitting, - className, - ...rest -}: ApplyButtonProps) { - const { t } = useGoDaddyContext(); - return ( -
- -
- ); +export function DiscountApplyButton({ onClick, disabled, isSubmitting, className, ...rest }: ApplyButtonProps) { + const { t } = useGoDaddyContext(); + return ( +
+ +
+ ); } diff --git a/packages/react/src/components/checkout/discount/discount-error-list.tsx b/packages/react/src/components/checkout/discount/discount-error-list.tsx index 846e7862..4e836624 100644 --- a/packages/react/src/components/checkout/discount/discount-error-list.tsx +++ b/packages/react/src/components/checkout/discount/discount-error-list.tsx @@ -1,26 +1,23 @@ -import { useGoDaddyContext } from "@/godaddy-provider"; -import { CircleAlert } from "lucide-react"; -import React from "react"; +import { CircleAlert } from 'lucide-react'; +import { useGoDaddyContext } from '@/godaddy-provider'; -export function DiscountErrorList({ - checkoutErrors, -}: { checkoutErrors?: string[] }) { - const { t } = useGoDaddyContext(); +export function DiscountErrorList({ checkoutErrors }: { checkoutErrors?: string[] }) { + const { t } = useGoDaddyContext(); - if (!checkoutErrors?.length) return null; + if (!checkoutErrors?.length) return null; - return ( -
-
- -
    - {checkoutErrors?.map((code) => ( -
  • - {t.apiErrors?.[code as keyof typeof t.apiErrors] || code} -
  • - ))} -
-
-
- ); + return ( +
+
+ +
    + {checkoutErrors?.map(code => ( +
  • + {t.apiErrors?.[code as keyof typeof t.apiErrors] || code} +
  • + ))} +
+
+
+ ); } diff --git a/packages/react/src/components/checkout/discount/discount-input.tsx b/packages/react/src/components/checkout/discount/discount-input.tsx index 7472fddb..7600b00d 100644 --- a/packages/react/src/components/checkout/discount/discount-input.tsx +++ b/packages/react/src/components/checkout/discount/discount-input.tsx @@ -1,41 +1,41 @@ -import { Input } from "@/components/ui/input"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import type { ChangeEvent, ComponentProps } from "react"; -import { forwardRef } from "react"; +import type { ChangeEvent, ComponentProps } from 'react'; +import { forwardRef } from 'react'; +import { Input } from '@/components/ui/input'; +import { useGoDaddyContext } from '@/godaddy-provider'; -type DiscountInputProps = Omit, "onChange"> & { - hasError?: boolean; - onChange?: (e: ChangeEvent) => void; - onKeyDown?: (e: React.KeyboardEvent) => void; +type DiscountInputProps = Omit, 'onChange'> & { + hasError?: boolean; + onChange?: (e: ChangeEvent) => void; + onKeyDown?: (e: React.KeyboardEvent) => void; }; export const DiscountInput = forwardRef( - ({ hasError, onChange, onKeyDown, ...props }, ref) => { - const { t } = useGoDaddyContext(); - // Handle input change to automatically remove spaces - const handleChange = (e: ChangeEvent) => { - // Keep original event but modify the value to trim spaces - const originalValue = e.target.value; - e.target.value = originalValue.replace(/\s+/g, ""); + ({ hasError, onChange, onKeyDown, ...props }, ref) => { + const { t } = useGoDaddyContext(); + // Handle input change to automatically remove spaces + const handleChange = (e: ChangeEvent) => { + // Keep original event but modify the value to trim spaces + const originalValue = e.target.value; + e.target.value = originalValue.replace(/\s+/g, ''); - // Call the original onChange if provided - if (onChange) { - onChange(e); - } - }; + // Call the original onChange if provided + if (onChange) { + onChange(e); + } + }; - return ( -
- -
- ); - }, + return ( +
+ +
+ ); + } ); diff --git a/packages/react/src/components/checkout/discount/discount-standalone.tsx b/packages/react/src/components/checkout/discount/discount-standalone.tsx index c3edebeb..8476b03c 100644 --- a/packages/react/src/components/checkout/discount/discount-standalone.tsx +++ b/packages/react/src/components/checkout/discount/discount-standalone.tsx @@ -1,252 +1,240 @@ -"use client"; - -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { DiscountApplyButton } from "@/components/checkout/discount/discount-apply-button"; -import { DiscountErrorList } from "@/components/checkout/discount/discount-error-list"; -import { DiscountInput } from "@/components/checkout/discount/discount-input"; -import { useDiscountApply } from "@/components/checkout/discount/utils/use-discount-apply"; -import { useDraftOrder } from "@/components/checkout/order/use-draft-order"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { GraphQLErrorWithCodes } from "@/lib/graphql-with-errors"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -import React, { useState } from "react"; -import { Discounts } from "./discounts"; -import type { DiscountFormProps } from "./types"; - -export function DiscountStandalone({ - initialDiscounts = [], - onDiscountsChange, - onError, -}: DiscountFormProps) { - const { t } = useGoDaddyContext(); - const { isConfirmingCheckout } = useCheckoutContext(); - const { data: draftOrder } = useDraftOrder(); - - // Get current discount codes from order-level, line item-level, and shipping line-level discounts - const currentDiscountCodes = React.useMemo(() => { - if (!draftOrder) return []; - - const allCodes = new Set(); - - // Add order-level discount codes - if (draftOrder.discounts) { - for (const discount of draftOrder.discounts) { - if (discount.code) { - allCodes.add(discount.code); - } - } - } - - // Add line item-level discount codes - if (draftOrder.lineItems) { - for (const lineItem of draftOrder.lineItems) { - if (lineItem.discounts) { - for (const discount of lineItem.discounts) { - if (discount.code) { - allCodes.add(discount.code); - } - } - } - } - } - - // Add shipping line-level discount codes - if (draftOrder.shippingLines) { - for (const shippingLine of draftOrder.shippingLines) { - if (shippingLine.discounts) { - for (const discount of shippingLine.discounts) { - if (discount.code) { - allCodes.add(discount.code); - } - } - } - } - } - - return Array.from(allCodes); - }, [draftOrder]); - - const [discountCode, setDiscountCode] = useState(""); - const [formErrors, setFormErrors] = useState(undefined); - const [isSubmitting, setIsSubmitting] = useState(false); - const [isRemovingDiscount, setIsRemovingDiscount] = useState< - string | undefined - >(undefined); - const applyDiscount = useDiscountApply(); - - const handleInputChange = (e: React.ChangeEvent) => { - setDiscountCode(e.target.value); - setFormErrors(undefined); - }; - - const handleApply = async () => { - // Validation - - if (!discountCode.trim()) { - setFormErrors([t.discounts.enterCodeValidation]); - return; - } - - try { - setIsSubmitting(true); - // Normalize the discount code to uppercase for consistency - const normalizedCode = discountCode.trim(); - - // Check if the code already exists - if (currentDiscountCodes.includes(normalizedCode)) { - setFormErrors([t.discounts.alreadyApplied]); - return; - } - - // Apply discount with current codes + new code - const newDiscountCodes = [...currentDiscountCodes, normalizedCode]; - await applyDiscount.mutateAsync({ - discountCodes: newDiscountCodes, - }); - - // Track successful discount application - track({ - eventId: eventIds.applyCoupon, - type: TrackingEventType.CLICK, - properties: { - success: true, - discountCount: newDiscountCodes.length, - }, - }); - - // Call the change handler if provided - onDiscountsChange?.(newDiscountCodes); - - // Reset the input - setDiscountCode(""); - setFormErrors(undefined); - } catch (error) { - if (error instanceof GraphQLErrorWithCodes) { - setFormErrors(error.codes); - - // Track discount error - track({ - eventId: eventIds.discountError, - type: TrackingEventType.EVENT, - properties: { - success: false, - errorCodes: error.codes.join(","), - }, - }); - } else { - const genericError = new Error(t.discounts.failedToApply); - setFormErrors([t.discounts.failedToApply]); - onError?.(genericError); - - // Track generic discount error - track({ - eventId: eventIds.discountError, - type: TrackingEventType.EVENT, - properties: { - success: false, - errorType: "generic", - }, - }); - } - } finally { - setIsSubmitting(false); - } - }; - - const handleKeyDown = (e: React.KeyboardEvent) => { - if (e.key === "Enter" && discountCode.trim()) { - e.preventDefault(); - handleApply(); - } - }; - - const handleRemoveDiscount = async (discountToRemove: string) => { - const newDiscountCodes = currentDiscountCodes.filter( - (d) => d !== discountToRemove, - ); - - try { - setIsRemovingDiscount(discountToRemove); - await applyDiscount.mutateAsync({ - discountCodes: newDiscountCodes, - }); - - // Track discount removal - track({ - eventId: eventIds.removeDiscount, - type: TrackingEventType.CLICK, - properties: { - success: true, - discountCount: newDiscountCodes.length, - }, - }); - - onDiscountsChange?.(newDiscountCodes); - setIsRemovingDiscount(undefined); - } catch (error) { - if (error instanceof GraphQLErrorWithCodes) { - setFormErrors(error.codes); - - // Track discount error - track({ - eventId: eventIds.discountError, - type: TrackingEventType.EVENT, - properties: { - success: false, - errorCodes: error.codes.join(","), - }, - }); - } else { - const genericError = new Error(t.discounts.failedToApply); - setFormErrors([t.discounts.failedToApply]); - onError?.(genericError); - - // Track generic discount error - track({ - eventId: eventIds.discountError, - type: TrackingEventType.EVENT, - properties: { - success: false, - errorType: "generic", - }, - }); - } - } - }; - - return ( -
-
-
- -
- -
- - - {currentDiscountCodes.length > 0 && ( -
- -
- )} -
- ); +'use client'; + +import React, { useState } from 'react'; +import { DiscountApplyButton } from '@/components/checkout/discount/discount-apply-button'; +import { DiscountErrorList } from '@/components/checkout/discount/discount-error-list'; +import { DiscountInput } from '@/components/checkout/discount/discount-input'; +import { useDiscountApply } from '@/components/checkout/discount/utils/use-discount-apply'; +import { useDraftOrder } from '@/components/checkout/order/use-draft-order'; +import { useIsPaymentDisabled } from '@/components/checkout/payment/utils/use-is-payment-disabled'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { GraphQLErrorWithCodes } from '@/lib/graphql-with-errors'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; +import { Discounts } from './discounts'; +import type { DiscountFormProps } from './types'; + +export function DiscountStandalone({ initialDiscounts = [], onDiscountsChange, onError }: DiscountFormProps) { + const { t } = useGoDaddyContext(); + const isPaymentDisabled = useIsPaymentDisabled(); + const { data: draftOrder } = useDraftOrder(); + + // Get current discount codes from order-level, line item-level, and shipping line-level discounts + const currentDiscountCodes = React.useMemo(() => { + if (!draftOrder) return []; + + const allCodes = new Set(); + + // Add order-level discount codes + if (draftOrder.discounts) { + for (const discount of draftOrder.discounts) { + if (discount.code) { + allCodes.add(discount.code); + } + } + } + + // Add line item-level discount codes + if (draftOrder.lineItems) { + for (const lineItem of draftOrder.lineItems) { + if (lineItem.discounts) { + for (const discount of lineItem.discounts) { + if (discount.code) { + allCodes.add(discount.code); + } + } + } + } + } + + // Add shipping line-level discount codes + if (draftOrder.shippingLines) { + for (const shippingLine of draftOrder.shippingLines) { + if (shippingLine.discounts) { + for (const discount of shippingLine.discounts) { + if (discount.code) { + allCodes.add(discount.code); + } + } + } + } + } + + return Array.from(allCodes); + }, [draftOrder]); + + const [discountCode, setDiscountCode] = useState(''); + const [formErrors, setFormErrors] = useState(undefined); + const [isSubmitting, setIsSubmitting] = useState(false); + const [isRemovingDiscount, setIsRemovingDiscount] = useState(undefined); + const applyDiscount = useDiscountApply(); + + const handleInputChange = (e: React.ChangeEvent) => { + setDiscountCode(e.target.value); + setFormErrors(undefined); + }; + + const handleApply = async () => { + // Validation + + if (!discountCode.trim()) { + setFormErrors([t.discounts.enterCodeValidation]); + return; + } + + try { + setIsSubmitting(true); + // Normalize the discount code to uppercase for consistency + const normalizedCode = discountCode.trim(); + + // Check if the code already exists + if (currentDiscountCodes.includes(normalizedCode)) { + setFormErrors([t.discounts.alreadyApplied]); + return; + } + + // Apply discount with current codes + new code + const newDiscountCodes = [...currentDiscountCodes, normalizedCode]; + await applyDiscount.mutateAsync({ + discountCodes: newDiscountCodes, + }); + + // Track successful discount application + track({ + eventId: eventIds.applyCoupon, + type: TrackingEventType.CLICK, + properties: { + success: true, + discountCount: newDiscountCodes.length, + }, + }); + + // Call the change handler if provided + onDiscountsChange?.(newDiscountCodes); + + // Reset the input + setDiscountCode(''); + setFormErrors(undefined); + } catch (error) { + if (error instanceof GraphQLErrorWithCodes) { + setFormErrors(error.codes); + + // Track discount error + track({ + eventId: eventIds.discountError, + type: TrackingEventType.EVENT, + properties: { + success: false, + errorCodes: error.codes.join(','), + }, + }); + } else { + const genericError = new Error(t.discounts.failedToApply); + setFormErrors([t.discounts.failedToApply]); + onError?.(genericError); + + // Track generic discount error + track({ + eventId: eventIds.discountError, + type: TrackingEventType.EVENT, + properties: { + success: false, + errorType: 'generic', + }, + }); + } + } finally { + setIsSubmitting(false); + } + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter' && discountCode.trim()) { + e.preventDefault(); + handleApply(); + } + }; + + const handleRemoveDiscount = async (discountToRemove: string) => { + const newDiscountCodes = currentDiscountCodes.filter(d => d !== discountToRemove); + + try { + setIsRemovingDiscount(discountToRemove); + await applyDiscount.mutateAsync({ + discountCodes: newDiscountCodes, + }); + + // Track discount removal + track({ + eventId: eventIds.removeDiscount, + type: TrackingEventType.CLICK, + properties: { + success: true, + discountCount: newDiscountCodes.length, + }, + }); + + onDiscountsChange?.(newDiscountCodes); + setIsRemovingDiscount(undefined); + } catch (error) { + if (error instanceof GraphQLErrorWithCodes) { + setFormErrors(error.codes); + + // Track discount error + track({ + eventId: eventIds.discountError, + type: TrackingEventType.EVENT, + properties: { + success: false, + errorCodes: error.codes.join(','), + }, + }); + } else { + const genericError = new Error(t.discounts.failedToApply); + setFormErrors([t.discounts.failedToApply]); + onError?.(genericError); + + // Track generic discount error + track({ + eventId: eventIds.discountError, + type: TrackingEventType.EVENT, + properties: { + success: false, + errorType: 'generic', + }, + }); + } + } + }; + + return ( +
+
+
+ +
+ +
+ + + {currentDiscountCodes.length > 0 && ( +
+ +
+ )} +
+ ); } diff --git a/packages/react/src/components/checkout/discount/discount-tag.tsx b/packages/react/src/components/checkout/discount/discount-tag.tsx index 14c64439..5b5a73ef 100644 --- a/packages/react/src/components/checkout/discount/discount-tag.tsx +++ b/packages/react/src/components/checkout/discount/discount-tag.tsx @@ -1,40 +1,32 @@ -import { Loader2, TagIcon, X } from "lucide-react"; +import { Loader2, TagIcon, X } from 'lucide-react'; -import { Button } from "@/components/ui/button"; +import { Button } from '@/components/ui/button'; interface DiscountTagProps { - discount: string; - onRemove?: () => void; - isRemoving?: boolean; + discount: string; + onRemove?: () => void; + isRemoving?: boolean; } -export function DiscountTag({ - discount, - onRemove, - isRemoving, -}: DiscountTagProps) { - return ( -
-
- -
- {discount} - {onRemove && ( - - )} -
- ); +export function DiscountTag({ discount, onRemove, isRemoving }: DiscountTagProps) { + return ( +
+
+ +
+ {discount} + {onRemove && ( + + )} +
+ ); } diff --git a/packages/react/src/components/checkout/discount/discounts.tsx b/packages/react/src/components/checkout/discount/discounts.tsx index 5ed93458..efec9246 100644 --- a/packages/react/src/components/checkout/discount/discounts.tsx +++ b/packages/react/src/components/checkout/discount/discounts.tsx @@ -1,31 +1,27 @@ -"use client"; +'use client'; -import { DiscountTag } from "@/components/checkout/discount/discount-tag"; -import type { DiscountsProps } from "./types"; +import { DiscountTag } from '@/components/checkout/discount/discount-tag'; +import type { DiscountsProps } from './types'; -export function Discounts({ - discounts, - onRemove, - isRemovingDiscount, -}: DiscountsProps) { - // const { data: orderData } = useOrder({ orderId: "test" }); +export function Discounts({ discounts, onRemove, isRemovingDiscount }: DiscountsProps) { + // const { data: orderData } = useOrder({ orderId: "test" }); - if (!discounts.length) return null; + if (!discounts.length) return null; - // remove duplicate discounts - const uniqueDiscountsSet = new Set(discounts?.map((d) => d)); - const uniqueDiscounts = Array.from(uniqueDiscountsSet); + // remove duplicate discounts + const uniqueDiscountsSet = new Set(discounts?.map(d => d)); + const uniqueDiscounts = Array.from(uniqueDiscountsSet); - return ( -
- {uniqueDiscounts?.map?.((discount) => ( - onRemove(discount)} - /> - ))} -
- ); + return ( +
+ {uniqueDiscounts?.map?.(discount => ( + onRemove(discount)} + /> + ))} +
+ ); } diff --git a/packages/react/src/components/checkout/discount/index.ts b/packages/react/src/components/checkout/discount/index.ts index e435640f..3753aaf2 100644 --- a/packages/react/src/components/checkout/discount/index.ts +++ b/packages/react/src/components/checkout/discount/index.ts @@ -1,6 +1,6 @@ -export * from "./types"; -export * from "./utils/use-discount-apply"; -export * from "./discount-tag"; -export * from "./discounts"; -export * from "./discount-input"; -export * from "./discount-apply-button"; +export * from './discount-apply-button'; +export * from './discount-input'; +export * from './discount-tag'; +export * from './discounts'; +export * from './types'; +export * from './utils/use-discount-apply'; diff --git a/packages/react/src/components/checkout/discount/types.ts b/packages/react/src/components/checkout/discount/types.ts index 6bd1afe5..fabbba8c 100644 --- a/packages/react/src/components/checkout/discount/types.ts +++ b/packages/react/src/components/checkout/discount/types.ts @@ -1,11 +1,11 @@ export interface DiscountFormProps { - initialDiscounts?: string[]; - onDiscountsChange?: (discounts: string[]) => void; - onError?: (error: Error) => void; + initialDiscounts?: string[]; + onDiscountsChange?: (discounts: string[]) => void; + onError?: (error: Error) => void; } export interface DiscountsProps { - discounts: string[]; - onRemove: (id: string) => void; - isRemovingDiscount?: string; + discounts: string[]; + onRemove: (id: string) => void; + isRemovingDiscount?: string; } diff --git a/packages/react/src/components/checkout/discount/utils/use-discount-apply.ts b/packages/react/src/components/checkout/discount/utils/use-discount-apply.ts index fb9934b4..4e44dd75 100644 --- a/packages/react/src/components/checkout/discount/utils/use-discount-apply.ts +++ b/packages/react/src/components/checkout/discount/utils/use-discount-apply.ts @@ -1,58 +1,137 @@ -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { DeliveryMethods } from "@/components/checkout/delivery/delivery-method"; -import { useUpdateTaxes } from "@/components/checkout/order/use-update-taxes"; -import { applyDiscount } from "@/lib/godaddy/godaddy"; -import type { ApplyCheckoutSessionDiscountInput } from "@/types"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { useFormContext } from "react-hook-form"; +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import { useFormContext } from 'react-hook-form'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { DeliveryMethods } from '@/components/checkout/delivery/delivery-method'; +import { useDraftOrder } from '@/components/checkout/order/use-draft-order'; +import { useUpdateTaxes } from '@/components/checkout/order/use-update-taxes'; +import type { ResultOf } from '@/gql.tada'; +import { applyDiscount } from '@/lib/godaddy/godaddy'; +import type { DraftOrderQuery } from '@/lib/godaddy/queries'; +import type { ApplyCheckoutSessionDiscountInput } from '@/types'; export function useDiscountApply() { - const { session } = useCheckoutContext(); - const form = useFormContext(); - const queryClient = useQueryClient(); - const updateTaxes = useUpdateTaxes(); - - return useMutation({ - mutationKey: ["apply-discount", { sessionId: session?.id }], - mutationFn: async ({ - discountCodes, - }: { - discountCodes: ApplyCheckoutSessionDiscountInput["input"]["discountCodes"]; - }) => { - if (!session) return; - return await applyDiscount(discountCodes, session); - }, - onSuccess: () => { - if (!session) return; - - if (session?.enableTaxCollection) { - // If the delivery method is pickup, we need to update taxes based on the pickup location - // Otherwise, we can just update taxes without a specific address - // TODO: Move this to API layer - const deliveryMethod = form.getValues("deliveryMethod"); - const isPickup = deliveryMethod === DeliveryMethods.PICKUP; - - if (isPickup) { - const pickupLocationId = form.getValues("pickupLocationId"); - const locationAddress = session?.locations?.find( - (loc) => loc.id === pickupLocationId, - )?.address; - - if (locationAddress) { - updateTaxes.mutate(locationAddress); - } - } else { - updateTaxes.mutate(undefined); - } - } else { - queryClient.invalidateQueries({ - queryKey: ["draft-order-totals", { id: session?.id }], - }); - } - - queryClient.invalidateQueries({ - queryKey: ["draft-order", { id: session?.id }], - }); - }, - }); + const { session } = useCheckoutContext(); + const form = useFormContext(); + const queryClient = useQueryClient(); + const updateTaxes = useUpdateTaxes(); + const { data: draftOrder } = useDraftOrder(); + + return useMutation({ + mutationKey: ['apply-discount', { sessionId: session?.id }], + mutationFn: async ({ discountCodes }: { discountCodes: ApplyCheckoutSessionDiscountInput['input']['discountCodes'] }) => { + if (!session) return; + return await applyDiscount(discountCodes, session); + }, + onSuccess: (data, { discountCodes }) => { + if (!session) return; + + const discountTotal = data?.applyCheckoutSessionDiscount?.totals?.discountTotal; + const responseData = data?.applyCheckoutSessionDiscount; + // Update the cached draft-order query (includes totals) + + if (discountTotal) { + queryClient.setQueryData(['draft-order', { id: session.id }], (old: ResultOf | undefined) => { + if (!old) return old; + return { + ...old, + checkoutSession: { + ...old.checkoutSession, + draftOrder: { + ...old?.checkoutSession?.draftOrder, + totals: { + ...old?.checkoutSession?.draftOrder?.totals, + discountTotal, + total: responseData?.totals?.total || old?.checkoutSession?.draftOrder?.totals?.total, + }, + // Update order-level discounts + discounts: responseData?.discounts || old?.checkoutSession?.draftOrder?.discounts || [], + // Update lineItem discounts + lineItems: + responseData?.lineItems + ?.map(responseLineItem => { + const existingLineItem = old?.checkoutSession?.draftOrder?.lineItems?.find( + li => li.id === responseLineItem.id + ); + return existingLineItem + ? { + ...existingLineItem, + discounts: responseLineItem.discounts || [], + } + : existingLineItem; + }) + .filter(Boolean) || old?.checkoutSession?.draftOrder?.lineItems, + // Update shippingLine discounts + shippingLines: + responseData?.shippingLines + ?.map((responseShippingLine, index) => { + const existingShippingLine = old?.checkoutSession?.draftOrder?.shippingLines?.[index]; + return existingShippingLine + ? { + ...existingShippingLine, + discounts: responseShippingLine.discounts || [], + } + : existingShippingLine; + }) + .filter(Boolean) || old?.checkoutSession?.draftOrder?.shippingLines, + }, + }, + }; + }); + } + + if (!discountCodes?.length) { + // If no discount codes, we need to remove any existing discounts from the cache + queryClient.setQueryData(['draft-order', { id: session.id }], (old: ResultOf | undefined) => { + if (!old) return old; + return { + ...old, + checkoutSession: { + ...old.checkoutSession, + draftOrder: { + ...old?.checkoutSession?.draftOrder, + discounts: [], + lineItems: old?.checkoutSession?.draftOrder?.lineItems?.map(li => ({ + ...li, + discounts: [], + })), + shippingLines: + old?.checkoutSession?.draftOrder?.shippingLines?.map(sl => ({ + ...sl, + discounts: [], + })) || null, + }, + }, + }; + }); + } + + if (session?.enableTaxCollection) { + // If the delivery method is pickup, we need to update taxes based on the pickup location + // Otherwise, we can just update taxes without a specific address + // TODO: Move this to API layer + const deliveryMethod = form.getValues('deliveryMethod'); + const isPickup = deliveryMethod === DeliveryMethods.PICKUP; + + if (isPickup) { + const pickupLocationId = form.getValues('pickupLocationId'); + const locationAddress = session?.locations?.find(loc => loc.id === pickupLocationId)?.address; + + if (locationAddress) { + updateTaxes.mutate(locationAddress); + } + } else { + // Only update taxes if we have the required location data + const hasRequiredLocationData = draftOrder?.shipping?.address?.postalCode && draftOrder?.shipping?.address?.countryCode; + + if (hasRequiredLocationData) { + updateTaxes.mutate(undefined); + } + } + } else { + queryClient.invalidateQueries({ + queryKey: ['draft-order', { id: session?.id }], + }); + } + }, + }); } diff --git a/packages/react/src/components/checkout/discount/utils/use-get-price-adjustments.ts b/packages/react/src/components/checkout/discount/utils/use-get-price-adjustments.ts index 951541e1..bf1e37c8 100644 --- a/packages/react/src/components/checkout/discount/utils/use-get-price-adjustments.ts +++ b/packages/react/src/components/checkout/discount/utils/use-get-price-adjustments.ts @@ -1,34 +1,26 @@ -import type { DraftOrderPriceAdjustmentsQueryInput } from "@/types"; +import { useMutation } from '@tanstack/react-query'; -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { getDraftOrderPriceAdjustments } from "@/lib/godaddy/godaddy"; -import { useMutation } from "@tanstack/react-query"; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { getDraftOrderPriceAdjustments } from '@/lib/godaddy/godaddy'; +import type { DraftOrderPriceAdjustmentsQueryInput } from '@/types'; export function useGetPriceAdjustments() { - const { session } = useCheckoutContext(); + const { session } = useCheckoutContext(); - return useMutation({ - mutationKey: [ - "get-price-adjustments-by-discount-code", - { sessionId: session?.id }, - ], - mutationFn: async ({ - discountCodes, - shippingLines, - }: { - discountCodes: DraftOrderPriceAdjustmentsQueryInput["discountCodes"]; - shippingLines?: DraftOrderPriceAdjustmentsQueryInput["shippingLines"]; - }) => { - if (!session) return; + return useMutation({ + mutationKey: ['get-price-adjustments-by-discount-code', { sessionId: session?.id }], + mutationFn: async ({ + discountCodes, + shippingLines, + }: { + discountCodes: DraftOrderPriceAdjustmentsQueryInput['discountCodes']; + shippingLines?: DraftOrderPriceAdjustmentsQueryInput['shippingLines']; + }) => { + if (!session) return; - const data = await getDraftOrderPriceAdjustments( - session, - discountCodes, - shippingLines, - ); + const data = await getDraftOrderPriceAdjustments(session, discountCodes, shippingLines); - return data.checkoutSession?.draftOrder?.calculatedAdjustments - ?.totalDiscountAmount?.value; - }, - }); + return data.checkoutSession?.draftOrder?.calculatedAdjustments?.totalDiscountAmount?.value; + }, + }); } diff --git a/packages/react/src/components/checkout/express-checkout/apple-pay.tsx b/packages/react/src/components/checkout/express-checkout/apple-pay.tsx index 48562581..b9705d09 100644 --- a/packages/react/src/components/checkout/express-checkout/apple-pay.tsx +++ b/packages/react/src/components/checkout/express-checkout/apple-pay.tsx @@ -1,24 +1,19 @@ // placeholder for apple pay -import { useGoDaddyContext } from "@/godaddy-provider"; +import { useGoDaddyContext } from '@/godaddy-provider'; export function ApplePay() { - const { t } = useGoDaddyContext(); - return ( - - ); + const { t } = useGoDaddyContext(); + return ( + + ); } diff --git a/packages/react/src/components/checkout/express-checkout/express-checkout-buttons.tsx b/packages/react/src/components/checkout/express-checkout/express-checkout-buttons.tsx index 6251f9d6..558d355a 100644 --- a/packages/react/src/components/checkout/express-checkout/express-checkout-buttons.tsx +++ b/packages/react/src/components/checkout/express-checkout/express-checkout-buttons.tsx @@ -1,90 +1,74 @@ -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { CheckoutSection } from "@/components/checkout/checkout-section"; -import { PaymentMethodRenderer } from "@/components/checkout/payment/payment-method-renderer"; -import { Target } from "@/components/checkout/target/target"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -import type { AvailablePaymentProviders, PaymentMethodValue } from "@/types"; -import React from "react"; +import React from 'react'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { CheckoutSection } from '@/components/checkout/checkout-section'; +import { PaymentMethodRenderer } from '@/components/checkout/payment/payment-method-renderer'; +import { Target } from '@/components/checkout/target/target'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; +import type { AvailablePaymentProviders, PaymentMethodValue } from '@/types'; export function ExpressCheckoutButtons() { - const { session } = useCheckoutContext(); + const { session } = useCheckoutContext(); - // Track express checkout impression when the component loads - React.useEffect(() => { - track({ - eventId: eventIds.expressCheckoutImpression, - type: TrackingEventType.IMPRESSION, - properties: { - availableMethods: Object.keys(session?.paymentMethods || {}) - .filter((provider) => { - const method = - session?.paymentMethods?.[provider as PaymentMethodValue]; - return ( - method && - Array.isArray(method.checkoutTypes) && - method.checkoutTypes.includes("express") - ); - }) - .join(","), - }, - }); - }, [session?.paymentMethods]); + // Track express checkout impression when the component loads + React.useEffect(() => { + track({ + eventId: eventIds.expressCheckoutImpression, + type: TrackingEventType.IMPRESSION, + properties: { + availableMethods: Object.keys(session?.paymentMethods || {}) + .filter(provider => { + const method = session?.paymentMethods?.[provider as PaymentMethodValue]; + return method && Array.isArray(method.checkoutTypes) && method.checkoutTypes.includes('express'); + }) + .join(','), + }, + }); + }, [session?.paymentMethods]); - const expressProviders = React.useMemo(() => { - if (!session?.paymentMethods) return []; + const expressProviders = React.useMemo(() => { + if (!session?.paymentMethods) return []; - return Object.entries(session.paymentMethods) - .filter( - ([, method]) => - method && - Array.isArray(method.checkoutTypes) && - method.checkoutTypes.includes("express"), - ) - .map(([provider]) => provider); - }, [session?.paymentMethods]); + return Object.entries(session.paymentMethods) + .filter(([, method]) => method && Array.isArray(method.checkoutTypes) && method.checkoutTypes.includes('express')) + .map(([provider]) => provider); + }, [session?.paymentMethods]); - const availableExpressButtons = expressProviders - .map((provider) => { - const processor = - session?.paymentMethods?.[provider as PaymentMethodValue]?.processor; + const availableExpressButtons = expressProviders + .map(provider => { + const processor = session?.paymentMethods?.[provider as PaymentMethodValue]?.processor; - return ( - - ); - }) - .filter(Boolean); + return ( + + ); + }) + .filter(Boolean); - if (availableExpressButtons.length === 0) { - return null; - } + if (availableExpressButtons.length === 0) { + return null; + } - return ( - - -
-
{availableExpressButtons}
-
- -
- - - ); + return ( + + +
+
{availableExpressButtons}
+
+ +
+ + + ); } diff --git a/packages/react/src/components/checkout/express-checkout/express-checkout.tsx b/packages/react/src/components/checkout/express-checkout/express-checkout.tsx index 87941383..616ef0de 100644 --- a/packages/react/src/components/checkout/express-checkout/express-checkout.tsx +++ b/packages/react/src/components/checkout/express-checkout/express-checkout.tsx @@ -1,150 +1,120 @@ -"use client"; - -import { - type CheckoutElements, - type CheckoutProps, - checkoutContext, - useCheckoutContext, -} from "@/components/checkout/checkout"; -import { CheckoutSection } from "@/components/checkout/checkout-section"; -import { PaymentMethodRenderer } from "@/components/checkout/payment/payment-method-renderer"; -import { ConditionalExpressProviders } from "@/components/checkout/payment/utils/conditional-providers"; -import { Target } from "@/components/checkout/target/target"; -import type { GoDaddyVariables } from "@/godaddy-provider"; -import { type Theme, useTheme } from "@/hooks/use-theme"; -import { useVariables } from "@/hooks/use-variables"; -import { TrackingProvider } from "@/tracking/tracking-provider"; -import type { - AvailablePaymentProviders, - CheckoutSession, - PaymentMethodValue, -} from "@/types"; -import React, { type ReactNode } from "react"; +'use client'; + +import React, { type ReactNode } from 'react'; +import { type CheckoutElements, type CheckoutProps, checkoutContext, useCheckoutContext } from '@/components/checkout/checkout'; +import { CheckoutSection } from '@/components/checkout/checkout-section'; +import { PaymentMethodRenderer } from '@/components/checkout/payment/payment-method-renderer'; +import { ConditionalExpressProviders } from '@/components/checkout/payment/utils/conditional-providers'; +import { Target } from '@/components/checkout/target/target'; +import type { GoDaddyVariables } from '@/godaddy-provider'; +import { type Theme, useTheme } from '@/hooks/use-theme'; +import { useVariables } from '@/hooks/use-variables'; +import { TrackingProvider } from '@/tracking/tracking-provider'; +import type { AvailablePaymentProviders, CheckoutSession, PaymentMethodValue } from '@/types'; interface ExpressCheckoutAppearance { - theme?: Theme; - elements?: CheckoutElements; - variables?: Omit; + theme?: Theme; + elements?: CheckoutElements; + variables?: Omit; } export interface ExpressCheckoutProps { - session: CheckoutSession | undefined; - appearance?: ExpressCheckoutAppearance; - stripeConfig?: CheckoutProps["stripeConfig"]; - godaddyPaymentsConfig?: CheckoutProps["godaddyPaymentsConfig"]; - squareConfig?: CheckoutProps["squareConfig"]; - paypalConfig?: CheckoutProps["paypalConfig"]; - direction?: "ltr" | "rtl"; - enableTracking?: boolean; - targets?: Partial ReactNode>>; + session: CheckoutSession | undefined; + appearance?: ExpressCheckoutAppearance; + stripeConfig?: CheckoutProps['stripeConfig']; + godaddyPaymentsConfig?: CheckoutProps['godaddyPaymentsConfig']; + squareConfig?: CheckoutProps['squareConfig']; + paypalConfig?: CheckoutProps['paypalConfig']; + direction?: 'ltr' | 'rtl'; + enableTracking?: boolean; + targets?: Partial ReactNode>>; } function DraftOrderExpressCheckoutButtons() { - const { session } = useCheckoutContext(); - - const expressProviders = React.useMemo(() => { - if (!session?.paymentMethods) return []; - - return Object.entries(session.paymentMethods) - .filter( - ([, method]) => - method && - Array.isArray(method.checkoutTypes) && - method.checkoutTypes.includes("express"), - ) - .map(([provider]) => provider); - }, [session?.paymentMethods]); - - const availableExpressButtons = expressProviders - .map((provider) => { - const processor = - session?.paymentMethods?.[provider as PaymentMethodValue]?.processor; - - return ( - - ); - }) - .filter(Boolean); - - if (availableExpressButtons.length === 0) { - return null; - } - - return ( - - -
{availableExpressButtons}
- -
- ); + const { session } = useCheckoutContext(); + + const expressProviders = React.useMemo(() => { + if (!session?.paymentMethods) return []; + + return Object.entries(session.paymentMethods) + .filter(([, method]) => method && Array.isArray(method.checkoutTypes) && method.checkoutTypes.includes('express')) + .map(([provider]) => provider); + }, [session?.paymentMethods]); + + const availableExpressButtons = expressProviders + .map(provider => { + const processor = session?.paymentMethods?.[provider as PaymentMethodValue]?.processor; + + return ( + + ); + }) + .filter(Boolean); + + if (availableExpressButtons.length === 0) { + return null; + } + + return ( + + +
{availableExpressButtons}
+ +
+ ); } export function DraftOrderExpressCheckout(props: ExpressCheckoutProps) { - const { - session, - enableTracking = false, - stripeConfig, - godaddyPaymentsConfig, - squareConfig, - paypalConfig, - } = props; - - useTheme(); - useVariables(props?.appearance?.variables); - - const [isConfirmingCheckout, setIsConfirmingCheckout] = React.useState(false); - const [checkoutErrors, setCheckoutErrors] = React.useState< - string[] | undefined - >(undefined); - - // Create a context value with only the session and payment configurations - const contextValue = { - elements: props?.appearance?.elements, - targets: props?.targets, - session, - stripeConfig, - godaddyPaymentsConfig, - squareConfig, - paypalConfig, - isConfirmingCheckout, - setIsConfirmingCheckout, - checkoutErrors, - setCheckoutErrors, - }; - - // Only render if there are express payment methods available - const hasExpressPaymentMethods = React.useMemo(() => { - if (!session?.paymentMethods) return false; - - return Object.values(session.paymentMethods).some( - (method) => - method && - Array.isArray(method.checkoutTypes) && - method.checkoutTypes.includes("express"), - ); - }, [session?.paymentMethods]); - - if (!hasExpressPaymentMethods) { - return null; - } - - return ( - - - - - - - - - - ); + const { session, enableTracking = false, stripeConfig, godaddyPaymentsConfig, squareConfig, paypalConfig } = props; + + useTheme(); + useVariables(props?.appearance?.variables); + + const [isConfirmingCheckout, setIsConfirmingCheckout] = React.useState(false); + const [checkoutErrors, setCheckoutErrors] = React.useState(undefined); + + // Create a context value with only the session and payment configurations + const contextValue = { + elements: props?.appearance?.elements, + targets: props?.targets, + session, + stripeConfig, + godaddyPaymentsConfig, + squareConfig, + paypalConfig, + isConfirmingCheckout, + setIsConfirmingCheckout, + checkoutErrors, + setCheckoutErrors, + }; + + // Only render if there are express payment methods available + const hasExpressPaymentMethods = React.useMemo(() => { + if (!session?.paymentMethods) return false; + + return Object.values(session.paymentMethods).some( + method => method && Array.isArray(method.checkoutTypes) && method.checkoutTypes.includes('express') + ); + }, [session?.paymentMethods]); + + if (!hasExpressPaymentMethods) { + return null; + } + + return ( + + + + + + + + + + ); } diff --git a/packages/react/src/components/checkout/form/checkout-error-list.tsx b/packages/react/src/components/checkout/form/checkout-error-list.tsx index 9a968c87..c7b3c836 100644 --- a/packages/react/src/components/checkout/form/checkout-error-list.tsx +++ b/packages/react/src/components/checkout/form/checkout-error-list.tsx @@ -1,51 +1,46 @@ -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -import { CircleAlert } from "lucide-react"; -import React from "react"; +import { CircleAlert } from 'lucide-react'; +import React from 'react'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; export function CheckoutErrorList() { - const { t } = useGoDaddyContext(); - const { checkoutErrors, isCheckoutDisabled } = useCheckoutContext(); - const ref = React.useRef(null); + const { t } = useGoDaddyContext(); + const { checkoutErrors, isCheckoutDisabled } = useCheckoutContext(); + const ref = React.useRef(null); - React.useEffect(() => { - if (checkoutErrors?.length && ref.current) { - ref.current.scrollIntoView({ behavior: "smooth", block: "center" }); + React.useEffect(() => { + if (checkoutErrors?.length && ref.current) { + ref.current.scrollIntoView({ behavior: 'smooth', block: 'center' }); - // Track checkout errors - track({ - eventId: eventIds.formError, - type: TrackingEventType.EVENT, - properties: { - errorCodes: checkoutErrors.join(","), - errorCount: checkoutErrors.length, - }, - }); - } - }, [checkoutErrors]); + // Track checkout errors + track({ + eventId: eventIds.formError, + type: TrackingEventType.EVENT, + properties: { + errorCodes: checkoutErrors.join(','), + errorCount: checkoutErrors.length, + }, + }); + } + }, [checkoutErrors]); - if (!checkoutErrors?.length && !isCheckoutDisabled) return null; + if (!checkoutErrors?.length && !isCheckoutDisabled) return null; - return ( -
-
- -
    - {checkoutErrors?.map((code) => ( -
  • - {t.apiErrors?.[code as keyof typeof t.apiErrors] || code} -
  • - ))} - {isCheckoutDisabled && ( -
  • {t.general.checkoutDisabled}
  • - )} -
-
-
- ); + return ( +
+
+ +
    + {checkoutErrors?.map(code => ( +
  • + {t.apiErrors?.[code as keyof typeof t.apiErrors] || code} +
  • + ))} + {isCheckoutDisabled &&
  • {t.general.checkoutDisabled}
  • } +
+
+
+ ); } diff --git a/packages/react/src/components/checkout/form/checkout-form-container.tsx b/packages/react/src/components/checkout/form/checkout-form-container.tsx index c8a317cb..c1d14942 100644 --- a/packages/react/src/components/checkout/form/checkout-form-container.tsx +++ b/packages/react/src/components/checkout/form/checkout-form-container.tsx @@ -1,86 +1,50 @@ -import { - type CheckoutProps, - useCheckoutContext, -} from "@/components/checkout/checkout"; -import { CheckoutSkeleton } from "@/components/checkout/checkout-skeleton"; -import { CheckoutForm } from "@/components/checkout/form/checkout-form"; -import { - useDraftOrder, - useDraftOrderLineItems, -} from "@/components/checkout/order/use-draft-order"; -import { useDraftOrderProductsMap } from "@/components/checkout/order/use-draft-order-products"; -import { useUpdateTaxes } from "@/components/checkout/order/use-update-taxes"; -import { - mapOrderToFormValues, - mapSkusToItemsDisplay, -} from "@/components/checkout/utils/checkout-transformers"; -import { useEffect, useMemo, useRef } from "react"; -import type { z } from "zod"; - -interface CheckoutFormContainerProps extends Omit { - // biome-ignore lint/suspicious/noExplicitAny: TODO: Fix this - schema: z.ZodObject | z.ZodEffects; +import { useMemo } from 'react'; +import type { z } from 'zod'; +import { type CheckoutProps, useCheckoutContext } from '@/components/checkout/checkout'; +import { CheckoutSkeleton } from '@/components/checkout/checkout-skeleton'; +import { CheckoutForm } from '@/components/checkout/form/checkout-form'; +import { useDraftOrder, useDraftOrderLineItems } from '@/components/checkout/order/use-draft-order'; +import { useDraftOrderProductsMap } from '@/components/checkout/order/use-draft-order-products'; +import { mapOrderToFormValues, mapSkusToItemsDisplay } from '@/components/checkout/utils/checkout-transformers'; + +interface CheckoutFormContainerProps extends Omit { + schema: z.ZodObject | z.ZodEffects; } -export function CheckoutFormContainer({ - schema, - ...props -}: CheckoutFormContainerProps) { - const { session, isConfirmingCheckout } = useCheckoutContext(); - - const draftOrderQuery = useDraftOrder(); - const draftOrderLineItemsQuery = useDraftOrderLineItems(); - const skusMap = useDraftOrderProductsMap(); - const updateTaxes = useUpdateTaxes(); - - const { data: order } = draftOrderQuery; - const { data: lineItems } = draftOrderLineItemsQuery; - - const items = useMemo( - () => mapSkusToItemsDisplay(lineItems, skusMap), - [lineItems, skusMap], - ); - - const formValues = useMemo( - () => ({ - ...mapOrderToFormValues(order, props.defaultValues), - }), - [order, props.defaultValues], - ); - - const hasCalledUpdateTaxes = useRef(false); - - useEffect(() => { - if ( - !hasCalledUpdateTaxes.current && - order && - (order.billing?.address || order.shipping?.address) && - session?.enableTaxCollection - ) { - updateTaxes.mutate(undefined); - hasCalledUpdateTaxes.current = true; - } - }, [order, updateTaxes, session]); - - if (!isConfirmingCheckout && !draftOrderQuery.isLoading && !order) { - const returnUrl = session?.returnUrl; - if (returnUrl) { - window.location.href = returnUrl; - return null; - } - } - - if (draftOrderQuery.isLoading) { - return ; - } - - return ( - - ); +export function CheckoutFormContainer({ schema, ...props }: CheckoutFormContainerProps) { + const { session, isConfirmingCheckout } = useCheckoutContext(); + + const draftOrderQuery = useDraftOrder(); + const draftOrderLineItemsQuery = useDraftOrderLineItems(); + const skusMap = useDraftOrderProductsMap(); + + const { data: order } = draftOrderQuery; + const { data: lineItems } = draftOrderLineItemsQuery; + + const items = useMemo(() => mapSkusToItemsDisplay(lineItems, skusMap), [lineItems, skusMap]); + + const formValues = useMemo( + () => ({ + ...mapOrderToFormValues({ + order, + defaultValues: props.defaultValues, + defaultCountryCode: session?.shipping?.originAddress?.countryCode, + }), + }), + [order, props.defaultValues, session?.shipping?.originAddress?.countryCode] + ); + + if (!isConfirmingCheckout && !draftOrderQuery.isLoading && !order) { + const returnUrl = session?.returnUrl; + if (returnUrl) { + window.location.href = returnUrl; + return null; + } + } + + if (draftOrderQuery.isLoading) { + return ; + } + + return ; } diff --git a/packages/react/src/components/checkout/form/checkout-form.tsx b/packages/react/src/components/checkout/form/checkout-form.tsx index 008ba235..2f158f70 100644 --- a/packages/react/src/components/checkout/form/checkout-form.tsx +++ b/packages/react/src/components/checkout/form/checkout-form.tsx @@ -1,491 +1,429 @@ -import { AddressForm } from "@/components/checkout/address"; +import { zodResolver } from '@hookform/resolvers/zod'; +import { useIsMutating } from '@tanstack/react-query'; +import React, { useEffect, useRef } from 'react'; +import { useForm } from 'react-hook-form'; +import type { z } from 'zod'; +import { AddressForm } from '@/components/checkout/address'; +import { type CheckoutFormData, type CheckoutProps, LayoutSections, useCheckoutContext } from '@/components/checkout/checkout'; +import { CheckoutSection } from '@/components/checkout/checkout-section'; +import { CheckoutSectionHeader } from '@/components/checkout/checkout-section-header'; +import { ContactForm } from '@/components/checkout/contact/contact-form'; +import { DeliveryMethodForm, DeliveryMethods } from '@/components/checkout/delivery/delivery-method'; +import { ExpressCheckoutButtons } from '@/components/checkout/express-checkout/express-checkout-buttons'; +import { CheckoutErrorList } from '@/components/checkout/form/checkout-error-list'; +import { DraftOrderLineItems, type Product } from '@/components/checkout/line-items/line-items'; +import { NotesForm } from '@/components/checkout/notes/notes-form'; +import { useDraftOrder, useDraftOrderTotals } from '@/components/checkout/order/use-draft-order'; +import { PaymentForm } from '@/components/checkout/payment/payment-form'; import { - type CheckoutFormData, - type CheckoutProps, - LayoutSections, - useCheckoutContext, -} from "@/components/checkout/checkout"; -import { CheckoutSection } from "@/components/checkout/checkout-section"; -import { CheckoutSectionHeader } from "@/components/checkout/checkout-section-header"; -import { ContactForm } from "@/components/checkout/contact/contact-form"; -import { - DeliveryMethodForm, - DeliveryMethods, -} from "@/components/checkout/delivery/delivery-method"; -import { ExpressCheckoutButtons } from "@/components/checkout/express-checkout/express-checkout-buttons"; -import { CheckoutErrorList } from "@/components/checkout/form/checkout-error-list"; -import { - DraftOrderLineItems, - type Product, -} from "@/components/checkout/line-items/line-items"; -import { NotesForm } from "@/components/checkout/notes/notes-form"; -import { useDraftOrderTotals } from "@/components/checkout/order/use-draft-order-totals"; -import { PaymentForm } from "@/components/checkout/payment/payment-form"; -import { - ConditionalExpressProviders, - ConditionalPaymentProviders, -} from "@/components/checkout/payment/utils/conditional-providers"; -import { LocalPickupForm } from "@/components/checkout/pickup/local-pickup"; -import { ShippingMethodForm } from "@/components/checkout/shipping/shipping-method"; -import { Target } from "@/components/checkout/target/target"; -import { TipsForm } from "@/components/checkout/tips/tips-form"; -import { DraftOrderTotals } from "@/components/checkout/totals/totals"; -import { - Accordion, - AccordionContent, - AccordionItem, - AccordionTrigger, -} from "@/components/ui/accordion"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -import { CheckoutType, PaymentMethodType } from "@/types"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useIsMutating } from "@tanstack/react-query"; -import React, { useEffect, useRef } from "react"; -import { useForm } from "react-hook-form"; -import type { z } from "zod"; -import { FreePaymentForm } from "../payment/free-payment-form"; -import { CustomFormProvider } from "./custom-form-provider"; + ConditionalExpressProviders, + ConditionalPaymentProviders, +} from '@/components/checkout/payment/utils/conditional-providers'; +import { LocalPickupForm } from '@/components/checkout/pickup/local-pickup'; +import { ShippingMethodForm } from '@/components/checkout/shipping/shipping-method'; +import { Target } from '@/components/checkout/target/target'; +import { TipsForm } from '@/components/checkout/tips/tips-form'; +import { DraftOrderTotals } from '@/components/checkout/totals/totals'; +import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; +import { CheckoutType, PaymentMethodType } from '@/types'; +import { FreePaymentForm } from '../payment/free-payment-form'; +import { CustomFormProvider } from './custom-form-provider'; const deliveryMethodToGridArea: Record = { - SHIP: "shipping", - PICKUP: "pickup", - DELIVERY: "delivery", - DIGITAL: "digital", + SHIP: 'shipping', + PICKUP: 'pickup', + DELIVERY: 'delivery', + DIGITAL: 'digital', }; -interface CheckoutFormProps extends Omit { - // biome-ignore lint/suspicious/noExplicitAny: TODO: Fix this - schema: z.ZodObject | z.ZodEffects; - defaultValues?: Pick; - items: Product[]; +interface CheckoutFormProps extends Omit { + schema: z.ZodObject | z.ZodEffects; + defaultValues?: Pick; + items: Product[]; } -export function CheckoutForm({ - schema, - defaultValues, - items, - ...props -}: CheckoutFormProps) { - const { t } = useGoDaddyContext(); - const { session, isCheckoutDisabled } = useCheckoutContext(); - - const form = useForm({ - resolver: zodResolver(schema), - defaultValues: defaultValues ?? {}, - reValidateMode: "onBlur", - mode: "onBlur", - }); - - const deliveryMethod = form.watch("deliveryMethod"); - const tipAmount = form.watch("tipAmount"); - const isPickup = deliveryMethod === DeliveryMethods.PICKUP; - const isShipping = deliveryMethod === DeliveryMethods.SHIP; - const isUpdatingShipping = - useIsMutating({ - mutationKey: ["apply-shipping-method", { sessionId: session?.id }], - }) > 0; - - const isUpdatingTaxes = - useIsMutating({ - mutationKey: ["update-draft-order-taxes", { id: session?.id }], - }) > 0; - - // // Get active discount codes - // const discountCodes = - // (order?.discounts?.map((d) => d.code).filter(Boolean) as string[]) || []; - - const draftOrderTotalsQuery = useDraftOrderTotals(); - - const { data: totals, isLoading: totalsLoading } = draftOrderTotalsQuery; - - // Order summary calculations - const subtotal = (totals?.subTotal?.value || 0) / 100; - const orderDiscount = (totals?.discountTotal?.value || 0) / 100; - const shipping = (totals?.shippingTotal?.value || 0) / 100; - const taxTotal = (totals?.taxTotal?.value || 0) / 100; - const orderTotal = (totals?.total?.value || 0) / 100; - const tipTotal = (tipAmount || 0) / 100; - const currencyCode = totals?.total?.currencyCode || "USD"; - const itemCount = items.reduce((sum, item) => sum + (item?.quantity || 0), 0); - - const isFree = orderTotal <= 0; - const showExpressButtons = (totals?.subTotal?.value || 0) > 0; - - useEffect(() => { - if (!totalsLoading && isFree) { - form.setValue("paymentMethod", PaymentMethodType.OFFLINE); - } - }, [form, totalsLoading, isFree]); - - // Track checkout start impression when the component first renders - const hasTrackedCheckoutStart = useRef(false); - useEffect(() => { - if (!hasTrackedCheckoutStart.current && !totalsLoading) { - track({ - eventId: eventIds.checkoutStart, - type: TrackingEventType.IMPRESSION, - properties: { - subtotal: Math.round(subtotal * 100), - total: Math.round(orderTotal * 100), - itemCount, - currencyCode, - }, - }); - hasTrackedCheckoutStart.current = true; - } - }, [subtotal, orderTotal, itemCount, currencyCode, totalsLoading]); - - const lineItemDiscounts = items.reduce((sum, item) => { - if (item?.discounts && Array.isArray(item.discounts)) { - return ( - sum + - item.discounts.reduce( - (dSum, discount) => dSum + (discount.amount?.value || 0), - 0, - ) - ); - } - return sum; - }, 0); - - const totalSavings = Math.abs(orderDiscount + lineItemDiscounts); - - const [gridTemplateAreas, sectionLength] = React.useMemo(() => { - const { enableTips, paymentMethods } = session || {}; - if (!props?.layout) { - const enableExpressCheckout = Object.values(paymentMethods ?? {}).some( - (method) => - method && - Array.isArray(method.checkoutTypes) && - method.checkoutTypes.includes(CheckoutType.EXPRESS), - ); - const defaultTemplate = ` ${enableExpressCheckout ? "'express-checkout'" : ""} 'contact' 'delivery' '${deliveryMethodToGridArea[deliveryMethod]}' ${enableTips ? "'tips'" : ""} 'payment'`; - // Return consistent tuple type: [string, number] - let totalSections = 3; - enableTips && totalSections++; - enableExpressCheckout && totalSections++; - return [defaultTemplate, totalSections]; - } - - // Filter out sections that shouldn't be shown based on delivery method - const filteredLayout = props.layout.filter((section) => { - if (section !== "shipping" && section !== "pickup") { - return true; - } - - // Only include shipping section if deliveryMethod is SHIP - if (section === "shipping" && deliveryMethod === DeliveryMethods.SHIP) { - return true; - } - - // Only include pickup section if deliveryMethod is PICKUP - return section === "pickup" && deliveryMethod === DeliveryMethods.PICKUP; - }); - - // Get all available section values - const sectionValues = Object.values(LayoutSections); - - const missingLayoutSections = sectionValues.filter((section) => { - if (section === "shipping" && deliveryMethod !== DeliveryMethods.SHIP) { - return false; - } - if (section === "pickup" && deliveryMethod !== DeliveryMethods.PICKUP) { - return false; - } - - if (!enableTips && section === "tips") { - return false; - } - return !filteredLayout.includes(section); - }); - - // Add missing sections to the end of the layout - const completeLayout = [...filteredLayout, ...missingLayoutSections]; - - return [`'${completeLayout.join("' '")}'`, completeLayout.length]; - }, [props?.layout, deliveryMethod, session]); - - React.useEffect(() => { - if (deliveryMethod) { - form.reset(form.getValues(), { - keepDirty: false, - }); - } - /* reset pickup fields if switching to shipping */ - if (isShipping) { - form.setValue("pickupLocationId", null); - form.setValue("pickupDate", ""); - form.setValue("pickupTime", ""); - } - }, [deliveryMethod, isShipping, form]); - - const onSubmit = async (data: CheckoutFormData) => { - console.log(data); - - // Track checkout form submission - track({ - eventId: eventIds.submitCheckoutForm, - type: TrackingEventType.CLICK, - properties: { - success: true, - deliveryMethod: data.deliveryMethod, - hasShippingAddress: !!data.shippingAddressLine1, - hasBillingAddress: !!data.billingAddressLine1, - total: Math.round(orderTotal * 100), - }, - }); - }; - - const onInvalid = (errors: typeof form.formState.errors) => { - // console.log({ formValues: form.getValues() }); - // console.log("Invalid fields:", errors); - - // Track form validation errors - track({ - eventId: eventIds.formValidationError, - type: TrackingEventType.EVENT, - properties: { - errorFields: Object.keys(errors).join(","), - errorCount: Object.keys(errors).length, - }, - }); - }; - - return ( - -
- -
- {/* Left column - Forms */} -
-
- - -
-
- {!isCheckoutDisabled && showExpressButtons ? ( - - - - ) : null} - - - - - - - - - - - - - - {session?.enableTips && ( - - - - - - - )} - {isPickup && session?.enableLocalPickup && ( - - - - - - - - )} - {isShipping && ( - - - -
- {session?.enableShippingAddressCollection ? ( - - ) : null} - {session?.shipping?.originAddress ? ( - - ) : ( -
-

- {t?.shipping?.noShippingOriginAddress} -

-
- )} - {session?.enableNotesCollection ? : null} -
- -
- )} - - - -
- {!isCheckoutDisabled ? ( - !isFree ? ( - - - - ) : ( - - ) - ) : null} -
- -
-
-
- -
-
- - {/* Right column - Order summary */} -
-
- -
- - - -
- - {t.totals.orderSummary} - - - {new Intl.NumberFormat("en-us", { - style: "currency", - currency: currencyCode, - }).format(orderTotal)} - -
-
- -
- - - -
-
-
-
-
- -
- - - -
- -
-
-
- -
-
- ); +export function CheckoutForm({ schema, defaultValues, items, ...props }: CheckoutFormProps) { + const { t } = useGoDaddyContext(); + const { session, isCheckoutDisabled } = useCheckoutContext(); + + const form = useForm({ + resolver: zodResolver(schema), + defaultValues: defaultValues ?? {}, + reValidateMode: 'onBlur', + mode: 'onBlur', + }); + + const deliveryMethod = form.watch('deliveryMethod'); + const tipAmount = form.watch('tipAmount'); + const isPickup = deliveryMethod === DeliveryMethods.PICKUP; + const isShipping = deliveryMethod === DeliveryMethods.SHIP; + const isUpdatingShipping = + useIsMutating({ + mutationKey: ['apply-shipping-method', { sessionId: session?.id }], + }) > 0; + + const isDiscountApplying = + useIsMutating({ + mutationKey: ['apply-discount', { sessionId: session?.id }], + }) > 0; + + const isUpdatingTaxes = + useIsMutating({ + mutationKey: ['update-draft-order-taxes', { id: session?.id }], + }) > 0; + + const draftOrderTotalsQuery = useDraftOrderTotals(); + const draftOrder = useDraftOrder(); + + const { data: totals, isLoading: totalsLoading } = draftOrderTotalsQuery; + const { data: order } = draftOrder; + + // Order summary calculations + const subtotal = (totals?.subTotal?.value || 0) / 100; + const orderDiscount = (totals?.discountTotal?.value || 0) / 100; + const shipping = (order?.shippingLines?.reduce((sum, line) => sum + (line?.amount?.value || 0), 0) || 0) / 100; + const taxTotal = (totals?.taxTotal?.value || 0) / 100; + const orderTotal = (totals?.total?.value || 0) / 100; + const tipTotal = (tipAmount || 0) / 100; + const currencyCode = totals?.total?.currencyCode || 'USD'; + const itemCount = items.reduce((sum, item) => sum + (item?.quantity || 0), 0); + + const isFree = orderTotal <= 0; + const showExpressButtons = (totals?.subTotal?.value || 0) > 0; + + useEffect(() => { + if (!totalsLoading && isFree) { + form.setValue('paymentMethod', PaymentMethodType.OFFLINE); + } + }, [form, totalsLoading, isFree]); + + // Track checkout start impression when the component first renders + const hasTrackedCheckoutStart = useRef(false); + useEffect(() => { + if (!hasTrackedCheckoutStart.current && !totalsLoading) { + track({ + eventId: eventIds.checkoutStart, + type: TrackingEventType.IMPRESSION, + properties: { + subtotal: Math.round(subtotal * 100), + total: Math.round(orderTotal * 100), + itemCount, + currencyCode, + }, + }); + hasTrackedCheckoutStart.current = true; + } + }, [subtotal, orderTotal, itemCount, currencyCode, totalsLoading]); + + const lineItemDiscounts = items.reduce((sum, item) => { + if (item?.discounts && Array.isArray(item.discounts)) { + return sum + item.discounts.reduce((dSum, discount) => dSum + (discount.amount?.value || 0), 0); + } + return sum; + }, 0); + + const totalSavings = Math.abs(orderDiscount + lineItemDiscounts); + + const [gridTemplateAreas, sectionLength] = React.useMemo(() => { + const { enableTips, paymentMethods } = session || {}; + if (!props?.layout) { + const enableExpressCheckout = Object.values(paymentMethods ?? {}).some( + method => method && Array.isArray(method.checkoutTypes) && method.checkoutTypes.includes(CheckoutType.EXPRESS) + ); + const defaultTemplate = ` ${enableExpressCheckout ? "'express-checkout'" : ''} 'contact' 'delivery' '${deliveryMethodToGridArea[deliveryMethod]}' ${enableTips ? "'tips'" : ''} 'payment'`; + // Return consistent tuple type: [string, number] + let totalSections = 3; + enableTips && totalSections++; + enableExpressCheckout && totalSections++; + return [defaultTemplate, totalSections]; + } + + // Filter out sections that shouldn't be shown based on delivery method + const filteredLayout = props.layout.filter(section => { + if (section !== 'shipping' && section !== 'pickup') { + return true; + } + + // Only include shipping section if deliveryMethod is SHIP + if (section === 'shipping' && deliveryMethod === DeliveryMethods.SHIP) { + return true; + } + + // Only include pickup section if deliveryMethod is PICKUP + return section === 'pickup' && deliveryMethod === DeliveryMethods.PICKUP; + }); + + // Get all available section values + const sectionValues = Object.values(LayoutSections); + + const missingLayoutSections = sectionValues.filter(section => { + if (section === 'shipping' && deliveryMethod !== DeliveryMethods.SHIP) { + return false; + } + if (section === 'pickup' && deliveryMethod !== DeliveryMethods.PICKUP) { + return false; + } + + if (!enableTips && section === 'tips') { + return false; + } + return !filteredLayout.includes(section); + }); + + // Add missing sections to the end of the layout + const completeLayout = [...filteredLayout, ...missingLayoutSections]; + + return [`'${completeLayout.join("' '")}'`, completeLayout.length]; + }, [props?.layout, deliveryMethod, session]); + + React.useEffect(() => { + if (deliveryMethod) { + form.reset(form.getValues(), { + keepDirty: false, + }); + } + /* reset pickup fields if switching to shipping */ + if (isShipping) { + form.setValue('pickupLocationId', null); + form.setValue('pickupDate', ''); + form.setValue('pickupTime', ''); + } + }, [deliveryMethod, isShipping, form]); + + const onSubmit = async (data: CheckoutFormData) => { + // Track checkout form submission + track({ + eventId: eventIds.submitCheckoutForm, + type: TrackingEventType.CLICK, + properties: { + success: true, + deliveryMethod: data.deliveryMethod, + hasShippingAddress: !!data.shippingAddressLine1, + hasBillingAddress: !!data.billingAddressLine1, + total: Math.round(orderTotal * 100), + }, + }); + }; + + const onInvalid = (errors: typeof form.formState.errors) => { + // console.log({ formValues: form.getValues() }); + // console.log("Invalid fields:", errors); + + // Track form validation errors + track({ + eventId: eventIds.formValidationError, + type: TrackingEventType.EVENT, + properties: { + errorFields: Object.keys(errors).join(','), + errorCount: Object.keys(errors).length, + }, + }); + }; + + return ( + +
+ +
+ {/* Left column - Forms */} +
+
+ + +
+
+ {!isCheckoutDisabled && showExpressButtons ? ( + + + + ) : null} + + + + + + + + + + + + + + {session?.enableTips && ( + + + + + + + )} + {isPickup && session?.enableLocalPickup && ( + + + + + + + + )} + {isShipping && ( + + + +
+ {session?.enableShippingAddressCollection ? : null} + {session?.shipping?.originAddress ? ( + + ) : ( +
+

{t?.shipping?.noShippingOriginAddress}

+
+ )} + {session?.enableNotesCollection ? : null} +
+ +
+ )} + + + +
+ {!isCheckoutDisabled ? ( + !isFree ? ( + + + + ) : ( + + ) + ) : null} +
+ +
+
+
+ +
+
+ + {/* Right column - Order summary */} +
+
+ +
+ + + +
+ {t.totals.orderSummary} + + {new Intl.NumberFormat('en-us', { + style: 'currency', + currency: currencyCode, + }).format(orderTotal)} + +
+
+ +
+ + + +
+
+
+
+
+ +
+ + + +
+ +
+
+
+ +
+
+ ); } diff --git a/packages/react/src/components/checkout/form/custom-form-provider.tsx b/packages/react/src/components/checkout/form/custom-form-provider.tsx index 950ad077..2aeaf1c9 100644 --- a/packages/react/src/components/checkout/form/custom-form-provider.tsx +++ b/packages/react/src/components/checkout/form/custom-form-provider.tsx @@ -1,146 +1,102 @@ -import React, { useMemo, useState, useEffect } from "react"; -import { FormProvider } from "react-hook-form"; -import type { FieldPath, UseFormReturn, UseFormTrigger } from "react-hook-form"; -import { type CheckoutFormData, useCheckoutContext } from "../checkout"; -import { DeliveryMethods } from "../delivery/delivery-method"; +import React, { useEffect, useMemo, useState } from 'react'; +import type { FieldPath, UseFormReturn, UseFormTrigger } from 'react-hook-form'; +import { FormProvider } from 'react-hook-form'; +import type { CheckoutFormData } from '../checkout'; +import { DeliveryMethods } from '../delivery/delivery-method'; /** * Custom FormProvider that extends React Hook Form's FormProvider * to add smart validation that respects unregistered fields */ -export function CustomFormProvider< - TFormValues extends Record = CheckoutFormData, ->({ - children, - ...methods +export function CustomFormProvider = CheckoutFormData>({ + children, + ...methods }: { children: React.ReactNode } & UseFormReturn) { - // Original methods reference to use in the enhancedTrigger - const methodsRef = React.useRef(methods); - const { session } = useCheckoutContext(); - // Use state to force re-render - const [, setForceUpdate] = useState({}); - - // Update the ref on every render - useEffect(() => { - methodsRef.current = methods; - }); - - // Subscribe to formState changes - useEffect(() => { - // Access specific properties to create a subscription - const { errors, isValidating } = methods.formState; - - // Intentionally logging subscription values to prevent tree-shaking - if (session?.environment === "dev") { - console.debug("Form state subscription active", { - isValidating, - hasErrors: !!Object.keys(errors || {}).length, - }); - } - }, [methods.formState, session]); - - // biome-ignore lint/correctness/useExhaustiveDependencies: using methodsRef instead of methods directly - const enhancedMethods = useMemo(() => { - // Override the trigger function with a type-safe version that ensures error messages are displayed - const enhancedTrigger: UseFormTrigger = async ( - name?: - | FieldPath - | ReadonlyArray> - | Array>, - options?: { shouldFocus?: boolean }, - ) => { - try { - const currentMethods = methodsRef.current; - - // Always enable shouldFocus by default unless explicitly disabled - const triggerOptions = { shouldFocus: true, ...options }; - - let result: boolean; - - // If specific fields are provided, use the original trigger - if (name) { - if (session?.environment === "dev") { - console.log("Triggering validation for specific fields:", name); - } - // Use original methods directly to ensure formState is properly updated - result = await methods.trigger(name, triggerOptions); - } - // Get the current delivery method using type assertion for safety - else { - const values = currentMethods.getValues(); - const deliveryMethod = values.deliveryMethod as unknown as string; - const paymentUseShippingAddress = - values.paymentUseShippingAddress as unknown as boolean; - const isPickup = deliveryMethod === DeliveryMethods.PICKUP; - const isShipping = deliveryMethod === DeliveryMethods.SHIP; - const requireBillingAddress = !paymentUseShippingAddress || isPickup; - - // Get all field names and filter based on conditions - const allFieldNames = Object.keys(values); - let fieldNames = [...allFieldNames] as Array>; - - /* If using shipping address for billing (and not pickup), filter out billing-related field validations */ - if (!requireBillingAddress) { - fieldNames = fieldNames.filter( - (fieldName) => !fieldName.startsWith("billing"), - ); - } - - /* If the delivery method is not shipping (i.e. pickup), filter out shipping-related field validations */ - if (!isShipping) { - fieldNames = fieldNames.filter( - (fieldName) => !fieldName.startsWith("shipping"), - ); - } - - // Log if in dev mode - if (session?.environment === "dev") { - if (paymentUseShippingAddress || isPickup) { - console.log( - "Triggering validation for filtered fields:", - fieldNames, - ); - } else { - console.log("Triggering validation for all fields"); - } - } - - // Trigger validation only on the filtered fields if any condition is true, - // otherwise trigger on all fields - if (paymentUseShippingAddress || isPickup) { - result = await methods.trigger(fieldNames, triggerOptions); - } else { - result = await methods.trigger(undefined, triggerOptions); - } - } - - // Force update to ensure error messages show immediately - setTimeout(() => { - setForceUpdate({}); - }, 0); - - return result; - } catch (error) { - if (session?.environment === "dev") { - console.error("Error in enhanced trigger:", error); - } - return false; - } - }; - - // Return the enhanced methods object with properly typed trigger and original state - const result = { - ...methods, - trigger: enhancedTrigger, - } as UseFormReturn; - - // Make sure we're not losing formState reactivity - Object.defineProperty(result, "formState", { - get: () => methodsRef.current.formState, - }); - - return result; - }, []); - - return {children}; + // Original methods reference to use in the enhancedTrigger + const methodsRef = React.useRef(methods); + // Use state to force re-render + const [, setForceUpdate] = useState({}); + + // Update the ref on every render + useEffect(() => { + methodsRef.current = methods; + }); + + const enhancedMethods = useMemo(() => { + // Override the trigger function with a type-safe version that ensures error messages are displayed + const enhancedTrigger: UseFormTrigger = async ( + name?: FieldPath | ReadonlyArray> | Array>, + options?: { shouldFocus?: boolean } + ) => { + try { + const currentMethods = methodsRef.current; + + // Always enable shouldFocus by default unless explicitly disabled + const triggerOptions = { shouldFocus: true, ...options }; + + let result: boolean; + + // If specific fields are provided, use the original trigger + if (name) { + // Use original methods directly to ensure formState is properly updated + result = await methods.trigger(name, triggerOptions); + } + // Get the current delivery method using type assertion for safety + else { + const values = currentMethods.getValues(); + const deliveryMethod = values.deliveryMethod as unknown as string; + const paymentUseShippingAddress = values.paymentUseShippingAddress as unknown as boolean; + const isPickup = deliveryMethod === DeliveryMethods.PICKUP; + const isShipping = deliveryMethod === DeliveryMethods.SHIP; + const requireBillingAddress = !paymentUseShippingAddress || isPickup; + + // Get all field names and filter based on conditions + const allFieldNames = Object.keys(values); + let fieldNames = [...allFieldNames] as Array>; + + /* If using shipping address for billing (and not pickup), filter out billing-related field validations */ + if (!requireBillingAddress) { + fieldNames = fieldNames.filter(fieldName => !fieldName.startsWith('billing')); + } + + /* If the delivery method is not shipping (i.e. pickup), filter out shipping-related field validations */ + if (!isShipping) { + fieldNames = fieldNames.filter(fieldName => !fieldName.startsWith('shipping')); + } + + // Trigger validation only on the filtered fields if any condition is true, + // otherwise trigger on all fields + if (paymentUseShippingAddress || isPickup) { + result = await methods.trigger(fieldNames, triggerOptions); + } else { + result = await methods.trigger(undefined, triggerOptions); + } + } + + // Force update to ensure error messages show immediately + setTimeout(() => { + setForceUpdate({}); + }, 0); + + return result; + } catch { + return false; + } + }; + + // Return the enhanced methods object with properly typed trigger and original state + const result = { + ...methods, + trigger: enhancedTrigger, + } as UseFormReturn; + + // Make sure we're not losing formState reactivity + Object.defineProperty(result, 'formState', { + get: () => methodsRef.current.formState, + }); + + return result; + }, []); + + return {children}; } diff --git a/packages/react/src/components/checkout/form/utils/get-required-fields-from-schema.ts b/packages/react/src/components/checkout/form/utils/get-required-fields-from-schema.ts index b4f34d96..e0a33b60 100644 --- a/packages/react/src/components/checkout/form/utils/get-required-fields-from-schema.ts +++ b/packages/react/src/components/checkout/form/utils/get-required-fields-from-schema.ts @@ -1,49 +1,41 @@ -import { - ZodDefault, - ZodEffects, - ZodObject, - ZodOptional, - type ZodTypeAny, - type z, -} from "zod"; +import { ZodDefault, ZodEffects, ZodObject, ZodOptional, type ZodTypeAny, type z } from 'zod'; /** * Recursively unwrap ZodEffects / ZodDefault to the core schema */ function unwrap(schema: ZodTypeAny): ZodTypeAny { - if (schema instanceof ZodEffects) { - return unwrap(schema._def.schema); - } - if (schema instanceof ZodDefault) { - return unwrap(schema._def.innerType); - } - return schema; + if (schema instanceof ZodEffects) { + return unwrap(schema._def.schema); + } + if (schema instanceof ZodDefault) { + return unwrap(schema._def.innerType); + } + return schema; } /** * Extract required/optional flags from a Zod schema */ -export function getRequiredFieldsFromSchema< - // biome-ignore lint/suspicious/noExplicitAny: We really don't know the shape of the schema here - T extends ZodObject | ZodEffects, ->(schema: T) { - const unwrapped = unwrap(schema); +export function getRequiredFieldsFromSchema | ZodEffects>(schema: T) { + const unwrapped = unwrap(schema); - if (!(unwrapped instanceof ZodObject)) { - throw new Error("getRequiredFields only works on ZodObject schemas"); - } + if (!(unwrapped instanceof ZodObject)) { + throw new Error('getRequiredFields only works on ZodObject schemas'); + } - const shape = unwrapped.shape; - const requiredMap: Record = {}; + const shape = unwrapped.shape; + const requiredMap: Record = {}; - for (const key in shape) { - let field: ZodTypeAny = shape[key]; - field = unwrap(field); // in case inner fields are wrapped too + for (const key in shape) { + if (Object.hasOwn(shape, key)) { + let field: ZodTypeAny = shape[key]; + field = unwrap(field); // in case inner fields are wrapped too - requiredMap[key] = !(field instanceof ZodOptional); - } + requiredMap[key] = !(field instanceof ZodOptional); + } + } - return requiredMap as { - [K in keyof z.infer]: boolean; - }; + return requiredMap as { + [K in keyof z.infer]: boolean; + }; } diff --git a/packages/react/src/components/checkout/line-items/index.ts b/packages/react/src/components/checkout/line-items/index.ts index 9e0fec54..c2efd6d6 100644 --- a/packages/react/src/components/checkout/line-items/index.ts +++ b/packages/react/src/components/checkout/line-items/index.ts @@ -1 +1 @@ -export * from "./line-items"; +export * from './line-items'; diff --git a/packages/react/src/components/checkout/line-items/line-item-skeleton.tsx b/packages/react/src/components/checkout/line-items/line-item-skeleton.tsx index 75f63721..a8cbf179 100644 --- a/packages/react/src/components/checkout/line-items/line-item-skeleton.tsx +++ b/packages/react/src/components/checkout/line-items/line-item-skeleton.tsx @@ -1,33 +1,32 @@ -import { Skeleton } from "@/components/ui/skeleton"; +import { Skeleton } from '@/components/ui/skeleton'; export function LineItemSkeleton() { - return ( -
- {Array.from({ length: 3 }).map((_, index) => ( - // biome-ignore lint/suspicious/noArrayIndexKey: For Skeleton -
-
- -
-
-
-
- - - - - - -
-
-
- -
-
-
-
-
- ))} -
- ); + return ( +
+ {Array.from({ length: 3 }).map((_, index) => ( +
+
+ +
+
+
+
+ + + + + + +
+
+
+ +
+
+
+
+
+ ))} +
+ ); } diff --git a/packages/react/src/components/checkout/line-items/line-items.tsx b/packages/react/src/components/checkout/line-items/line-items.tsx index fdd2195e..c76c490b 100644 --- a/packages/react/src/components/checkout/line-items/line-items.tsx +++ b/packages/react/src/components/checkout/line-items/line-items.tsx @@ -1,174 +1,131 @@ // import { Badge } from "@/components/ui/badge"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import type { SKUProduct } from "@/types"; -import { Image } from "lucide-react"; + +import { Image } from 'lucide-react'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import type { SKUProduct } from '@/types'; export interface Note { - content: string | null; - id: string | null; + content: string | null; + id: string | null; } export interface CostAdjustment { - currencyCode?: string; - value?: number; + currencyCode?: string; + value?: number; } export interface AddonValue { - amountIncreased?: number; - costAdjustment?: CostAdjustment; - name?: string; + amountIncreased?: number; + costAdjustment?: CostAdjustment; + name?: string; } export interface SelectedAddon { - attribute?: string; - sku?: string; - values?: AddonValue[]; + attribute?: string; + sku?: string; + values?: AddonValue[]; } export interface SelectedOption { - attribute?: string; - values?: string[]; + attribute?: string; + values?: string[]; } export type ProductDiscount = { - amount: { - currencyCode: string; - value: number; - }; - code: string; - name: string; - ratePercentage: number | null; + amount: { + currencyCode: string; + value: number; + }; + code: string; + name: string; + ratePercentage: string | null; }; export type Product = Partial & { - image: string; - quantity: number; - originalPrice: number; - price: number; - notes?: Note[] | null; - addons?: SelectedAddon[]; - selectedOptions?: SelectedOption[]; - discounts?: ProductDiscount[]; + image: string; + quantity: number; + originalPrice: number; + price: number; + notes?: Note[] | null; + addons?: SelectedAddon[]; + selectedOptions?: SelectedOption[]; + discounts?: ProductDiscount[]; }; export interface DraftOrderLineItemsProps { - items: Product[]; - currencyCode?: string; + items: Product[]; + currencyCode?: string; } -export function DraftOrderLineItems({ - items, - currencyCode = "USD", -}: DraftOrderLineItemsProps) { - const { t } = useGoDaddyContext(); +export function DraftOrderLineItems({ items, currencyCode = 'USD' }: DraftOrderLineItemsProps) { + const { t } = useGoDaddyContext(); - return ( -
- {items.map((item) => ( -
- {item.image ? ( -
- {item.name} -
- ) : ( -
- -
- )} -
-
-
- - {item.name} - {item?.selectedOptions?.length ? ( - - ( - {item.selectedOptions - .flatMap((option) => option.values || []) - .join(" / ")} - ) - - ) : null} - - - {item?.addons?.map((addon: SelectedAddon, index: number) => ( - - {addon.attribute}: - {addon.values?.map((value) => ( - - {value.name} - {/*{value?.costAdjustment?.value*/} - {/* ? `(+$${(value?.costAdjustment?.value / 100).toFixed(2)})`*/} - {/* : null}*/} - - ))} - - ))} - {item.notes?.length ? ( - <> - {t.lineItems.note} - {item.notes?.map((note) => ( - {note.content} - ))} - - ) : null} - - - {t.general.quantity}: {item.quantity} - - {/*{item?.discounts?.length ? (*/} - {/*
*/} - {/* */} - {/* {item?.discounts?.[0].code} (-$*/} - {/* {(item?.discounts?.[0].amount?.value || 0) / 100})*/} - {/* */} - {/*
*/} - {/*) : null}*/} -
- {item.originalPrice && item.quantity ? ( -
-
- - {new Intl.NumberFormat("en-us", { - style: "currency", - currency: currencyCode, - }).format(item.originalPrice * item.quantity)} - - {/*{item.originalPrice * item.quantity > item.price && (*/} - {/*
*/} - {/* {new Intl.NumberFormat("en-us", {*/} - {/* style: "currency",*/} - {/* currency: currencyCode,*/} - {/* }).format(item.originalPrice * item.quantity)}*/} - {/*
*/} - {/*)}*/} - {/**/} - {/* {new Intl.NumberFormat("en-us", {*/} - {/* style: "currency",*/} - {/* currency: currencyCode,*/} - {/* }).format(item.price)}*/} - {/**/} -
-
- ) : null} -
-
-
- ))} -
- ); + return ( +
+ {items.map(item => ( +
+ {item.image ? ( +
+ {item.name} +
+ ) : ( +
+ +
+ )} +
+
+
+ + {item.name} + {item?.selectedOptions?.length ? ( + ({item.selectedOptions.flatMap(option => option.values || []).join(' / ')}) + ) : null} + + + {item?.addons?.map((addon: SelectedAddon, index: number) => ( + + {addon.attribute}: + {addon.values?.map(value => ( + + {value.name} + + ))} + + ))} + {item.notes?.length ? ( + <> + {t.lineItems.note} + {item.notes?.map(note => ( + {note.content} + ))} + + ) : null} + + + {t.general.quantity}: {item.quantity} + +
+ {item.originalPrice && item.quantity ? ( +
+
+ + {new Intl.NumberFormat('en-us', { + style: 'currency', + currency: currencyCode, + }).format(item.originalPrice * item.quantity)} + +
+
+ ) : null} +
+
+
+ ))} +
+ ); } diff --git a/packages/react/src/components/checkout/notes/notes-form.tsx b/packages/react/src/components/checkout/notes/notes-form.tsx index ce591c96..7313c2cf 100644 --- a/packages/react/src/components/checkout/notes/notes-form.tsx +++ b/packages/react/src/components/checkout/notes/notes-form.tsx @@ -1,95 +1,88 @@ -"use client"; +'use client'; -import { useCheckoutContext } from "@/components/checkout/checkout"; -import { useDraftOrder } from "@/components/checkout/order/use-draft-order"; -import { useDraftOrderFieldSync } from "@/components/checkout/order/use-draft-order-sync"; -import { - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Textarea } from "@/components/ui/textarea"; -import { useGoDaddyContext } from "@/godaddy-provider"; -import { eventIds } from "@/tracking/events"; -import { TrackingEventType, track } from "@/tracking/track"; -import { useDebouncedValue } from "@tanstack/react-pacer"; -import React from "react"; -import { useFormContext } from "react-hook-form"; +import { useDebouncedValue } from '@tanstack/react-pacer'; +import React from 'react'; +import { useFormContext } from 'react-hook-form'; +import { useCheckoutContext } from '@/components/checkout/checkout'; +import { useDraftOrder } from '@/components/checkout/order/use-draft-order'; +import { useDraftOrderFieldSync } from '@/components/checkout/order/use-draft-order-sync'; +import { FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; +import { Textarea } from '@/components/ui/textarea'; +import { useGoDaddyContext } from '@/godaddy-provider'; +import { eventIds } from '@/tracking/events'; +import { TrackingEventType, track } from '@/tracking/track'; export function NotesForm() { - const form = useFormContext(); - const { t } = useGoDaddyContext(); - const { isConfirmingCheckout, requiredFields } = useCheckoutContext(); - const { data: draftOrder } = useDraftOrder(); + const form = useFormContext(); + const { t } = useGoDaddyContext(); + const { isConfirmingCheckout, requiredFields } = useCheckoutContext(); + const { data: draftOrder } = useDraftOrder(); - const notesField = form.watch("notes"); + const notesField = form.watch('notes'); - const [notes] = useDebouncedValue(notesField, { - wait: 1000, - }); + const [notes] = useDebouncedValue(notesField, { + wait: 1000, + }); - // Track when notes are added (debounced) - React.useEffect(() => { - if (notes && notes.trim() !== "") { - track({ - eventId: eventIds.addOrderNote, - type: TrackingEventType.CLICK, - properties: { - hasNotes: true, - noteLength: notes.length, - }, - }); - } - }, [notes]); + // Track when notes are added (debounced) + React.useEffect(() => { + if (notes && notes.trim() !== '') { + track({ + eventId: eventIds.addOrderNote, + type: TrackingEventType.CLICK, + properties: { + hasNotes: true, + noteLength: notes.length, + }, + }); + } + }, [notes]); - // Check if notes value differs from order value - const notesHasChanged = React.useMemo(() => { - if (!draftOrder) return true; // If no order, allow sync - const orderNotes = - draftOrder.notes?.find((note) => note.authorType === "CUSTOMER") - ?.content || ""; - return orderNotes !== (notes || ""); - }, [draftOrder, notes]); + // Check if notes value differs from order value + const notesHasChanged = React.useMemo(() => { + if (!draftOrder) return true; // If no order, allow sync + const orderNotes = draftOrder.notes?.find(note => note.authorType === 'CUSTOMER')?.content || ''; + return orderNotes !== (notes || ''); + }, [draftOrder, notes]); - useDraftOrderFieldSync({ - key: "notes", - data: notes, - deps: [notes, notesHasChanged], - enabled: notesHasChanged && (notes?.trim() || "") !== "", - fieldNames: ["notes"], - preserveFormData: false, - mapToInput: (notes) => ({ - notes: notes?.trim() - ? [ - { - authorType: "CUSTOMER", - content: notes.trim(), - }, - ] - : null, - }), - }); + useDraftOrderFieldSync({ + key: 'notes', + data: notes, + deps: [notes, notesHasChanged], + enabled: notesHasChanged && (notes?.trim() || '') !== '', + fieldNames: ['notes'], + preserveFormData: false, + mapToInput: notesValue => ({ + notes: notesValue?.trim() + ? [ + { + authorType: 'CUSTOMER', + content: notesValue.trim(), + }, + ] + : null, + }), + }); - return ( -
- ( - - {t.general.notes} -