diff --git a/packages/visual-editor/i18next-cli.components.config.ts b/packages/visual-editor/i18next-cli.components.config.ts index 2b7ac756e7..d901388c91 100644 --- a/packages/visual-editor/i18next-cli.components.config.ts +++ b/packages/visual-editor/i18next-cli.components.config.ts @@ -17,7 +17,7 @@ export default defineConfig({ pluralSeparator: "_", interpolationPrefix: "{{", interpolationSuffix: "}}", - functions: ["t", "*.t", "i18next.t"], + functions: ["t", "*.t", "i18next.t", "defaultText", "defaultRichText"], primaryLanguage: "en", defaultValue: "", sort: true, diff --git a/packages/visual-editor/locales/components/cs/visual-editor.json b/packages/visual-editor/locales/components/cs/visual-editor.json index a95ddd4953..412db63d60 100644 --- a/packages/visual-editor/locales/components/cs/visual-editor.json +++ b/packages/visual-editor/locales/components/cs/visual-editor.json @@ -17,6 +17,55 @@ "closed": "ZAVŘENO", "closesAtTime": "Zavírá v {{time}}", "closesAtTimeWeek": "Zavírá v {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "O [[name]]", + "articleName": "Název článku", + "associateAgent": "Přidružený agent", + "bannerText": "Text banneru", + "businessName": "Obchodní název", + "button": "Tlačítko", + "callToAction": "Výzva k akci", + "category": "Kategorie", + "contactMe": "Kontaktujte mě", + "credentials": "Pověření", + "directoryRoot": "Kořen adresáře", + "eventImage": "Obrázek události", + "eventTitle": "Název události", + "featuredProducts": "Vybrané produkty", + "featuredPromotion": "Doporučená propagace", + "featuredTestimonials": "Doporučené posudky", + "findALocation": "Najděte polohu", + "firstLast": "První Poslední", + "followUs": "Sledujte nás", + "footerLabel": "Štítek zápatí", + "footerLink": "Odkaz v zápatí", + "frequentlyAskedQuestions": "Často kladené otázky", + "gallery": "Galerie", + "geomodifier": "Geomodifikátor", + "getDirections": "Získejte pokyny", + "header": "Záhlaví", + "headerLink": "Odkaz na záhlaví", + "hours": "Hodiny", + "information": "Informace", + "insights": "Postřehy", + "learnMore": "Další informace", + "logo": "Logo", + "meetOurTeam": "Seznamte se s naším týmem", + "name": "Jméno", + "nearbyLocations": "Místa v okolí", + "phone": "Telefon", + "price": "123,00 Kč", + "productName": "Název produktu", + "professionalName": "Profesní jméno", + "professionalTitle": "Profesionální titul", + "readMore": "Číst více", + "services": "Služby", + "servicesOffered": "Nabízené služby", + "subtitle": "Titulky", + "text": "Text", + "upcomingEvents": "Nadcházející události", + "visitProfile": "Navštivte profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Obslužný obrázek {{number}}" diff --git a/packages/visual-editor/locales/components/da/visual-editor.json b/packages/visual-editor/locales/components/da/visual-editor.json index 0f67eb1c75..b7c537a762 100644 --- a/packages/visual-editor/locales/components/da/visual-editor.json +++ b/packages/visual-editor/locales/components/da/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Lukket", "closesAtTime": "Lukker kl. {{time}}", "closesAtTimeWeek": "Lukker kl. {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Om [[name]]", + "articleName": "Artikelnavn", + "associateAgent": "Associeret agent", + "bannerText": "Bannertekst", + "businessName": "Virksomhedens navn", + "button": "Knap", + "callToAction": "Opfordring til handling", + "category": "Kategori", + "contactMe": "Kontakt mig", + "credentials": "Akkreditiver", + "directoryRoot": "Biblioteksrod", + "eventImage": "Begivenhedsbillede", + "eventTitle": "Begivenhedens titel", + "featuredProducts": "Udvalgte produkter", + "featuredPromotion": "Fremhævet kampagne", + "featuredTestimonials": "Udvalgte testimonials", + "findALocation": "Find en placering", + "firstLast": "Første Sidste", + "followUs": "Følg os", + "footerLabel": "Footer label", + "footerLink": "Sidefodslink", + "frequentlyAskedQuestions": "Ofte stillede spørgsmål", + "gallery": "Galleri", + "geomodifier": "Geomodifikator", + "getDirections": "Få rutevejledning", + "header": "Overskrift", + "headerLink": "Overskriftslink", + "hours": "Timer", + "information": "Information", + "insights": "Indsigt", + "learnMore": "Lær mere", + "logo": "Logo", + "meetOurTeam": "Mød vores team", + "name": "Navn", + "nearbyLocations": "Steder i nærheden", + "phone": "Telefon", + "price": "123,00 DKK", + "productName": "Produktnavn", + "professionalName": "Professionelt navn", + "professionalTitle": "Professionel titel", + "readMore": "Læs mere", + "services": "Tjenester", + "servicesOffered": "Udbudte tjenester", + "subtitle": "Undertekst", + "text": "Tekst", + "upcomingEvents": "Kommende begivenheder", + "visitProfile": "Besøg profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Hjælpebillede {{number}}" diff --git a/packages/visual-editor/locales/components/de/visual-editor.json b/packages/visual-editor/locales/components/de/visual-editor.json index 2c78ba6595..ed17ebdbab 100644 --- a/packages/visual-editor/locales/components/de/visual-editor.json +++ b/packages/visual-editor/locales/components/de/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Geschlossen", "closesAtTime": "Schließt um {{time}} Uhr", "closesAtTimeWeek": "Schließt um {{time}} Uhr am {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Über [[name]]", + "articleName": "Artikelname", + "associateAgent": "Assoziierter Agent", + "bannerText": "Bannertext", + "businessName": "Firmenname", + "button": "Taste", + "callToAction": "Aufruf zum Handeln", + "category": "Kategorie", + "contactMe": "Kontaktieren Sie mich", + "credentials": "Anmeldeinformationen", + "directoryRoot": "Verzeichnisstamm", + "eventImage": "Ereignisbild", + "eventTitle": "Veranstaltungstitel", + "featuredProducts": "Ausgewählte Produkte", + "featuredPromotion": "Empfohlene Werbeaktion", + "featuredTestimonials": "Ausgewählte Erfahrungsberichte", + "findALocation": "Finden Sie einen Standort", + "firstLast": "Erster Letzter", + "followUs": "Folgen Sie uns", + "footerLabel": "Fußzeilenbeschriftung", + "footerLink": "Fußzeilen-Link", + "frequentlyAskedQuestions": "Häufig gestellte Fragen", + "gallery": "Galerie", + "geomodifier": "Geomodifikator", + "getDirections": "Wegbeschreibung abrufen", + "header": "Kopfzeile", + "headerLink": "Header-Link", + "hours": "Öffnungszeiten", + "information": "Information", + "insights": "Einblicke", + "learnMore": "Erfahren Sie mehr", + "logo": "Logo", + "meetOurTeam": "Lernen Sie unser Team kennen", + "name": "Name", + "nearbyLocations": "Standorte in der Nähe", + "phone": "Telefon", + "price": "123,00 €", + "productName": "Produktname", + "professionalName": "Berufsname", + "professionalTitle": "Berufsbezeichnung", + "readMore": "Mehr lesen", + "services": "Dienstleistungen", + "servicesOffered": "Angebotene Dienstleistungen", + "subtitle": "Untertitel", + "text": "Text", + "upcomingEvents": "Kommende Veranstaltungen", + "visitProfile": "Besuchen Sie das Profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Utility-Bilder {{number}}" diff --git a/packages/visual-editor/locales/components/en-GB/visual-editor.json b/packages/visual-editor/locales/components/en-GB/visual-editor.json index 59a46bf167..7a51d641ed 100644 --- a/packages/visual-editor/locales/components/en-GB/visual-editor.json +++ b/packages/visual-editor/locales/components/en-GB/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Closed", "closesAtTime": "Closes at {{time}}", "closesAtTimeWeek": "Closes at {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "About [[name]]", + "articleName": "Article Name", + "associateAgent": "Associate Agent", + "bannerText": "Banner Text", + "businessName": "Business Name", + "button": "Button", + "callToAction": "Call to Action", + "category": "Category", + "contactMe": "Contact Me", + "credentials": "Credentials", + "directoryRoot": "Directory Root", + "eventImage": "Event Image", + "eventTitle": "Event Title", + "featuredProducts": "Featured Products", + "featuredPromotion": "Featured Promotion", + "featuredTestimonials": "Featured Testimonials", + "findALocation": "Find a Location", + "firstLast": "First Last", + "followUs": "Follow Us", + "footerLabel": "Footer Label", + "footerLink": "Footer Link", + "frequentlyAskedQuestions": "Frequently Asked Questions", + "gallery": "Gallery", + "geomodifier": "Geomodifier", + "getDirections": "Get Directions", + "header": "Header", + "headerLink": "Header Link", + "hours": "Hours", + "information": "Information", + "insights": "Insights", + "learnMore": "Learn More", + "logo": "Logo", + "meetOurTeam": "Meet Our Team", + "name": "Name", + "nearbyLocations": "Nearby Locations", + "phone": "Phone", + "price": "$123.00", + "productName": "Product Name", + "professionalName": "Professional Name", + "professionalTitle": "Professional Title", + "readMore": "Read More", + "services": "Services", + "servicesOffered": "Services Offered", + "subtitle": "Subtitle", + "text": "Text", + "upcomingEvents": "Upcoming Events", + "visitProfile": "Visit Profile" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Utility Image {{number}}" diff --git a/packages/visual-editor/locales/components/en/visual-editor.json b/packages/visual-editor/locales/components/en/visual-editor.json index a721714c4f..e1cb7896bb 100644 --- a/packages/visual-editor/locales/components/en/visual-editor.json +++ b/packages/visual-editor/locales/components/en/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Closed", "closesAtTime": "Closes at {{time}}", "closesAtTimeWeek": "Closes at {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "About [[name]]", + "articleName": "Article Name", + "associateAgent": "Associate Agent", + "bannerText": "Banner Text", + "businessName": "Business Name", + "button": "Button", + "callToAction": "Call to Action", + "category": "Category", + "contactMe": "Contact Me", + "credentials": "Credentials", + "directoryRoot": "Directory Root", + "eventImage": "Event Image", + "eventTitle": "Event Title", + "featuredProducts": "Featured Products", + "featuredPromotion": "Featured Promotion", + "featuredTestimonials": "Featured Testimonials", + "findALocation": "Find a Location", + "firstLast": "First Last", + "followUs": "Follow Us", + "footerLabel": "Footer Label", + "footerLink": "Footer Link", + "frequentlyAskedQuestions": "Frequently Asked Questions", + "gallery": "Gallery", + "geomodifier": "Geomodifier", + "getDirections": "Get Directions", + "header": "Header", + "headerLink": "Header Link", + "hours": "Hours", + "information": "Information", + "insights": "Insights", + "learnMore": "Learn More", + "logo": "Logo", + "meetOurTeam": "Meet Our Team", + "name": "Name", + "nearbyLocations": "Nearby Locations", + "phone": "Phone", + "price": "$123.00", + "productName": "Product Name", + "professionalName": "Professional Name", + "professionalTitle": "Professional Title", + "readMore": "Read More", + "services": "Services", + "servicesOffered": "Services Offered", + "subtitle": "Subtitle", + "text": "Text", + "upcomingEvents": "Upcoming Events", + "visitProfile": "Visit Profile" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Utility Image {{number}}" diff --git a/packages/visual-editor/locales/components/es/visual-editor.json b/packages/visual-editor/locales/components/es/visual-editor.json index 813582ff10..a37519a735 100644 --- a/packages/visual-editor/locales/components/es/visual-editor.json +++ b/packages/visual-editor/locales/components/es/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Cerrado", "closesAtTime": "Cierra a las {{time}}", "closesAtTimeWeek": "Cierra a las {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Acerca de [[name]]", + "articleName": "Nombre del artículo", + "associateAgent": "Agente asociado", + "bannerText": "Texto del cartel", + "businessName": "Nombre comercial", + "button": "Botón", + "callToAction": "Llamado a la acción", + "category": "Categoría", + "contactMe": "Contáctame", + "credentials": "Cartas credenciales", + "directoryRoot": "Raíz del directorio", + "eventImage": "Imagen del evento", + "eventTitle": "Título del evento", + "featuredProducts": "Productos destacados", + "featuredPromotion": "Promoción destacada", + "featuredTestimonials": "Testimonios destacados", + "findALocation": "Encontrar una ubicación", + "firstLast": "Primero último", + "followUs": "Síganos", + "footerLabel": "Etiqueta de pie de página", + "footerLink": "Enlace de pie de página", + "frequentlyAskedQuestions": "Preguntas frecuentes", + "gallery": "Galería", + "geomodifier": "Geomodificador", + "getDirections": "Obtener direcciones", + "header": "Encabezamiento", + "headerLink": "Enlace de encabezado", + "hours": "Horas", + "information": "Información", + "insights": "Perspectivas", + "learnMore": "Más información", + "logo": "Logo", + "meetOurTeam": "Conozca a nuestro equipo", + "name": "Nombre", + "nearbyLocations": "Ubicaciones cercanas", + "phone": "Teléfono", + "price": "$123.00", + "productName": "Nombre del producto", + "professionalName": "Nombre profesional", + "professionalTitle": "Título profesional", + "readMore": "Leer más", + "services": "Servicios", + "servicesOffered": "Servicios ofrecidos", + "subtitle": "Subtitular", + "text": "Texto", + "upcomingEvents": "Próximos eventos", + "visitProfile": "Visitar perfil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Imagen de utilidad {{number}}" diff --git a/packages/visual-editor/locales/components/et/visual-editor.json b/packages/visual-editor/locales/components/et/visual-editor.json index 5e41d305a8..eb16596d0f 100644 --- a/packages/visual-editor/locales/components/et/visual-editor.json +++ b/packages/visual-editor/locales/components/et/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Suletud", "closesAtTime": "Suletakse {{time}}", "closesAtTimeWeek": "Suletakse kell {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Umbes [[name]]", + "articleName": "Artikli nimi", + "associateAgent": "Abiagent", + "bannerText": "Bänneri tekst", + "businessName": "Ettevõtte nimi", + "button": "Nupp", + "callToAction": "Üleskutse tegevusele", + "category": "Kategooria", + "contactMe": "Võtke minuga ühendust", + "credentials": "Mandaat", + "directoryRoot": "Kataloogi juur", + "eventImage": "Sündmuse pilt", + "eventTitle": "Sündmuse pealkiri", + "featuredProducts": "Esiletõstetud tooted", + "featuredPromotion": "Esiletõstetud reklaam", + "featuredTestimonials": "Esiletõstetud iseloomustused", + "findALocation": "Leidke asukoht", + "firstLast": "Esimene Viimane", + "followUs": "Jälgi meid", + "footerLabel": "Jaluse silt", + "footerLink": "Jaluse link", + "frequentlyAskedQuestions": "Korduma kippuvad küsimused", + "gallery": "Galerii", + "geomodifier": "Geomodifier", + "getDirections": "Hankige juhised", + "header": "Päis", + "headerLink": "Päise link", + "hours": "Tundi", + "information": "Teave", + "insights": "Ülevaated", + "learnMore": "Lisateave", + "logo": "Logo", + "meetOurTeam": "Tutvuge meie meeskonnaga", + "name": "Nimi", + "nearbyLocations": "Lähedal asuvad asukohad", + "phone": "Telefon", + "price": "123,00 dollarit", + "productName": "Toote nimi", + "professionalName": "Professionaalne nimi", + "professionalTitle": "Ametinimetus", + "readMore": "Loe edasi", + "services": "Teenused", + "servicesOffered": "Pakutavad teenused", + "subtitle": "Alapealkiri", + "text": "Tekst", + "upcomingEvents": "Eelseisvad sündmused", + "visitProfile": "Külastage profiili" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Kasulik pilt {{number}}" diff --git a/packages/visual-editor/locales/components/fi/visual-editor.json b/packages/visual-editor/locales/components/fi/visual-editor.json index 66bc8bd6ab..c41627ae93 100644 --- a/packages/visual-editor/locales/components/fi/visual-editor.json +++ b/packages/visual-editor/locales/components/fi/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Suljettu", "closesAtTime": "Suljetaan {{time}}", "closesAtTimeWeek": "Suljetaan klo {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Tietoja paikasta [[name]]", + "articleName": "Artikkelin nimi", + "associateAgent": "Apulaisagentti", + "bannerText": "Bannerin teksti", + "businessName": "Yrityksen nimi", + "button": "Painike", + "callToAction": "Toimintakehotus", + "category": "Luokka", + "contactMe": "Ota minuun yhteyttä", + "credentials": "Valtuustiedot", + "directoryRoot": "Hakemiston juuri", + "eventImage": "Tapahtuman kuva", + "eventTitle": "Tapahtuman otsikko", + "featuredProducts": "Suositellut tuotteet", + "featuredPromotion": "Suositeltu kampanja", + "featuredTestimonials": "Suositellut suosittelut", + "findALocation": "Etsi sijainti", + "firstLast": "Ensimmäinen Viimeinen", + "followUs": "Seuraa meitä", + "footerLabel": "Alatunnisteen etiketti", + "footerLink": "Alatunnisteen linkki", + "frequentlyAskedQuestions": "Usein kysytyt kysymykset", + "gallery": "Galleria", + "geomodifier": "Geomodifier", + "getDirections": "Hanki reittiohjeet", + "header": "Otsikko", + "headerLink": "Otsikkolinkki", + "hours": "Tuntia", + "information": "Tiedot", + "insights": "Näkemyksiä", + "learnMore": "Lisätietoja", + "logo": "Logo", + "meetOurTeam": "Tutustu tiimiimme", + "name": "Nimi", + "nearbyLocations": "Läheiset paikat", + "phone": "Puhelin", + "price": "123,00 dollaria", + "productName": "Tuotteen nimi", + "professionalName": "Ammattilainen nimi", + "professionalTitle": "Ammattinimike", + "readMore": "Lue lisää", + "services": "Palvelut", + "servicesOffered": "Tarjotut palvelut", + "subtitle": "Alaotsikko", + "text": "Teksti", + "upcomingEvents": "Tulevat tapahtumat", + "visitProfile": "Vieraile profiilissa" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Hyötykuva {{number}}" diff --git a/packages/visual-editor/locales/components/fr/visual-editor.json b/packages/visual-editor/locales/components/fr/visual-editor.json index 7317188588..1bb2488c77 100644 --- a/packages/visual-editor/locales/components/fr/visual-editor.json +++ b/packages/visual-editor/locales/components/fr/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Fermé", "closesAtTime": "Ferme à {{time}}", "closesAtTimeWeek": "Ferme à {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "À propos de [[name]]", + "articleName": "Nom de l'article", + "associateAgent": "Agent associé", + "bannerText": "Texte de la bannière", + "businessName": "Nom de l'entreprise", + "button": "Bouton", + "callToAction": "Appel à l'action", + "category": "Catégorie", + "contactMe": "Contactez-moi", + "credentials": "Informations d'identification", + "directoryRoot": "Racine du répertoire", + "eventImage": "Image de l'événement", + "eventTitle": "Titre de l'événement", + "featuredProducts": "Produits en vedette", + "featuredPromotion": "Promotion en vedette", + "featuredTestimonials": "Témoignages en vedette", + "findALocation": "Trouver un emplacement", + "firstLast": "Premier Dernier", + "followUs": "Suivez-nous", + "footerLabel": "Étiquette de pied de page", + "footerLink": "Lien de pied de page", + "frequentlyAskedQuestions": "Foire aux questions", + "gallery": "Galerie", + "geomodifier": "Géomodificateur", + "getDirections": "Obtenir un itinéraire", + "header": "En-tête", + "headerLink": "Lien d'en-tête", + "hours": "Heures", + "information": "Information", + "insights": "Connaissances", + "learnMore": "En savoir plus", + "logo": "Logo", + "meetOurTeam": "Rencontrez notre équipe", + "name": "Nom", + "nearbyLocations": "Emplacements à proximité", + "phone": "Téléphone", + "price": "123,00 €", + "productName": "Nom du produit", + "professionalName": "Nom professionnel", + "professionalTitle": "Titre professionnel", + "readMore": "En savoir plus", + "services": "Services", + "servicesOffered": "Services offerts", + "subtitle": "Sous-titre", + "text": "Texte", + "upcomingEvents": "Événements à venir", + "visitProfile": "Visiter le profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Image utilitaire {{number}}" diff --git a/packages/visual-editor/locales/components/hr/visual-editor.json b/packages/visual-editor/locales/components/hr/visual-editor.json index a6b10e8013..8fa476564a 100644 --- a/packages/visual-editor/locales/components/hr/visual-editor.json +++ b/packages/visual-editor/locales/components/hr/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Zatvoreno", "closesAtTime": "Zatvara se u {{time}}", "closesAtTimeWeek": "Zatvara se u {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "O [[name]]", + "articleName": "Naziv artikla", + "associateAgent": "Pridruženi agent", + "bannerText": "Tekst natpisa", + "businessName": "Naziv tvrtke", + "button": "Gumb", + "callToAction": "Poziv na akciju", + "category": "Kategorija", + "contactMe": "Kontaktirajte me", + "credentials": "Vjerodajnice", + "directoryRoot": "Korijen imenika", + "eventImage": "Slika događaja", + "eventTitle": "Naslov događaja", + "featuredProducts": "Istaknuti proizvodi", + "featuredPromotion": "Istaknuta promocija", + "featuredTestimonials": "Istaknuta svjedočanstva", + "findALocation": "Pronađite lokaciju", + "firstLast": "Prvi Zadnji", + "followUs": "Pratite nas", + "footerLabel": "Oznaka podnožja", + "footerLink": "Veza podnožja", + "frequentlyAskedQuestions": "Često postavljana pitanja", + "gallery": "Galerija", + "geomodifier": "Geomodifier", + "getDirections": "Dobiti upute", + "header": "Zaglavlje", + "headerLink": "Veza zaglavlja", + "hours": "Sati", + "information": "Informacija", + "insights": "Uvidi", + "learnMore": "Saznajte više", + "logo": "Logo", + "meetOurTeam": "Upoznajte naš tim", + "name": "Ime", + "nearbyLocations": "Lokacije u blizini", + "phone": "Telefon", + "price": "123 €", + "productName": "Naziv proizvoda", + "professionalName": "Profesionalni naziv", + "professionalTitle": "Stručno zvanje", + "readMore": "Pročitaj više", + "services": "Usluge", + "servicesOffered": "Ponuđene usluge", + "subtitle": "Titl", + "text": "Tekst", + "upcomingEvents": "Nadolazeći događaji", + "visitProfile": "Posjetite profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Uslužna slika {{number}}" diff --git a/packages/visual-editor/locales/components/hu/visual-editor.json b/packages/visual-editor/locales/components/hu/visual-editor.json index 205c317d93..77d71ea044 100644 --- a/packages/visual-editor/locales/components/hu/visual-editor.json +++ b/packages/visual-editor/locales/components/hu/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Zárt", "closesAtTime": "Zárás: {{time}}", "closesAtTimeWeek": "Zárás: {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Körülbelül [[name]]", + "articleName": "Cikk neve", + "associateAgent": "társult ügynök", + "bannerText": "Banner szöveg", + "businessName": "Vállalkozás neve", + "button": "Gomb", + "callToAction": "Felhívás cselekvésre", + "category": "Kategória", + "contactMe": "Lépjen kapcsolatba velem", + "credentials": "Hitelesítő adatok", + "directoryRoot": "Címtárgyökér", + "eventImage": "Esemény képe", + "eventTitle": "Esemény címe", + "featuredProducts": "Kiemelt termékek", + "featuredPromotion": "Kiemelt promóció", + "featuredTestimonials": "Kiemelt ajánlások", + "findALocation": "Hely keresése", + "firstLast": "Első Utolsó", + "followUs": "Kövess minket", + "footerLabel": "Lábléc címke", + "footerLink": "Lábléc hivatkozás", + "frequentlyAskedQuestions": "Gyakran Ismételt Kérdések", + "gallery": "Galéria", + "geomodifier": "Geomodifikátor", + "getDirections": "Útvonalterv", + "header": "Fejléc", + "headerLink": "Fejléc hivatkozás", + "hours": "Órák", + "information": "Információ", + "insights": "Betekintés", + "learnMore": "További információ", + "logo": "Logó", + "meetOurTeam": "Ismerje meg csapatunkat", + "name": "Név", + "nearbyLocations": "Közeli helyek", + "phone": "Telefon", + "price": "123 eura", + "productName": "Termék neve", + "professionalName": "Szakmai név", + "professionalTitle": "Szakmai cím", + "readMore": "Olvasson tovább", + "services": "Szolgáltatások", + "servicesOffered": "Ajánlott szolgáltatások", + "subtitle": "Felirat", + "text": "Szöveg", + "upcomingEvents": "Közelgő események", + "visitProfile": "Látogassa meg a Profilt" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Segédkép {{number}}" diff --git a/packages/visual-editor/locales/components/it/visual-editor.json b/packages/visual-editor/locales/components/it/visual-editor.json index 9483df31ae..d35cf1abc7 100644 --- a/packages/visual-editor/locales/components/it/visual-editor.json +++ b/packages/visual-editor/locales/components/it/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Chiuso", "closesAtTime": "Chiude alle {{time}}", "closesAtTimeWeek": "Chiude alle {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Informazioni su [[name]]", + "articleName": "Nome dell'articolo", + "associateAgent": "Agente associato", + "bannerText": "Testo della bandiera", + "businessName": "Nome dell'azienda", + "button": "Pulsante", + "callToAction": "Invito all'azione", + "category": "Categoria", + "contactMe": "Contattami", + "credentials": "Credenziali", + "directoryRoot": "Radice della directory", + "eventImage": "Immagine dell'evento", + "eventTitle": "Titolo dell'evento", + "featuredProducts": "Prodotti in evidenza", + "featuredPromotion": "Promozione in primo piano", + "featuredTestimonials": "Testimonianze in primo piano", + "findALocation": "Trova una posizione", + "firstLast": "Primo Ultimo", + "followUs": "Seguici", + "footerLabel": "Etichetta piè di pagina", + "footerLink": "Collegamento a piè di pagina", + "frequentlyAskedQuestions": "Domande frequenti", + "gallery": "Galleria", + "geomodifier": "Geomodificatore", + "getDirections": "Ottieni indicazioni stradali", + "header": "Intestazione", + "headerLink": "Collegamento dell'intestazione", + "hours": "Ore", + "information": "Informazioni", + "insights": "Approfondimenti", + "learnMore": "Saperne di più", + "logo": "Logo", + "meetOurTeam": "Incontra il nostro team", + "name": "Nome", + "nearbyLocations": "Località vicine", + "phone": "Telefono", + "price": "123,00 €", + "productName": "Nome del prodotto", + "professionalName": "Nome professionale", + "professionalTitle": "Titolo professionale", + "readMore": "Per saperne di più", + "services": "Servizi", + "servicesOffered": "Servizi offerti", + "subtitle": "Sottotitolo", + "text": "Testo", + "upcomingEvents": "Prossimi eventi", + "visitProfile": "Visita il profilo" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Immagine utilità {{number}}" diff --git a/packages/visual-editor/locales/components/ja/visual-editor.json b/packages/visual-editor/locales/components/ja/visual-editor.json index e6e36244e7..de5ecbfc0a 100644 --- a/packages/visual-editor/locales/components/ja/visual-editor.json +++ b/packages/visual-editor/locales/components/ja/visual-editor.json @@ -17,6 +17,55 @@ "closed": "閉店", "closesAtTime": "{{time}}に閉まります", "closesAtTimeWeek": "{{time}} {{dayOfWeek}} に閉店", + "componentDefaults": { + "aboutName": "[[name]] について", + "articleName": "記事名", + "associateAgent": "アソシエイトエージェント", + "bannerText": "バナーテキスト", + "businessName": "商号", + "button": "ボタン", + "callToAction": "行動喚起", + "category": "カテゴリ", + "contactMe": "連絡してください", + "credentials": "資格", + "directoryRoot": "ディレクトリルート", + "eventImage": "イベント画像", + "eventTitle": "イベントタイトル", + "featuredProducts": "注目の製品", + "featuredPromotion": "注目のプロモーション", + "featuredTestimonials": "注目のお客様の声", + "findALocation": "場所を探す", + "firstLast": "姓名", + "followUs": "フォローしてください", + "footerLabel": "フッターラベル", + "footerLink": "フッターリンク", + "frequentlyAskedQuestions": "よくある質問", + "gallery": "ギャラリー", + "geomodifier": "ジオモディファイアー", + "getDirections": "道順を調べる", + "header": "ヘッダー", + "headerLink": "ヘッダーリンク", + "hours": "営業時間", + "information": "情報", + "insights": "洞察", + "learnMore": "もっと詳しく知る", + "logo": "ロゴ", + "meetOurTeam": "私たちのチームのご紹介", + "name": "名前", + "nearbyLocations": "近くの場所", + "phone": "電話", + "price": "¥123", + "productName": "製品名", + "professionalName": "専門職名", + "professionalTitle": "専門職の称号", + "readMore": "続きを読む", + "services": "サービス", + "servicesOffered": "提供されるサービス", + "subtitle": "小見出し", + "text": "文章", + "upcomingEvents": "今後のイベント", + "visitProfile": "プロフィールにアクセス" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "ユーティリティ イメージ {{number}}" diff --git a/packages/visual-editor/locales/components/lt/visual-editor.json b/packages/visual-editor/locales/components/lt/visual-editor.json index 87934731ee..68c469a622 100644 --- a/packages/visual-editor/locales/components/lt/visual-editor.json +++ b/packages/visual-editor/locales/components/lt/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Uždarytas", "closesAtTime": "Uždaroma {{time}}", "closesAtTimeWeek": "Uždaroma {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Apie [[name]]", + "articleName": "Straipsnio pavadinimas", + "associateAgent": "Asocijuotasis agentas", + "bannerText": "Reklaminio skydelio tekstas", + "businessName": "Įmonės pavadinimas", + "button": "Mygtukas", + "callToAction": "Raginimas veikti", + "category": "Kategorija", + "contactMe": "Susisiekite su manimi", + "credentials": "Įgaliojimai", + "directoryRoot": "Katalogo šaknis", + "eventImage": "Įvykio vaizdas", + "eventTitle": "Renginio pavadinimas", + "featuredProducts": "Teminiai produktai", + "featuredPromotion": "Teminė reklama", + "featuredTestimonials": "Teminiai atsiliepimai", + "findALocation": "Raskite vietą", + "firstLast": "Pirmas Paskutinis", + "followUs": "Sekite mus", + "footerLabel": "Poraštės etiketė", + "footerLink": "Poraštės nuoroda", + "frequentlyAskedQuestions": "Dažnai užduodami klausimai", + "gallery": "Galerija", + "geomodifier": "Geomodifikatorius", + "getDirections": "Gaukite nuorodas", + "header": "Antraštė", + "headerLink": "Antraštės nuoroda", + "hours": "Valandos", + "information": "Informacija", + "insights": "Įžvalgos", + "learnMore": "Sužinokite daugiau", + "logo": "Logotipas", + "meetOurTeam": "Susipažinkite su mūsų komanda", + "name": "Vardas", + "nearbyLocations": "Netoliese esančios vietos", + "phone": "Telefonas", + "price": "123,00 USD", + "productName": "Produkto pavadinimas", + "professionalName": "Profesionalus vardas", + "professionalTitle": "Profesinis titulas", + "readMore": "Skaityti daugiau", + "services": "Paslaugos", + "servicesOffered": "Siūlomos paslaugos", + "subtitle": "Subtitrai", + "text": "Tekstas", + "upcomingEvents": "Būsimi įvykiai", + "visitProfile": "Apsilankykite profilyje" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Naudingumo vaizdas {{number}}" diff --git a/packages/visual-editor/locales/components/lv/visual-editor.json b/packages/visual-editor/locales/components/lv/visual-editor.json index e398df4955..d9724c04be 100644 --- a/packages/visual-editor/locales/components/lv/visual-editor.json +++ b/packages/visual-editor/locales/components/lv/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Slēgts", "closesAtTime": "Tiek slēgts plkst. {{time}}", "closesAtTimeWeek": "Tiek slēgts plkst. {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Aptuveni [[name]]", + "articleName": "Raksta nosaukums", + "associateAgent": "Asociētais aģents", + "bannerText": "Reklāmkaroga teksts", + "businessName": "Uzņēmuma nosaukums", + "button": "Poga", + "callToAction": "Aicinājums uz darbību", + "category": "Kategorija", + "contactMe": "Sazinieties ar mani", + "credentials": "Akreditācijas dati", + "directoryRoot": "Direktorija sakne", + "eventImage": "Pasākuma attēls", + "eventTitle": "Pasākuma nosaukums", + "featuredProducts": "Piedāvātie produkti", + "featuredPromotion": "Piedāvātā akcija", + "featuredTestimonials": "Piedāvātās atsauksmes", + "findALocation": "Atrodiet atrašanās vietu", + "firstLast": "Pirmais Pēdējais", + "followUs": "Sekojiet mums", + "footerLabel": "Kājenes etiķete", + "footerLink": "Kājenes saite", + "frequentlyAskedQuestions": "Bieži uzdotie jautājumi", + "gallery": "Galerija", + "geomodifier": "Ģeomodifikators", + "getDirections": "Saņemiet norādes", + "header": "Virsraksts", + "headerLink": "Galvenes saite", + "hours": "Stundas", + "information": "Informācija", + "insights": "Ieskats", + "learnMore": "Uzziniet vairāk", + "logo": "Logotips", + "meetOurTeam": "Iepazīstieties ar mūsu komandu", + "name": "Vārds", + "nearbyLocations": "Atrašanās vietas tuvumā", + "phone": "Tālrunis", + "price": "123,00 USD", + "productName": "Produkta nosaukums", + "professionalName": "Profesionālais vārds", + "professionalTitle": "Profesionālais tituls", + "readMore": "Lasīt vairāk", + "services": "Pakalpojumi", + "servicesOffered": "Piedāvātie pakalpojumi", + "subtitle": "Apakšvirsraksts", + "text": "Teksts", + "upcomingEvents": "Gaidāmie notikumi", + "visitProfile": "Apmeklējiet profilu" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Lietderības attēls {{number}}" diff --git a/packages/visual-editor/locales/components/nb/visual-editor.json b/packages/visual-editor/locales/components/nb/visual-editor.json index 06c19927df..97770b12a5 100644 --- a/packages/visual-editor/locales/components/nb/visual-editor.json +++ b/packages/visual-editor/locales/components/nb/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Lukket", "closesAtTime": "Stenger kl. {{time}}", "closesAtTimeWeek": "Stenger kl. {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Om [[name]]", + "articleName": "Artikkelnavn", + "associateAgent": "Tilknyttet agent", + "bannerText": "Bannertekst", + "businessName": "Bedriftsnavn", + "button": "Knapp", + "callToAction": "Ring til handling", + "category": "Kategori", + "contactMe": "Kontakt meg", + "credentials": "Legitimasjon", + "directoryRoot": "Katalogrot", + "eventImage": "Hendelsesbilde", + "eventTitle": "Begivenhetstittel", + "featuredProducts": "Utvalgte produkter", + "featuredPromotion": "Utvalgt kampanje", + "featuredTestimonials": "Utvalgte attester", + "findALocation": "Finn en plassering", + "firstLast": "Første Siste", + "followUs": "Følg oss", + "footerLabel": "Bunntekstetikett", + "footerLink": "Bunntekstlenke", + "frequentlyAskedQuestions": "Ofte stilte spørsmål", + "gallery": "Galleri", + "geomodifier": "Geomodifikator", + "getDirections": "Få veibeskrivelse", + "header": "Overskrift", + "headerLink": "Overskriftskobling", + "hours": "Timer", + "information": "Informasjon", + "insights": "Innsikt", + "learnMore": "Lær mer", + "logo": "Logo", + "meetOurTeam": "Møt teamet vårt", + "name": "Navn", + "nearbyLocations": "Steder i nærheten", + "phone": "Telefon", + "price": "$123,00", + "productName": "Produktnavn", + "professionalName": "Profesjonelt navn", + "professionalTitle": "Yrkestittel", + "readMore": "Les mer", + "services": "Tjenester", + "servicesOffered": "Tjenester som tilbys", + "subtitle": "Undertekst", + "text": "Tekst", + "upcomingEvents": "Kommende arrangementer", + "visitProfile": "Besøk profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Verktøybilde {{number}}" diff --git a/packages/visual-editor/locales/components/nl/visual-editor.json b/packages/visual-editor/locales/components/nl/visual-editor.json index 620810d79c..3eacc635c7 100644 --- a/packages/visual-editor/locales/components/nl/visual-editor.json +++ b/packages/visual-editor/locales/components/nl/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Gesloten", "closesAtTime": "Sluit om {{time}}", "closesAtTimeWeek": "Sluit om {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Over [[name]]", + "articleName": "Artikelnaam", + "associateAgent": "Associate-agent", + "bannerText": "Bannertekst", + "businessName": "Bedrijfsnaam", + "button": "Knop", + "callToAction": "Oproep tot actie", + "category": "Categorie", + "contactMe": "Neem contact met mij op", + "credentials": "Referenties", + "directoryRoot": "Directorywortel", + "eventImage": "Evenement afbeelding", + "eventTitle": "Titel van evenement", + "featuredProducts": "Uitgelichte producten", + "featuredPromotion": "Uitgelichte promotie", + "featuredTestimonials": "Uitgelichte getuigenissen", + "findALocation": "Zoek een locatie", + "firstLast": "Eerste Laatste", + "followUs": "Volg ons", + "footerLabel": "Voettekstlabel", + "footerLink": "Voettekstlink", + "frequentlyAskedQuestions": "Veelgestelde vragen", + "gallery": "Galerij", + "geomodifier": "Geomodificator", + "getDirections": "Routebeschrijving opvragen", + "header": "Koptekst", + "headerLink": "Koplink", + "hours": "Uren", + "information": "Informatie", + "insights": "Inzichten", + "learnMore": "Meer informatie", + "logo": "Logo", + "meetOurTeam": "Maak kennis met ons team", + "name": "Naam", + "nearbyLocations": "Locaties in de buurt", + "phone": "Telefoon", + "price": "123,00 €", + "productName": "Productnaam", + "professionalName": "Professionele naam", + "professionalTitle": "Professionele titel", + "readMore": "Lees meer", + "services": "Diensten", + "servicesOffered": "Aangeboden diensten", + "subtitle": "Ondertitel", + "text": "Tekst", + "upcomingEvents": "Aankomende evenementen", + "visitProfile": "Bezoek Profiel" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Hulpprogramma-afbeelding {{number}}" diff --git a/packages/visual-editor/locales/components/pl/visual-editor.json b/packages/visual-editor/locales/components/pl/visual-editor.json index 5b393f0aab..fff4a90003 100644 --- a/packages/visual-editor/locales/components/pl/visual-editor.json +++ b/packages/visual-editor/locales/components/pl/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Zamknięte", "closesAtTime": "Zamyka się o {{time}}", "closesAtTimeWeek": "Zamyka się o {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Informacje o [[name]]", + "articleName": "Nazwa artykułu", + "associateAgent": "Agent stowarzyszony", + "bannerText": "Tekst banera", + "businessName": "Nazwa firmy", + "button": "Przycisk", + "callToAction": "Wezwanie do działania", + "category": "Kategoria", + "contactMe": "Skontaktuj się ze mną", + "credentials": "Referencje", + "directoryRoot": "Katalog główny", + "eventImage": "Obraz wydarzenia", + "eventTitle": "Tytuł wydarzenia", + "featuredProducts": "Polecane produkty", + "featuredPromotion": "Wyróżniona promocja", + "featuredTestimonials": "Wyróżnione referencje", + "findALocation": "Znajdź lokalizację", + "firstLast": "Pierwszy Ostatni", + "followUs": "Śledź nas", + "footerLabel": "Etykieta stopki", + "footerLink": "Link do stopki", + "frequentlyAskedQuestions": "Często zadawane pytania", + "gallery": "Galeria", + "geomodifier": "Geomodyfikator", + "getDirections": "Uzyskaj wskazówki", + "header": "Nagłówek", + "headerLink": "Link do nagłówka", + "hours": "Godziny", + "information": "Informacja", + "insights": "Spostrzeżenia", + "learnMore": "Dowiedz się więcej", + "logo": "Logo", + "meetOurTeam": "Poznaj nasz zespół", + "name": "Nazwa", + "nearbyLocations": "Pobliskie lokalizacje", + "phone": "Telefon", + "price": "123,00 dolarów", + "productName": "Nazwa produktu", + "professionalName": "Nazwa zawodowa", + "professionalTitle": "Tytuł zawodowy", + "readMore": "Przeczytaj więcej", + "services": "Usługi", + "servicesOffered": "Oferowane usługi", + "subtitle": "Podtytuł", + "text": "Tekst", + "upcomingEvents": "Nadchodzące wydarzenia", + "visitProfile": "Odwiedź profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Obraz użytkowy {{number}}" diff --git a/packages/visual-editor/locales/components/pt/visual-editor.json b/packages/visual-editor/locales/components/pt/visual-editor.json index 64a4026c80..5de2a44d74 100644 --- a/packages/visual-editor/locales/components/pt/visual-editor.json +++ b/packages/visual-editor/locales/components/pt/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Fechado", "closesAtTime": "Fecha às {{time}}", "closesAtTimeWeek": "Fecha às {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Sobre [[name]]", + "articleName": "Nome do artigo", + "associateAgent": "Agente Associado", + "bannerText": "Texto do banner", + "businessName": "Nome comercial", + "button": "Botão", + "callToAction": "Chamada para ação", + "category": "Categoria", + "contactMe": "Entre em contato comigo", + "credentials": "Credenciais", + "directoryRoot": "Raiz do diretório", + "eventImage": "Imagem do Evento", + "eventTitle": "Título do Evento", + "featuredProducts": "Produtos em destaque", + "featuredPromotion": "Promoção em destaque", + "featuredTestimonials": "Depoimentos em destaque", + "findALocation": "Encontre um local", + "firstLast": "Primeiro Último", + "followUs": "Siga-nos", + "footerLabel": "Etiqueta de rodapé", + "footerLink": "Link do rodapé", + "frequentlyAskedQuestions": "Perguntas frequentes", + "gallery": "Galeria", + "geomodifier": "Geomodificador", + "getDirections": "Obter direções", + "header": "Cabeçalho", + "headerLink": "Link do cabeçalho", + "hours": "Horas", + "information": "Informação", + "insights": "Percepções", + "learnMore": "Saber mais", + "logo": "Logotipo", + "meetOurTeam": "Conheça nossa equipe", + "name": "Nome", + "nearbyLocations": "Locais próximos", + "phone": "Telefone", + "price": "R$ 123,00", + "productName": "Nome do produto", + "professionalName": "Nome Profissional", + "professionalTitle": "Título Profissional", + "readMore": "Leia mais", + "services": "Serviços", + "servicesOffered": "Serviços oferecidos", + "subtitle": "Legenda", + "text": "Texto", + "upcomingEvents": "Próximos eventos", + "visitProfile": "Visitar perfil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Imagem utilitária {{number}}" diff --git a/packages/visual-editor/locales/components/ro/visual-editor.json b/packages/visual-editor/locales/components/ro/visual-editor.json index faa3bad5b7..fd80ab3e7f 100644 --- a/packages/visual-editor/locales/components/ro/visual-editor.json +++ b/packages/visual-editor/locales/components/ro/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Închis", "closesAtTime": "Se închide la {{time}}", "closesAtTimeWeek": "Se închide la {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Despre [[name]]", + "articleName": "Nume articol", + "associateAgent": "Agent asociat", + "bannerText": "Text banner", + "businessName": "Numele companiei", + "button": "Buton", + "callToAction": "Apel la acțiune", + "category": "Categorie", + "contactMe": "Contactați-mă", + "credentials": "Acreditări", + "directoryRoot": "Rădăcină director", + "eventImage": "Imaginea evenimentului", + "eventTitle": "Titlul evenimentului", + "featuredProducts": "Produse recomandate", + "featuredPromotion": "Promoție recomandată", + "featuredTestimonials": "Mărturii recomandate", + "findALocation": "Găsiți o locație", + "firstLast": "Primul Ultimul", + "followUs": "Urmați-ne", + "footerLabel": "Etichetă de subsol", + "footerLink": "Link de subsol", + "frequentlyAskedQuestions": "Întrebări frecvente", + "gallery": "Galerie", + "geomodifier": "Geomodificator", + "getDirections": "Obțineți indicații", + "header": "Antet", + "headerLink": "Link antet", + "hours": "Ore", + "information": "Informaţii", + "insights": "Perspective", + "learnMore": "Află mai multe", + "logo": "Logo", + "meetOurTeam": "Faceți cunoștință cu echipa noastră", + "name": "Nume", + "nearbyLocations": "Locații din apropiere", + "phone": "Telefon", + "price": "123,00 USD", + "productName": "Numele produsului", + "professionalName": "Nume profesional", + "professionalTitle": "Titlul profesional", + "readMore": "Citiți mai mult", + "services": "Servicii", + "servicesOffered": "Servicii oferite", + "subtitle": "Subtitlu", + "text": "Text", + "upcomingEvents": "Evenimente viitoare", + "visitProfile": "Vizitați Profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Imagine utilitar {{number}}" diff --git a/packages/visual-editor/locales/components/sk/visual-editor.json b/packages/visual-editor/locales/components/sk/visual-editor.json index 5403778b96..5aedd82896 100644 --- a/packages/visual-editor/locales/components/sk/visual-editor.json +++ b/packages/visual-editor/locales/components/sk/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Zatvorené", "closesAtTime": "Zatvára sa o {{time}}", "closesAtTimeWeek": "Zatvára sa o {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "O [[name]]", + "articleName": "Názov článku", + "associateAgent": "Pridružený agent", + "bannerText": "Text bannera", + "businessName": "Obchodné meno", + "button": "Tlačidlo", + "callToAction": "Výzva na akciu", + "category": "Kategória", + "contactMe": "Kontaktujte ma", + "credentials": "Poverenia", + "directoryRoot": "Koreň adresára", + "eventImage": "Obrázok udalosti", + "eventTitle": "Názov udalosti", + "featuredProducts": "Odporúčané produkty", + "featuredPromotion": "Odporúčaná propagácia", + "featuredTestimonials": "Odporúčané referencie", + "findALocation": "Nájdite miesto", + "firstLast": "Prvý posledný", + "followUs": "Sledujte nás", + "footerLabel": "Štítok päty", + "footerLink": "Odkaz v päte", + "frequentlyAskedQuestions": "Často kladené otázky", + "gallery": "Galéria", + "geomodifier": "Geomodifikátor", + "getDirections": "Získajte trasu", + "header": "Hlavička", + "headerLink": "Odkaz na hlavičku", + "hours": "Hodiny", + "information": "Informácie", + "insights": "Insights", + "learnMore": "Zistite viac", + "logo": "Logo", + "meetOurTeam": "Spoznajte náš tím", + "name": "Meno", + "nearbyLocations": "Polohy v okolí", + "phone": "Telefón", + "price": "123,00 dolárov", + "productName": "Názov produktu", + "professionalName": "Profesionálne meno", + "professionalTitle": "Profesionálny titul", + "readMore": "Prečítajte si viac", + "services": "Služby", + "servicesOffered": "Ponúkané služby", + "subtitle": "Podnadpis", + "text": "Text", + "upcomingEvents": "Nadchádzajúce udalosti", + "visitProfile": "Navštívte profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Pomocný obrázok {{number}}" diff --git a/packages/visual-editor/locales/components/sv/visual-editor.json b/packages/visual-editor/locales/components/sv/visual-editor.json index 54e327b499..13cef5d59b 100644 --- a/packages/visual-editor/locales/components/sv/visual-editor.json +++ b/packages/visual-editor/locales/components/sv/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Stängd", "closesAtTime": "Stänger kl. {{time}}", "closesAtTimeWeek": "Stänger kl. {{time}} {{dayOfWeek}}", + "componentDefaults": { + "aboutName": "Om [[name]]", + "articleName": "Artikelnamn", + "associateAgent": "Associerad agent", + "bannerText": "Bannertext", + "businessName": "Företagsnamn", + "button": "Knapp", + "callToAction": "Uppmaning till handling", + "category": "Kategori", + "contactMe": "Kontakta mig", + "credentials": "Referenser", + "directoryRoot": "Katalogrot", + "eventImage": "Händelsebild", + "eventTitle": "Händelsens titel", + "featuredProducts": "Utvalda produkter", + "featuredPromotion": "Utvald kampanj", + "featuredTestimonials": "Utvalda vittnesmål", + "findALocation": "Hitta en plats", + "firstLast": "Första Sista", + "followUs": "Följ oss", + "footerLabel": "Sidfotsetikett", + "footerLink": "Sidfotslänk", + "frequentlyAskedQuestions": "Vanliga frågor", + "gallery": "Galleri", + "geomodifier": "Geomodifierare", + "getDirections": "Få vägbeskrivningar", + "header": "Rubrik", + "headerLink": "Rubriklänk", + "hours": "Timmar", + "information": "Information", + "insights": "Insikter", + "learnMore": "Läs mer", + "logo": "Logotyp", + "meetOurTeam": "Möt vårt team", + "name": "Namn", + "nearbyLocations": "Närliggande platser", + "phone": "Telefon", + "price": "123,00 SEK", + "productName": "Produktnamn", + "professionalName": "Professionellt namn", + "professionalTitle": "Yrkestitel", + "readMore": "Läs mer", + "services": "Tjänster", + "servicesOffered": "Tjänster som erbjuds", + "subtitle": "Underrubrik", + "text": "Text", + "upcomingEvents": "Kommande evenemang", + "visitProfile": "Besök profil" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Verktygsbild {{number}}" diff --git a/packages/visual-editor/locales/components/tr/visual-editor.json b/packages/visual-editor/locales/components/tr/visual-editor.json index 7b4702e0a5..b60b2a3a2e 100644 --- a/packages/visual-editor/locales/components/tr/visual-editor.json +++ b/packages/visual-editor/locales/components/tr/visual-editor.json @@ -17,6 +17,55 @@ "closed": "Kapalı", "closesAtTime": "{{time}} itibarıyla kapanıyor", "closesAtTimeWeek": "{{time}} {{dayOfWeek}} itibarıyla kapanıyor", + "componentDefaults": { + "aboutName": "[[name]] Hakkında", + "articleName": "Makale Adı", + "associateAgent": "Yardımcı Temsilci", + "bannerText": "Banner Metni", + "businessName": "İşletme Adı", + "button": "Düğme", + "callToAction": "Eylem Çağrısı", + "category": "Kategori", + "contactMe": "Bana Ulaşın", + "credentials": "Kimlik bilgileri", + "directoryRoot": "Dizin Kökü", + "eventImage": "Etkinlik Resmi", + "eventTitle": "Etkinlik Başlığı", + "featuredProducts": "Öne Çıkan Ürünler", + "featuredPromotion": "Öne Çıkan Promosyon", + "featuredTestimonials": "Öne Çıkan Görüşler", + "findALocation": "Konum Bul", + "firstLast": "İlk Son", + "followUs": "Bizi takip edin", + "footerLabel": "Alt Bilgi Etiketi", + "footerLink": "Alt Bilgi Bağlantısı", + "frequentlyAskedQuestions": "Sıkça Sorulan Sorular", + "gallery": "Galeri", + "geomodifier": "Geomodifier", + "getDirections": "Yol Tarifi Al", + "header": "Başlık", + "headerLink": "Başlık Bağlantısı", + "hours": "Saat", + "information": "Bilgi", + "insights": "Analizler", + "learnMore": "Daha fazla bilgi edin", + "logo": "Logo", + "meetOurTeam": "Ekibimizle Tanışın", + "name": "İsim", + "nearbyLocations": "Yakın Yerler", + "phone": "Telefon", + "price": "₺123", + "productName": "Ürün Adı", + "professionalName": "Meslek Adı", + "professionalTitle": "Mesleki Ünvan", + "readMore": "Devamını oku", + "services": "Hizmetler", + "servicesOffered": "Sunulan Hizmetler", + "subtitle": "Altyazı", + "text": "Metin", + "upcomingEvents": "Yaklaşan Etkinlikler", + "visitProfile": "Profili Ziyaret Et" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "Yardımcı Resim {{number}}" diff --git a/packages/visual-editor/locales/components/zh-TW/visual-editor.json b/packages/visual-editor/locales/components/zh-TW/visual-editor.json index 0acc63fcb5..2d22714b70 100644 --- a/packages/visual-editor/locales/components/zh-TW/visual-editor.json +++ b/packages/visual-editor/locales/components/zh-TW/visual-editor.json @@ -17,6 +17,55 @@ "closed": "關閉", "closesAtTime": "於 {{time}} 關閉", "closesAtTimeWeek": "於 {{time}} {{dayOfWeek}} 關閉", + "componentDefaults": { + "aboutName": "關於 [[name]]", + "articleName": "文章名稱", + "associateAgent": "助理代理", + "bannerText": "橫幅文字", + "businessName": "公司名稱", + "button": "按鈕", + "callToAction": "號召性用語", + "category": "類別", + "contactMe": "聯絡我", + "credentials": "證書", + "directoryRoot": "目錄根", + "eventImage": "活動圖片", + "eventTitle": "活動標題", + "featuredProducts": "特色產品", + "featuredPromotion": "特色促銷", + "featuredTestimonials": "特色推薦", + "findALocation": "尋找地點", + "firstLast": "名 姓", + "followUs": "跟著我們", + "footerLabel": "頁尾標籤", + "footerLink": "頁尾連結", + "frequentlyAskedQuestions": "常見問題解答", + "gallery": "畫廊", + "geomodifier": "地理修改器", + "getDirections": "獲取路線", + "header": "標頭", + "headerLink": "標題連結", + "hours": "時間", + "information": "資訊", + "insights": "見解", + "learnMore": "了解更多", + "logo": "標識", + "meetOurTeam": "認識我們的團隊", + "name": "姓名", + "nearbyLocations": "附近地點", + "phone": "電話", + "price": "NT$123.00", + "productName": "產品名稱", + "professionalName": "專業名稱", + "professionalTitle": "職稱", + "readMore": "閱讀更多", + "services": "服務", + "servicesOffered": "提供的服務", + "subtitle": "副標題", + "text": "文字", + "upcomingEvents": "即將舉行的活動", + "visitProfile": "訪問簡介" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "實用程序圖像 {{number}}" diff --git a/packages/visual-editor/locales/components/zh/visual-editor.json b/packages/visual-editor/locales/components/zh/visual-editor.json index a868152709..58a75fd672 100644 --- a/packages/visual-editor/locales/components/zh/visual-editor.json +++ b/packages/visual-editor/locales/components/zh/visual-editor.json @@ -17,6 +17,55 @@ "closed": "关闭", "closesAtTime": "于 {{time}} 关闭", "closesAtTimeWeek": "于 {{time}} {{dayOfWeek}} 关闭", + "componentDefaults": { + "aboutName": "关于 [[name]]", + "articleName": "文章名称", + "associateAgent": "助理代理", + "bannerText": "横幅文字", + "businessName": "公司名称", + "button": "按钮", + "callToAction": "号召性用语", + "category": "类别", + "contactMe": "联系我", + "credentials": "证书", + "directoryRoot": "目录根", + "eventImage": "活动图片", + "eventTitle": "活动标题", + "featuredProducts": "特色产品", + "featuredPromotion": "特色促销", + "featuredTestimonials": "特色推荐", + "findALocation": "寻找地点", + "firstLast": "第一个 最后一个", + "followUs": "关注我们", + "footerLabel": "页脚标签", + "footerLink": "页脚链接", + "frequentlyAskedQuestions": "常见问题解答", + "gallery": "画廊", + "geomodifier": "地理修改器", + "getDirections": "获取路线", + "header": "标头", + "headerLink": "标题链接", + "hours": "时间", + "information": "信息", + "insights": "见解", + "learnMore": "了解更多", + "logo": "标识", + "meetOurTeam": "认识我们的团队", + "name": "姓名", + "nearbyLocations": "附近地点", + "phone": "电话", + "price": "$123.00", + "productName": "产品名称", + "professionalName": "专业名称", + "professionalTitle": "职称", + "readMore": "阅读更多", + "services": "服务", + "servicesOffered": "提供的服务", + "subtitle": "副标题", + "text": "文本", + "upcomingEvents": "即将举行的活动", + "visitProfile": "访问简介" + }, "components": { "footerUtilityImagesSlot": { "defaultAlt": "实用程序图像 {{number}}" diff --git a/packages/visual-editor/locales/platform/cs/visual-editor.json b/packages/visual-editor/locales/platform/cs/visual-editor.json index 19fdcc0ee4..23961fb1b8 100644 --- a/packages/visual-editor/locales/platform/cs/visual-editor.json +++ b/packages/visual-editor/locales/platform/cs/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Vyberte video", "clearAll": "Vymazat vše", "close": "Blízko", - "closed": "ZAVŘENO", "closeHeaderMenu": "Nabídka Zavřít záhlaví", "closeMenu": "Zavřít menu", + "closed": "ZAVŘENO", "closesAtTime": "Zavírá v {{time}}", "closesAtTimeWeek": "Zavírá v {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Barva pozadí", "bannerText": "Text banneru", "businessLogo": "Obchodní logo", - "buttons": "Tlačítka", "buttonText": "Text tlačítka", + "buttons": "Tlačítka", "cardTitleColor": "Barva názvu karty", "cardVariant": "Varianta karty", "carouselImageCount": "Počet obrázků kolotoče", @@ -212,8 +212,8 @@ "emails": "E -maily", "enableLanguageSelector": "Povolit volič jazyků", "endDate": "Datum ukončení", - "expandedFooterLinks": "Rozšířené odkazy zápatí", "expandFooter": "Rozbalte zápatí", + "expandedFooterLinks": "Rozšířené odkazy zápatí", "facebookLink": "Facebook odkaz", "faqs": "Časté časté", "field": "Pole", @@ -247,13 +247,13 @@ "latitude": "Zeměpisná šířka", "limit": "Omezit", "link": "Odkaz", - "linkedInLink": "LinkedIn Link", "linkLabel": "Štítek odkazu", + "linkTarget": "Cíl odkazu", + "linkType": "Typ odkazu", + "linkedInLink": "LinkedIn Link", "links": "Odkazy", "linksPosition": "Pozice odkazů", "linksTooltip": "Pokud je výřez příliš úzký, odkazy se automaticky sbalí", - "linkTarget": "Cíl odkazu", - "linkType": "Typ odkazu", "listLength": "Délka seznamu", "liveVisibility": "Viditelné na živé stránce", "logoWidth": "Šířka loga", @@ -416,9 +416,9 @@ "showAverageReview": "Zobrazit průměrnou recenzi", "showBrow": "Zobrazit text obočí", "showBusinessName": "Zobrazit obchodní název", + "showCTA": "Zobrazit výzvu k akci", "showCategory": "Zobrazit kategorii", "showCredentials": "Zobrazit přihlašovací údaje", - "showCTA": "Zobrazit výzvu k akci", "showCurrentStatus": "Zobrazit aktuální stav", "showDate": "Zobrazit datum", "showDateTime": "Zobrazit datum a čas", @@ -472,13 +472,13 @@ }, "filter": "Filtr", "findALocation": "Najděte polohu", + "fontSize": "Velikost písma", + "fontSizeDefaultLabel": "Výchozí", "fonts": { "choose": "Vyberte písmo", "notFound": "Žádná písmena nenalezena.", "search": "Hledat písma ..." }, - "fontSize": "Velikost písma", - "fontSizeDefaultLabel": "Výchozí", "friday": "pátek", "getDirections": "Získejte pokyny", "heading": "Záhlaví", @@ -493,9 +493,9 @@ "informationSection": "Sekce informací", "inheritedDataMsg": "Data jsou zděděna z nadřazené části.", "insight": "Vhled", - "kilometer_one": "kilometr", "kilometer_few": "kilometry", "kilometer_many": "kilometrů", + "kilometer_one": "kilometr", "kilometer_other": "kilometrů", "knowledgeGraphContent": "Obsah grafu znalostí", "link": "odkaz", @@ -510,26 +510,26 @@ "loadingMap": "Načítání mapy ...", "loadingNearbyLocations": "Načítání nedalekých míst ...", "loadingVE": "Načítání vizuálního editoru ...", - "locationsNear_one": "{{count}} umístění poblíž „{{name}}“", + "locationWithCount_few": "{{count}} míst", + "locationWithCount_many": "{{count}} míst", + "locationWithCount_one": "{{count}} umístění", + "locationWithCount_other": "{{count}} umístění", "locationsNear_few": "{{count}} míst poblíž „{{name}}“", "locationsNear_many": "{{count}} míst poblíž „{{name}}“", + "locationsNear_one": "{{count}} umístění poblíž „{{name}}“", "locationsNear_other": "{{count}} míst poblíž „{{name}}“", - "locationsWithinDistanceOf_one": "{{count}} místo v rámci {{distance}} {{unit}} od „{{name}}“", "locationsWithinDistanceOf_few": "{{count}} míst v rámci {{distance}} {{unit}} od „{{name}}“", "locationsWithinDistanceOf_many": "{{count}} míst v rámci {{distance}} {{unit}} od „{{name}}“", + "locationsWithinDistanceOf_one": "{{count}} místo v rámci {{distance}} {{unit}} od „{{name}}“", "locationsWithinDistanceOf_other": "{{count}} míst ve vzdálenosti {{distance}} {{unit}} od „{{name}}“", - "locationWithCount_one": "{{count}} umístění", - "locationWithCount_few": "{{count}} míst", - "locationWithCount_many": "{{count}} míst", - "locationWithCount_other": "{{count}} umístění", "logo": "Logo", "map": "Mapa", "mapRequiresOptIn": "Tuto mapu lze zobrazit pouze v případě, že jsou povoleny soubory cookie", "maxWidthTip": "Pro optimální zarovnání obsahu doporučujeme nastavit šířku záhlaví a zápatí tak, aby odpovídala nebo překročila mřížku obsahu stránky.", "metaTitleMissingLocales": "Metanázev chybí pro národní prostředí: {{locales}}", - "mile_one": "míle", "mile_few": "míle", "mile_many": "mil", + "mile_one": "míle", "mile_other": "mil", "missingHtmlWidget": "Přidejte HTML pro zobrazení komponenty", "monday": "pondělí", @@ -692,9 +692,9 @@ }, "thursday": "čtvrtek", "toPublishHeading": "Chcete-li publikovat, vyřešte následující chyby:", - "totalReviews_one": "{{count}} recenze", "totalReviews_few": "{{count}} recenzí", "totalReviews_many": "{{count}} recenzí", + "totalReviews_one": "{{count}} recenze", "totalReviews_other": "{{count}} recenzí", "tuesday": "úterý", "undo": "Undo", diff --git a/packages/visual-editor/locales/platform/da/visual-editor.json b/packages/visual-editor/locales/platform/da/visual-editor.json index 1ae49df703..340144c72d 100644 --- a/packages/visual-editor/locales/platform/da/visual-editor.json +++ b/packages/visual-editor/locales/platform/da/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Vælg video", "clearAll": "Ryd alle", "close": "Tæt", - "closed": "Lukket", "closeHeaderMenu": "Luk header -menu", "closeMenu": "Luk menu", + "closed": "Lukket", "closesAtTime": "Lukker kl. {{time}}", "closesAtTimeWeek": "Lukker kl. {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Baggrundsfarve", "bannerText": "Bannertekst", "businessLogo": "Forretningslogo", - "buttons": "Knapper", "buttonText": "Knaptekst", + "buttons": "Knapper", "cardTitleColor": "Kortets titelfarve", "cardVariant": "Kortvariant", "carouselImageCount": "Antal karruselbilleder", @@ -212,8 +212,8 @@ "emails": "E -mails", "enableLanguageSelector": "Aktivér sprogvælger", "endDate": "Slutdato", - "expandedFooterLinks": "Udvidede sidefodslink", "expandFooter": "Udvid sidefod", + "expandedFooterLinks": "Udvidede sidefodslink", "facebookLink": "Facebook -link", "faqs": "FAQS", "field": "Felt", @@ -247,13 +247,13 @@ "latitude": "Breddegrad", "limit": "Begrænse", "link": "Forbindelse", - "linkedInLink": "LinkedIn -link", "linkLabel": "Link-etiket", + "linkTarget": "Linkmål", + "linkType": "Linktype", + "linkedInLink": "LinkedIn -link", "links": "Links", "linksPosition": "Links position", "linksTooltip": "Links vil automatisk kollapse, hvis visningsporten er for smal", - "linkTarget": "Linkmål", - "linkType": "Linktype", "listLength": "Liste længde", "liveVisibility": "Synlig på live side", "logoWidth": "Logobredde", @@ -416,9 +416,9 @@ "showAverageReview": "Vis gennemsnitlig gennemgang", "showBrow": "Vis bryntekst", "showBusinessName": "Vis virksomhedsnavn", + "showCTA": "Vis CTA", "showCategory": "Vis kategori", "showCredentials": "Vis legitimationsoplysninger", - "showCTA": "Vis CTA", "showCurrentStatus": "Vis den aktuelle status", "showDate": "Vis dato", "showDateTime": "Vis dato og tid", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Find en placering", + "fontSize": "Skrifttypestørrelse", + "fontSizeDefaultLabel": "Misligholdelse", "fonts": { "choose": "Vælg en skrifttype", "notFound": "Ingen skrifttyper fundet.", "search": "Søg skrifttyper ..." }, - "fontSize": "Skrifttypestørrelse", - "fontSizeDefaultLabel": "Misligholdelse", "friday": "fredag", "getDirections": "Få rutevejledning", "heading": "Overskrift", @@ -508,12 +508,12 @@ "loadingMap": "Indlæsningskort ...", "loadingNearbyLocations": "Indlæser placeringer i nærheden ...", "loadingVE": "Indlæser visuel redaktør ...", + "locationWithCount_one": "{{count}} placering", + "locationWithCount_other": "{{count}} placeringer", "locationsNear_one": "{{count}} placering i nærheden af ​​\"{{name}}\"", "locationsNear_other": "{{count}} steder i nærheden af ​​\"{{name}}\"", "locationsWithinDistanceOf_one": "{{count}} placering inden for {{distance}} {{unit}} fra \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} steder inden for {{distance}} {{unit}} fra \"{{name}}\"", - "locationWithCount_one": "{{count}} placering", - "locationWithCount_other": "{{count}} placeringer", "logo": "Logo", "map": "Kort", "mapRequiresOptIn": "Dette kort kan kun vises, hvis cookies er aktiveret", diff --git a/packages/visual-editor/locales/platform/de/visual-editor.json b/packages/visual-editor/locales/platform/de/visual-editor.json index 4c7edcaeee..9de3aea097 100644 --- a/packages/visual-editor/locales/platform/de/visual-editor.json +++ b/packages/visual-editor/locales/platform/de/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Video auswählen", "clearAll": "Alles löschen", "close": "Schließen", - "closed": "Geschlossen", "closeHeaderMenu": "Headermenü schließen", "closeMenu": "Menü schließen", + "closed": "Geschlossen", "closesAtTime": "Schließt um {{time}} Uhr", "closesAtTimeWeek": "Schließt um {{time}} Uhr am {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Hintergrundfarbe", "bannerText": "Banner-Text", "businessLogo": "Geschäftslogo", - "buttons": "Buttons", "buttonText": "Schaltflächentext", + "buttons": "Buttons", "cardTitleColor": "Farbe des Kartentitels", "cardVariant": "Karten-Variante", "carouselImageCount": "Anzahl der Karussell-Bilder", @@ -212,8 +212,8 @@ "emails": "E-Mails", "enableLanguageSelector": "Sprachauswahl aktivieren", "endDate": "Enddatum", - "expandedFooterLinks": "Erweiterte Footer-Links", "expandFooter": "Footer erweitern", + "expandedFooterLinks": "Erweiterte Footer-Links", "facebookLink": "Facebook-Link", "faqs": "FAQs", "field": "Feld", @@ -247,13 +247,13 @@ "latitude": "Breitengrad", "limit": "Limit", "link": "Link", - "linkedInLink": "LinkedIn-Link", "linkLabel": "Link-Label", + "linkTarget": "Link-Ziel", + "linkType": "Link-Typ", + "linkedInLink": "LinkedIn-Link", "links": "Links", "linksPosition": "Link-Position", "linksTooltip": "Links werden automatisch eingeklappt, wenn das Viewport zu schmal ist", - "linkTarget": "Link-Ziel", - "linkType": "Link-Typ", "listLength": "Listenlänge", "liveVisibility": "Auf Live-Seite anzeigen", "logoWidth": "Logobreite", @@ -416,9 +416,9 @@ "showAverageReview": "Durchschnittsbewertung anzeigen", "showBrow": "Eyebrow-Text anzeigen", "showBusinessName": "Unternehmensnamen anzeigen", + "showCTA": "CTA anzeigen", "showCategory": "Kategorie anzeigen", "showCredentials": "Qualifikationen anzeigen", - "showCTA": "CTA anzeigen", "showCurrentStatus": "Aktuellen Status anzeigen", "showDate": "Datum anzeigen", "showDateTime": "Datum und Uhrzeit anzeigen", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Finde einen Standort", + "fontSize": "Schriftgröße", + "fontSizeDefaultLabel": "Standard", "fonts": { "choose": "Schriftart auswählen", "notFound": "Keine Schriftarten gefunden.", "search": "Schriftarten suchen ..." }, - "fontSize": "Schriftgröße", - "fontSizeDefaultLabel": "Standard", "friday": "Freitag", "getDirections": "Route planen", "heading": "Überschrift", @@ -508,12 +508,12 @@ "loadingMap": "Karte wird geladen...", "loadingNearbyLocations": "Standorte in der Nähe werden geladen...", "loadingVE": "Visual Editor wird geladen...", + "locationWithCount_one": "{{count}} Standort", + "locationWithCount_other": "{{count}} Standorte", "locationsNear_one": "{{count}} Standort in der Nähe von „{{name}}“", "locationsNear_other": "{{count}} Standorte in der Nähe von „{{name}}“", "locationsWithinDistanceOf_one": "{{count}} Standort im Umkreis von {{distance}} {{unit}} von „{{name}}“", "locationsWithinDistanceOf_other": "{{count}} Standorte im Umkreis von {{distance}} {{unit}} von „{{name}}“", - "locationWithCount_one": "{{count}} Standort", - "locationWithCount_other": "{{count}} Standorte", "logo": "Logo", "map": "Karte", "mapRequiresOptIn": "Diese Karte kann nur angezeigt werden, wenn Cookies aktiviert sind", diff --git a/packages/visual-editor/locales/platform/en-GB/visual-editor.json b/packages/visual-editor/locales/platform/en-GB/visual-editor.json index 7df5f7fe79..fd0181feee 100644 --- a/packages/visual-editor/locales/platform/en-GB/visual-editor.json +++ b/packages/visual-editor/locales/platform/en-GB/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Choose Video", "clearAll": "Clear All", "close": "Close", - "closed": "Closed", "closeHeaderMenu": "Close header menu", "closeMenu": "Close menu", + "closed": "Closed", "closesAtTime": "Closes at {{time}}", "closesAtTimeWeek": "Closes at {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Background Color", "bannerText": "Banner Text", "businessLogo": "Business Logo", - "buttons": "Buttons", "buttonText": "Button Text", + "buttons": "Buttons", "cardTitleColor": "Card Title Color", "cardVariant": "Card Variant", "carouselImageCount": "Carousel Image Count", @@ -212,8 +212,8 @@ "emails": "Emails", "enableLanguageSelector": "Enable Language Selector", "endDate": "End Date", - "expandedFooterLinks": "Expanded Footer Links", "expandFooter": "Expand Footer", + "expandedFooterLinks": "Expanded Footer Links", "facebookLink": "Facebook Link", "faqs": "FAQs", "field": "Field", @@ -247,13 +247,13 @@ "latitude": "Latitude", "limit": "Limit", "link": "Link", - "linkedInLink": "LinkedIn Link", "linkLabel": "Link Label", + "linkTarget": "Link Target", + "linkType": "Link Type", + "linkedInLink": "LinkedIn Link", "links": "Links", "linksPosition": "Links Position", "linksTooltip": "Links will automatically collapse if the viewport is too narrow", - "linkTarget": "Link Target", - "linkType": "Link Type", "listLength": "List Length", "liveVisibility": "Visible on Live Page", "logoWidth": "Logo Width", @@ -416,9 +416,9 @@ "showAverageReview": "Show Average Review", "showBrow": "Show Brow Text", "showBusinessName": "Show Business Name", + "showCTA": "Show CTA", "showCategory": "Show Category", "showCredentials": "Show Credentials", - "showCTA": "Show CTA", "showCurrentStatus": "Show Current Status", "showDate": "Show Date", "showDateTime": "Show Date & Time", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Find a Location", + "fontSize": "Font Size", + "fontSizeDefaultLabel": "Default", "fonts": { "choose": "Choose a font", "notFound": "No fonts found.", "search": "Search fonts..." }, - "fontSize": "Font Size", - "fontSizeDefaultLabel": "Default", "friday": "Friday", "getDirections": "Get Directions", "heading": "Heading", @@ -508,12 +508,12 @@ "loadingMap": "Loading Map...", "loadingNearbyLocations": "Loading nearby locations...", "loadingVE": "Loading Visual Editor...", + "locationWithCount_one": "{{count}} location", + "locationWithCount_other": "{{count}} locations", "locationsNear_one": "{{count}} location near \"{{name}}\"", "locationsNear_other": "{{count}} locations near \"{{name}}\"", "locationsWithinDistanceOf_one": "{{count}} location within {{distance}} {{unit}} of \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} locations within {{distance}} {{unit}} of \"{{name}}\"", - "locationWithCount_one": "{{count}} location", - "locationWithCount_other": "{{count}} locations", "logo": "Logo", "map": "Map", "mapRequiresOptIn": "This map can only be displayed if cookies are enabled", diff --git a/packages/visual-editor/locales/platform/es/visual-editor.json b/packages/visual-editor/locales/platform/es/visual-editor.json index e3f2d4b078..e01ae4facf 100644 --- a/packages/visual-editor/locales/platform/es/visual-editor.json +++ b/packages/visual-editor/locales/platform/es/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Elige video", "clearAll": "Borrar todo", "close": "Cerca", - "closed": "Cerrado", "closeHeaderMenu": "Menú de encabezado cerrar", "closeMenu": "Menú cerrado", + "closed": "Cerrado", "closesAtTime": "Cierra a las {{time}}", "closesAtTimeWeek": "Cierra a las {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Color de fondo", "bannerText": "Texto banner", "businessLogo": "Logotipo comercial", - "buttons": "Botones", "buttonText": "Texto del botón", + "buttons": "Botones", "cardTitleColor": "Color del título de la tarjeta", "cardVariant": "Variante de tarjeta", "carouselImageCount": "Recuento de imágenes del carrusel", @@ -212,8 +212,8 @@ "emails": "Correos electrónicos", "enableLanguageSelector": "Habilitar el selector de idiomas", "endDate": "Fecha de finalización", - "expandedFooterLinks": "Enlaces de pie de página expandidos", "expandFooter": "Expandir el pie de página", + "expandedFooterLinks": "Enlaces de pie de página expandidos", "facebookLink": "Enlace de Facebook", "faqs": "Preguntas frecuentes", "field": "Campo", @@ -247,13 +247,13 @@ "latitude": "Latitud", "limit": "Límite", "link": "Enlace", - "linkedInLink": "LinkedIn Link", "linkLabel": "Etiqueta de enlace", + "linkTarget": "Destino del enlace", + "linkType": "Tipo de enlace", + "linkedInLink": "LinkedIn Link", "links": "Campo de golf", "linksPosition": "Posición de los enlaces", "linksTooltip": "Los enlaces se colapsarán automáticamente si la ventana gráfica es demasiado estrecha", - "linkTarget": "Destino del enlace", - "linkType": "Tipo de enlace", "listLength": "Longitud de la lista", "liveVisibility": "Visible en la página en vivo", "logoWidth": "Ancho del logotipo", @@ -416,9 +416,9 @@ "showAverageReview": "Mostrar revisión promedio", "showBrow": "Mostrar texto de ceja", "showBusinessName": "Mostrar nombre comercial", + "showCTA": "Mostrar llamada a la acción", "showCategory": "Mostrar categoría", "showCredentials": "Mostrar credenciales", - "showCTA": "Mostrar llamada a la acción", "showCurrentStatus": "Mostrar el estado actual", "showDate": "Mostrar fecha", "showDateTime": "Mostrar fecha y hora", @@ -472,13 +472,13 @@ }, "filter": "Filtrar", "findALocation": "Encuentra una ubicación", + "fontSize": "Tamaño de fuente", + "fontSizeDefaultLabel": "Por defecto", "fonts": { "choose": "Elija una fuente", "notFound": "No se encontraron fuentes.", "search": "Fuentes de búsqueda ..." }, - "fontSize": "Tamaño de fuente", - "fontSizeDefaultLabel": "Por defecto", "friday": "Viernes", "getDirections": "Obtener instrucciones", "heading": "Título", @@ -493,8 +493,8 @@ "informationSection": "Sección de información", "inheritedDataMsg": "Los datos se heredan de la sección principal.", "insight": "Conocimiento", - "kilometer_one": "kilómetro", "kilometer_many": "kilómetros", + "kilometer_one": "kilómetro", "kilometer_other": "kilómetros", "knowledgeGraphContent": "Contenido del gráfico de conocimiento", "link": "enlace", @@ -509,22 +509,22 @@ "loadingMap": "Mapa de carga ...", "loadingNearbyLocations": "Cargando ubicaciones cercanas ...", "loadingVE": "Cargando editor visual ...", - "locationsNear_one": "{{count}} ubicación cerca de \"{{name}}\"", + "locationWithCount_many": "{{count}} ubicaciones", + "locationWithCount_one": "{{count}} ubicación", + "locationWithCount_other": "{{count}} ubicaciones", "locationsNear_many": "{{count}} ubicaciones cerca de \"{{name}}\"", + "locationsNear_one": "{{count}} ubicación cerca de \"{{name}}\"", "locationsNear_other": "{{count}} ubicaciones cerca de \"{{name}}\"", - "locationsWithinDistanceOf_one": "{{count}} ubicación dentro de {{distance}} {{unit}} de \"{{name}}\"", "locationsWithinDistanceOf_many": "{{count}} ubicaciones dentro de {{distance}} {{unit}} de \"{{name}}\"", + "locationsWithinDistanceOf_one": "{{count}} ubicación dentro de {{distance}} {{unit}} de \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} ubicaciones dentro de {{distance}} {{unit}} de \"{{name}}\"", - "locationWithCount_one": "{{count}} ubicación", - "locationWithCount_many": "{{count}} ubicaciones", - "locationWithCount_other": "{{count}} ubicaciones", "logo": "Logo", "map": "Mapa", "mapRequiresOptIn": "Este mapa sólo se puede mostrar si las cookies están habilitadas", "maxWidthTip": "Para una alineación de contenido óptimo, recomendamos establecer el ancho del encabezado y el pie de página para que coincidan o excedan la cuadrícula de contenido de la página.", "metaTitleMissingLocales": "Falta el metatítulo para las configuraciones regionales: {{locales}}", - "mile_one": "milla", "mile_many": "millas", + "mile_one": "milla", "mile_other": "millas", "missingHtmlWidget": "Agregue HTML para ver el componente", "monday": "Lunes", @@ -687,8 +687,8 @@ }, "thursday": "Jueves", "toPublishHeading": "Para publicar, resuelva los siguientes errores:", - "totalReviews_one": "{{count}} reseña", "totalReviews_many": "{{count}} opiniones", + "totalReviews_one": "{{count}} reseña", "totalReviews_other": "{{count}} reseñas", "tuesday": "Martes", "undo": "Deshacer", diff --git a/packages/visual-editor/locales/platform/et/visual-editor.json b/packages/visual-editor/locales/platform/et/visual-editor.json index a0144ff23e..49824de7ff 100644 --- a/packages/visual-editor/locales/platform/et/visual-editor.json +++ b/packages/visual-editor/locales/platform/et/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Valige video", "clearAll": "Kustuta kõik", "close": "Sulgur", - "closed": "Suletud", "closeHeaderMenu": "Sulgemenüü", "closeMenu": "Sulgemenüü", + "closed": "Suletud", "closesAtTime": "Suletakse {{time}}", "closesAtTimeWeek": "Suletakse kell {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Taustvärv", "bannerText": "Ribareklaam", "businessLogo": "Ärilogo", - "buttons": "Nupud", "buttonText": "Nupu tekst", + "buttons": "Nupud", "cardTitleColor": "Kaardi pealkirja värv", "cardVariant": "Kaardi variant", "carouselImageCount": "Karusselli piltide arv", @@ -212,8 +212,8 @@ "emails": "E -kirjad", "enableLanguageSelector": "Luba keelevalija", "endDate": "Lõppkuupäev", - "expandedFooterLinks": "Laiendatud jaluse lingid", "expandFooter": "Laiendage jalus", + "expandedFooterLinks": "Laiendatud jaluse lingid", "facebookLink": "Facebooki link", "faqs": "KKK -d", "field": "Väli", @@ -247,13 +247,13 @@ "latitude": "Laius", "limit": "Piiranguid", "link": "Link", - "linkedInLink": "LinkedIn Link", "linkLabel": "Lingi silt", + "linkTarget": "Lingi sihtmärk", + "linkType": "Lingi tüüp", + "linkedInLink": "LinkedIn Link", "links": "Lingid", "linksPosition": "Linkide asukoht", "linksTooltip": "Lingid ahenevad automaatselt, kui vaateava on liiga kitsas", - "linkTarget": "Lingi sihtmärk", - "linkType": "Lingi tüüp", "listLength": "Nimekirja pikkus", "liveVisibility": "Nähtav live -lehel", "logoWidth": "Logo laius", @@ -416,9 +416,9 @@ "showAverageReview": "Näita keskmist arvustust", "showBrow": "Näita kulmuteksti", "showBusinessName": "Näita ettevõtte nime", + "showCTA": "Kuva CTA", "showCategory": "Näita kategooriat", "showCredentials": "Näita mandaati", - "showCTA": "Kuva CTA", "showCurrentStatus": "Kuva praegune olek", "showDate": "Näita kuupäev", "showDateTime": "Kuva kuupäev ja kellaaeg", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Leidke asukoht", + "fontSize": "Fondi suurus", + "fontSizeDefaultLabel": "Täitmata jätmine", "fonts": { "choose": "Valige font", "notFound": "Ühtegi fondi ei leitud.", "search": "Otsingufondid ..." }, - "fontSize": "Fondi suurus", - "fontSizeDefaultLabel": "Täitmata jätmine", "friday": "Reede", "getDirections": "Hankige juhiseid", "heading": "Pealkiri", @@ -508,12 +508,12 @@ "loadingMap": "Kaardi laadimine ...", "loadingNearbyLocations": "Lähedal asuvate asukohtade laadimine ...", "loadingVE": "Visuaalse toimetaja laadimine ...", + "locationWithCount_one": "{{count}} asukoht", + "locationWithCount_other": "{{count}} asukohad", "locationsNear_one": "{{count}} asukoht \"{{name}}\" lähedal", "locationsNear_other": "{{count}} asukohta \"{{name}}\" läheduses", "locationsWithinDistanceOf_one": "{{count}} asukoht {{distance}} {{unit}} raadiuses asukohast \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} asukohta asukohast \"{{name}}\" {{distance}} {{unit}} raadiuses", - "locationWithCount_one": "{{count}} asukoht", - "locationWithCount_other": "{{count}} asukohad", "logo": "Logo", "map": "Kaart", "mapRequiresOptIn": "Seda kaarti saab kuvada ainult siis, kui küpsised on lubatud", diff --git a/packages/visual-editor/locales/platform/fi/visual-editor.json b/packages/visual-editor/locales/platform/fi/visual-editor.json index e4720b3912..df8e29ff7e 100644 --- a/packages/visual-editor/locales/platform/fi/visual-editor.json +++ b/packages/visual-editor/locales/platform/fi/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Valitse video", "clearAll": "Tyhjennä kaikki", "close": "Sulje", - "closed": "Suljettu", "closeHeaderMenu": "Sulje otsikkovalikko", "closeMenu": "Sulje valikko", + "closed": "Suljettu", "closesAtTime": "Suljetaan {{time}}", "closesAtTimeWeek": "Suljetaan klo {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Taustaväri", "bannerText": "Banneriteksti", "businessLogo": "Liikealue", - "buttons": "Painikkeet", "buttonText": "Painikkeen teksti", + "buttons": "Painikkeet", "cardTitleColor": "Kortin otsikon väri", "cardVariant": "Kortin variantti", "carouselImageCount": "Karuselli kuvien määrä", @@ -212,8 +212,8 @@ "emails": "Sähköpostit", "enableLanguageSelector": "Ota kielenvalitsin käyttöön", "endDate": "Päättymispäivämäärä", - "expandedFooterLinks": "Laajennetut alatunnislinkit", "expandFooter": "Laajentaa alatunnistetta", + "expandedFooterLinks": "Laajennetut alatunnislinkit", "facebookLink": "Facebook -linkki", "faqs": "Faqit", "field": "Ala", @@ -247,13 +247,13 @@ "latitude": "Leveysaste", "limit": "Rajoittaa", "link": "Linkki", - "linkedInLink": "LinkedIn -linkki", "linkLabel": "Linkin etiketti", + "linkTarget": "Linkki kohde", + "linkType": "Linkkityyppi", + "linkedInLink": "LinkedIn -linkki", "links": "Linkit", "linksPosition": "Linkkien sijainti", "linksTooltip": "Linkit kutistuvat automaattisesti, jos näkymä on liian kapea", - "linkTarget": "Linkki kohde", - "linkType": "Linkkityyppi", "listLength": "Listata pituus", "liveVisibility": "Näkyvissä live -sivulla", "logoWidth": "Logon leveys", @@ -416,9 +416,9 @@ "showAverageReview": "Näytä keskimääräinen arvostelu", "showBrow": "Näytä ylätunniste", "showBusinessName": "Näytä yrityksen nimi", + "showCTA": "Näytä toimintakehotus", "showCategory": "Näytä luokka", "showCredentials": "Näytä valtuustiedot", - "showCTA": "Näytä toimintakehotus", "showCurrentStatus": "Näytä nykyinen tila", "showDate": "Näytä päivämäärä", "showDateTime": "Näytä päivämäärä ja aika", @@ -472,13 +472,13 @@ }, "filter": "Suodata", "findALocation": "Etsi sijainti", + "fontSize": "Fontin koko", + "fontSizeDefaultLabel": "Laiminlyönti", "fonts": { "choose": "Valitse fontti", "notFound": "Ei fontteja löydetty.", "search": "Haku fontit ..." }, - "fontSize": "Fontin koko", - "fontSizeDefaultLabel": "Laiminlyönti", "friday": "perjantai", "getDirections": "Hanki reittiohjeet", "heading": "Otsikko", @@ -508,12 +508,12 @@ "loadingMap": "Latauskartta ...", "loadingNearbyLocations": "Lataaminen lähellä olevia paikkoja ...", "loadingVE": "Visuaalisen editorin lataaminen ...", + "locationWithCount_one": "{{count}} sijainti", + "locationWithCount_other": "{{count}} sijaintia", "locationsNear_one": "{{count}} sijainti lähellä \"{{name}}\"", "locationsNear_other": "{{count}} sijaintia lähellä kohdetta {{name}}", "locationsWithinDistanceOf_one": "{{count}} sijainti {{distance}} {{unit}} päässä kohteesta \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} sijaintia {{distance}} {{unit}} säteellä kohteesta \"{{name}}\"", - "locationWithCount_one": "{{count}} sijainti", - "locationWithCount_other": "{{count}} sijaintia", "logo": "Logo", "map": "Kartta", "mapRequiresOptIn": "Tämä kartta voidaan näyttää vain, jos evästeet ovat käytössä", diff --git a/packages/visual-editor/locales/platform/fr/visual-editor.json b/packages/visual-editor/locales/platform/fr/visual-editor.json index 748426c062..0497aad7cf 100644 --- a/packages/visual-editor/locales/platform/fr/visual-editor.json +++ b/packages/visual-editor/locales/platform/fr/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Choisir la vidéo", "clearAll": "Tout effacer", "close": "Fermer", - "closed": "Fermé", "closeHeaderMenu": "Menu d'en-tête de fermeture", "closeMenu": "Fermer le menu", + "closed": "Fermé", "closesAtTime": "Ferme à {{time}}", "closesAtTimeWeek": "Ferme à {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Couleur de fond", "bannerText": "Texte de bannière", "businessLogo": "Logo d'entreprise", - "buttons": "Boutons", "buttonText": "Texte du bouton", + "buttons": "Boutons", "cardTitleColor": "Couleur du titre de la carte", "cardVariant": "Variante de carte", "carouselImageCount": "Nombre d'images du carrousel", @@ -212,8 +212,8 @@ "emails": "E-mails", "enableLanguageSelector": "Activer le sélecteur de langue", "endDate": "Date de fin", - "expandedFooterLinks": "Liens de pied de page élargis", "expandFooter": "Développer le pied de page", + "expandedFooterLinks": "Liens de pied de page élargis", "facebookLink": "Lien Facebook", "faqs": "FAQ", "field": "Champ", @@ -247,13 +247,13 @@ "latitude": "Latitude", "limit": "Limite", "link": "Lien", - "linkedInLink": "Lien linkedin", "linkLabel": "Libellé du lien", + "linkTarget": "Cible du lien", + "linkType": "Type de lien", + "linkedInLink": "Lien linkedin", "links": "Links", "linksPosition": "Position des liens", "linksTooltip": "Les liens s'effondreront automatiquement si la fenêtre d'affichage est trop étroite", - "linkTarget": "Cible du lien", - "linkType": "Type de lien", "listLength": "Longueur de liste", "liveVisibility": "Visible sur la page en direct", "logoWidth": "Largeur du logo", @@ -416,9 +416,9 @@ "showAverageReview": "Afficher une revue moyenne", "showBrow": "Afficher le texte du front", "showBusinessName": "Afficher le nom de l'entreprise", + "showCTA": "Afficher le CTA", "showCategory": "Afficher la catégorie", "showCredentials": "Afficher les informations d'identification", - "showCTA": "Afficher le CTA", "showCurrentStatus": "Afficher l'état actuel", "showDate": "Afficher la date", "showDateTime": "Afficher la date et l'heure", @@ -472,13 +472,13 @@ }, "filter": "Filtre", "findALocation": "Trouver un emplacement", + "fontSize": "Taille de la police", + "fontSizeDefaultLabel": "Défaut", "fonts": { "choose": "Choisissez une police", "notFound": "Pas de polices trouvées.", "search": "Rechercher des polices ..." }, - "fontSize": "Taille de la police", - "fontSizeDefaultLabel": "Défaut", "friday": "Vendredi", "getDirections": "Obtenir des itinéraires", "heading": "Titre", @@ -493,8 +493,8 @@ "informationSection": "Section d'information", "inheritedDataMsg": "Les données sont héritées de la section parent.", "insight": "Aperçu", - "kilometer_one": "kilomètre", "kilometer_many": "kilomètres", + "kilometer_one": "kilomètre", "kilometer_other": "kilomètres", "knowledgeGraphContent": "Contenu du graphique de connaissances", "link": "lien", @@ -509,22 +509,22 @@ "loadingMap": "Chargement de la carte ...", "loadingNearbyLocations": "Chargement des emplacements à proximité ...", "loadingVE": "Chargement de l'éditeur visuel ...", - "locationsNear_one": "{{count}} emplacement près de \"{{name}}\"", + "locationWithCount_many": "{{count}} emplacements", + "locationWithCount_one": "{{count}} emplacement", + "locationWithCount_other": "{{count}} emplacements", "locationsNear_many": "{{count}} emplacements à proximité de \"{{name}}\"", + "locationsNear_one": "{{count}} emplacement près de \"{{name}}\"", "locationsNear_other": "{{count}} emplacements à proximité de \"{{name}}\"", - "locationsWithinDistanceOf_one": "{{count}} emplacement à {{distance}} {{unit}} de \"{{name}}\"", "locationsWithinDistanceOf_many": "{{count}} emplacements dans un rayon de {{distance}} {{unit}} de \"{{name}}\"", + "locationsWithinDistanceOf_one": "{{count}} emplacement à {{distance}} {{unit}} de \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} emplacements dans un rayon de {{distance}} {{unit}} de \"{{name}}\"", - "locationWithCount_one": "{{count}} emplacement", - "locationWithCount_many": "{{count}} emplacements", - "locationWithCount_other": "{{count}} emplacements", "logo": "Logo", "map": "Carte", "mapRequiresOptIn": "Cette carte ne peut être affichée que si les cookies sont activés", "maxWidthTip": "Pour l'alignement optimal du contenu, nous vous recommandons de définir la largeur de l'en-tête et du pied de page pour correspondre ou dépasser la grille de contenu de la page.", "metaTitleMissingLocales": "Le méta-titre est manquant pour les paramètres régionaux : {{locales}}", - "mile_one": "mile", "mile_many": "miles", + "mile_one": "mile", "mile_other": "miles", "missingHtmlWidget": "Ajouter HTML pour afficher le composant", "monday": "Lundi", @@ -687,8 +687,8 @@ }, "thursday": "Jeudi", "toPublishHeading": "Pour publier, résolvez les erreurs suivantes :", - "totalReviews_one": "{{count}} avis", "totalReviews_many": "{{count}} avis", + "totalReviews_one": "{{count}} avis", "totalReviews_other": "{{count}} avis", "tuesday": "Mardi", "undo": "Défaire", diff --git a/packages/visual-editor/locales/platform/hr/visual-editor.json b/packages/visual-editor/locales/platform/hr/visual-editor.json index fbe18d81cb..c1f4f6d7d0 100644 --- a/packages/visual-editor/locales/platform/hr/visual-editor.json +++ b/packages/visual-editor/locales/platform/hr/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Odaberite video", "clearAll": "Obriši sve", "close": "Zatvoriti", - "closed": "Zatvoreno", "closeHeaderMenu": "Zatvori izbornik zaglavlja", "closeMenu": "Zatvori izbornik", + "closed": "Zatvoreno", "closesAtTime": "Zatvara se u {{time}}", "closesAtTimeWeek": "Zatvara se u {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Boja pozadine", "bannerText": "Tekst natpisa", "businessLogo": "Poslovni logotip", - "buttons": "Gumbi", "buttonText": "Tekst gumba", + "buttons": "Gumbi", "cardTitleColor": "Boja naslova kartice", "cardVariant": "Varijanta kartice", "carouselImageCount": "Broj slika vrtuljka", @@ -212,8 +212,8 @@ "emails": "E -mailovi", "enableLanguageSelector": "Omogući selektor jezika", "endDate": "Datum završetka", - "expandedFooterLinks": "Proširene veze podnožja", "expandFooter": "Proširiti podnožje", + "expandedFooterLinks": "Proširene veze podnožja", "facebookLink": "Facebook veza", "faqs": "Česta pitanja", "field": "Polje", @@ -247,13 +247,13 @@ "latitude": "Širina", "limit": "Ograničiti", "link": "Link", - "linkedInLink": "LinkedIn veza", "linkLabel": "Oznaka veze", + "linkTarget": "Odredište", + "linkType": "Vrsta veze", + "linkedInLink": "LinkedIn veza", "links": "Veze", "linksPosition": "Linkovi Pozicija", "linksTooltip": "Veze će se automatski skupiti ako je okvir za prikaz preuzak", - "linkTarget": "Odredište", - "linkType": "Vrsta veze", "listLength": "Dužina popisa", "liveVisibility": "Vidljivo na stranici uživo", "logoWidth": "Širina logotipa", @@ -416,9 +416,9 @@ "showAverageReview": "Pokažite prosječni pregled", "showBrow": "Prikaži tekst obrva", "showBusinessName": "Pokaži naziv tvrtke", + "showCTA": "Prikaži CTA", "showCategory": "Prikaži kategoriju", "showCredentials": "Prikaži vjerodajnice", - "showCTA": "Prikaži CTA", "showCurrentStatus": "Pokažite trenutni status", "showDate": "Prikaži datum", "showDateTime": "Prikaži datum i vrijeme", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Pronađite lokaciju", + "fontSize": "Veličina fonta", + "fontSizeDefaultLabel": "Zadano", "fonts": { "choose": "Odaberite font", "notFound": "Nisu pronađeni fontovi.", "search": "Pretražite fontove ..." }, - "fontSize": "Veličina fonta", - "fontSizeDefaultLabel": "Zadano", "friday": "petak", "getDirections": "Dobiti upute", "heading": "Naslov", @@ -493,8 +493,8 @@ "informationSection": "Odjeljak s informacijama", "inheritedDataMsg": "Podaci se nasljeđuju iz nadređenog odjeljka.", "insight": "Uvid", - "kilometer_one": "kilometar", "kilometer_few": "kilometra", + "kilometer_one": "kilometar", "kilometer_other": "kilometara", "knowledgeGraphContent": "Sadržaj grafikona znanja", "link": "link", @@ -509,22 +509,22 @@ "loadingMap": "Učitavanje karte ...", "loadingNearbyLocations": "Učitavanje lokacija u blizini ...", "loadingVE": "Učitavanje vizualnog uređivača ...", - "locationsNear_one": "{{count}} lokacija u blizini \"{{name}}\"", + "locationWithCount_few": "{{count}} lokacije", + "locationWithCount_one": "{{count}} lokacija", + "locationWithCount_other": "{{count}} lokacija", "locationsNear_few": "{{count}} lokacije u blizini \"{{name}}\"", + "locationsNear_one": "{{count}} lokacija u blizini \"{{name}}\"", "locationsNear_other": "{{count}} lokacija u blizini \"{{name}}\"", - "locationsWithinDistanceOf_one": "{{count}} lokacija unutar {{distance}} {{unit}} od \"{{name}}\"", "locationsWithinDistanceOf_few": "{{count}} lokacije unutar {{distance}} {{unit}} od \"{{name}}\"", + "locationsWithinDistanceOf_one": "{{count}} lokacija unutar {{distance}} {{unit}} od \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} lokacija unutar {{distance}} {{unit}} od \"{{name}}\"", - "locationWithCount_one": "{{count}} lokacija", - "locationWithCount_few": "{{count}} lokacije", - "locationWithCount_other": "{{count}} lokacija", "logo": "Logo", "map": "Karta", "mapRequiresOptIn": "Ova se karta može prikazati samo ako su omogućeni kolačići", "maxWidthTip": "Za optimalno poravnavanje sadržaja, preporučujemo postavljanje širine zaglavlja i podnožja kako bi se podudarala ili premašila rešetku sadržaja stranice.", "metaTitleMissingLocales": "Nedostaje meta naslov za lokalitet(e): {{locales}}", - "mile_one": "milja", "mile_few": "milje", + "mile_one": "milja", "mile_other": "milja", "missingHtmlWidget": "Dodajte HTML za pregled komponente", "monday": "ponedjeljak", @@ -687,8 +687,8 @@ }, "thursday": "četvrtak", "toPublishHeading": "Za objavu riješite sljedeće pogreške:", - "totalReviews_one": "{{count}} pregled", "totalReviews_few": "{{count}} recenzije", + "totalReviews_one": "{{count}} pregled", "totalReviews_other": "{{count}} recenzija", "tuesday": "utorak", "undo": "Otkopčati", diff --git a/packages/visual-editor/locales/platform/hu/visual-editor.json b/packages/visual-editor/locales/platform/hu/visual-editor.json index 5f757be15f..83731d46a4 100644 --- a/packages/visual-editor/locales/platform/hu/visual-editor.json +++ b/packages/visual-editor/locales/platform/hu/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Válassza ki a videót", "clearAll": "Összes törlése", "close": "Közeli", - "closed": "Zárt", "closeHeaderMenu": "Zárja be a Fejléc menüjét", "closeMenu": "Zárja be a menüt", + "closed": "Zárt", "closesAtTime": "Zárás: {{time}}", "closesAtTimeWeek": "Zárás: {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Háttérszín", "bannerText": "Szalaghirdetés", "businessLogo": "Üzleti logó", - "buttons": "Gombok", "buttonText": "Gomb szövege", + "buttons": "Gombok", "cardTitleColor": "Kártya cím színe", "cardVariant": "Kártya változat", "carouselImageCount": "Forgóképek száma", @@ -212,8 +212,8 @@ "emails": "E -mailek", "enableLanguageSelector": "Engedélyezze a nyelvválasztót", "endDate": "Befejezés dátuma", - "expandedFooterLinks": "Bővített lábléc linkek", "expandFooter": "Bontsa ki a láblécet", + "expandedFooterLinks": "Bővített lábléc linkek", "facebookLink": "Facebook link", "faqs": "GYIK", "field": "Mező", @@ -247,13 +247,13 @@ "latitude": "Szélesség", "limit": "Határ", "link": "Link", - "linkedInLink": "LinkedIn Link", "linkLabel": "Link címke", + "linkTarget": "cél", + "linkType": "Linktípus", + "linkedInLink": "LinkedIn Link", "links": "Linkek", "linksPosition": "Linkek Pozíció", "linksTooltip": "A hivatkozások automatikusan összecsukódnak, ha a nézetablak túl keskeny", - "linkTarget": "cél", - "linkType": "Linktípus", "listLength": "Lista hossza", "liveVisibility": "Látható az élő oldalon", "logoWidth": "Logószélesség", @@ -416,9 +416,9 @@ "showAverageReview": "Mutassa meg az átlagos áttekintést", "showBrow": "Szöveg megjelenítése", "showBusinessName": "Vállalkozás nevének megjelenítése", + "showCTA": "CTA megjelenítése", "showCategory": "Kategória megjelenítése", "showCredentials": "Hitelesítési adatok megjelenítése", - "showCTA": "CTA megjelenítése", "showCurrentStatus": "Mutassa meg az aktuális állapotot", "showDate": "Dátum megjelenítése", "showDateTime": "Dátum és idő megjelenítése", @@ -472,13 +472,13 @@ }, "filter": "Szűrő", "findALocation": "Keressen egy helyet", + "fontSize": "Betűkészlet", + "fontSizeDefaultLabel": "Mulasztás", "fonts": { "choose": "Válasszon betűtípust", "notFound": "Nincs betűtípus.", "search": "Keresési betűtípusok ..." }, - "fontSize": "Betűkészlet", - "fontSizeDefaultLabel": "Mulasztás", "friday": "péntek", "getDirections": "Szerezzen útmutatásokat", "heading": "Cím", @@ -508,12 +508,12 @@ "loadingMap": "Betöltési térkép ...", "loadingNearbyLocations": "A közeli helyek betöltése ...", "loadingVE": "Vizuális szerkesztő betöltése ...", + "locationWithCount_one": "{{count}} hely", + "locationWithCount_other": "{{count}} helyek", "locationsNear_one": "{{count}} hely közelében \"{{name}}\"", "locationsNear_other": "{{count}} hely a(z) \"{{name}}\" közelében", "locationsWithinDistanceOf_one": "{{count}} hely a(z) \"{{name}}\" {{distance}} {{unit}}-án belül", "locationsWithinDistanceOf_other": "{{count}} hely {{distance}} {{unit}}-on belül a következőtől: \"{{name}}\"", - "locationWithCount_one": "{{count}} hely", - "locationWithCount_other": "{{count}} helyek", "logo": "Logó", "map": "Térkép", "mapRequiresOptIn": "Ez a térkép csak akkor jeleníthető meg, ha a cookie-k engedélyezve vannak", diff --git a/packages/visual-editor/locales/platform/it/visual-editor.json b/packages/visual-editor/locales/platform/it/visual-editor.json index 0fe8150cf0..059f31d7ca 100644 --- a/packages/visual-editor/locales/platform/it/visual-editor.json +++ b/packages/visual-editor/locales/platform/it/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Scegli il video", "clearAll": "Cancella tutto", "close": "Vicino", - "closed": "Chiuso", "closeHeaderMenu": "Chiudi il menu dell'intestazione", "closeMenu": "Chiudi menu", + "closed": "Chiuso", "closesAtTime": "Chiude alle {{time}}", "closesAtTimeWeek": "Chiude alle {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Colore di sfondo", "bannerText": "Banner Testo", "businessLogo": "Logo aziendale", - "buttons": "Pulsanti", "buttonText": "Testo del pulsante", + "buttons": "Pulsanti", "cardTitleColor": "Colore del titolo della carta", "cardVariant": "Variante della carta", "carouselImageCount": "Conteggio immagini carosello", @@ -212,8 +212,8 @@ "emails": "E -mail", "enableLanguageSelector": "Abilita selettore di lingue", "endDate": "Data di fine", - "expandedFooterLinks": "Collegamenti a piè di pagina espansi", "expandFooter": "Espandere il piè di pagina", + "expandedFooterLinks": "Collegamenti a piè di pagina espansi", "facebookLink": "Link di Facebook", "faqs": "FAQ", "field": "Campo", @@ -247,13 +247,13 @@ "latitude": "Latitudine", "limit": "Limite", "link": "Collegamento", - "linkedInLink": "LinkedIn Link", "linkLabel": "Etichetta di collegamento", + "linkTarget": "Obiettivo del collegamento", + "linkType": "Tipo di collegamento", + "linkedInLink": "LinkedIn Link", "links": "Link", "linksPosition": "Posizione dei collegamenti", "linksTooltip": "I collegamenti verranno compressi automaticamente se la finestra è troppo stretta", - "linkTarget": "Obiettivo del collegamento", - "linkType": "Tipo di collegamento", "listLength": "Lunghezza dell'elenco", "liveVisibility": "Visibile sulla pagina live", "logoWidth": "Larghezza del logo", @@ -416,9 +416,9 @@ "showAverageReview": "Mostra una revisione media", "showBrow": "Mostra testo sulla fronte", "showBusinessName": "Mostra il nome dell'azienda", + "showCTA": "Mostra invito all'azione", "showCategory": "Mostra categoria", "showCredentials": "Mostra credenziali", - "showCTA": "Mostra invito all'azione", "showCurrentStatus": "Mostra lo stato attuale", "showDate": "Mostra data", "showDateTime": "Mostra data e ora", @@ -472,13 +472,13 @@ }, "filter": "Filtro", "findALocation": "Trova una posizione", + "fontSize": "Dimensione del carattere", + "fontSizeDefaultLabel": "Predefinito", "fonts": { "choose": "Scegli un carattere", "notFound": "Nessun carattere trovato.", "search": "Cerca caratteri ..." }, - "fontSize": "Dimensione del carattere", - "fontSizeDefaultLabel": "Predefinito", "friday": "Venerdì", "getDirections": "Ottieni indicazioni", "heading": "Intestazione", @@ -493,8 +493,8 @@ "informationSection": "Sezione di informazioni", "inheritedDataMsg": "I dati vengono ereditati dalla sezione principale.", "insight": "Intuizione", - "kilometer_one": "chilometro", "kilometer_many": "chilometri", + "kilometer_one": "chilometro", "kilometer_other": "chilometri", "knowledgeGraphContent": "Contenuto del grafico della conoscenza", "link": "collegamento", @@ -509,22 +509,22 @@ "loadingMap": "Mappa di caricamento ...", "loadingNearbyLocations": "Caricamento di luoghi vicini ...", "loadingVE": "Caricamento dell'editor visivo ...", - "locationsNear_one": "{{count}} posizione vicino a \"{{name}}\"", + "locationWithCount_many": "{{count}} posizioni", + "locationWithCount_one": "{{count}} posizione", + "locationWithCount_other": "{{count}} località", "locationsNear_many": "{{count}} luoghi vicino a \"{{name}}\"", + "locationsNear_one": "{{count}} posizione vicino a \"{{name}}\"", "locationsNear_other": "{{count}} località vicino a \"{{name}}\"", - "locationsWithinDistanceOf_one": "{{count}} posizione entro {{distance}} {{unit}} di \"{{name}}\"", "locationsWithinDistanceOf_many": "{{count}} posizioni all'interno di {{distance}} {{unit}} di \"{{name}}\"", + "locationsWithinDistanceOf_one": "{{count}} posizione entro {{distance}} {{unit}} di \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} località entro {{distance}} {{unit}} di \"{{name}}\"", - "locationWithCount_one": "{{count}} posizione", - "locationWithCount_many": "{{count}} posizioni", - "locationWithCount_other": "{{count}} località", "logo": "Logo", "map": "Mappa", "mapRequiresOptIn": "Questa mappa può essere visualizzata solo se i cookie sono abilitati", "maxWidthTip": "Per un allineamento ottimale dei contenuti, si consiglia di impostare la larghezza di intestazione e piè di pagina per abbinare o superare la griglia di contenuto della pagina.", "metaTitleMissingLocales": "Manca il meta titolo per le impostazioni locali: {{locales}}", - "mile_one": "miglio", "mile_many": "miglia", + "mile_one": "miglio", "mile_other": "miglia", "missingHtmlWidget": "Aggiungi HTML al componente Visualizza", "monday": "Lunedi", @@ -687,8 +687,8 @@ }, "thursday": "Giovedì", "toPublishHeading": "Per pubblicare, risolvi i seguenti errori:", - "totalReviews_one": "{{count}} recensione", "totalReviews_many": "{{count}} recensioni", + "totalReviews_one": "{{count}} recensione", "totalReviews_other": "{{count}} recensioni", "tuesday": "Martedì", "undo": "Disfare", diff --git a/packages/visual-editor/locales/platform/ja/visual-editor.json b/packages/visual-editor/locales/platform/ja/visual-editor.json index a70f3647d1..a16eddd361 100644 --- a/packages/visual-editor/locales/platform/ja/visual-editor.json +++ b/packages/visual-editor/locales/platform/ja/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "ビデオを選択してください", "clearAll": "すべてクリア", "close": "閉じる", - "closed": "閉店", "closeHeaderMenu": "ヘッダーを閉じるメニュー", "closeMenu": "メニューを閉じます", + "closed": "閉店", "closesAtTime": "{{time}}に閉まります", "closesAtTimeWeek": "{{time}} {{dayOfWeek}} に閉店", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "背景色", "bannerText": "バナーテキスト", "businessLogo": "ビジネスロゴ", - "buttons": "ボタン", "buttonText": "ボタンのテキスト", + "buttons": "ボタン", "cardTitleColor": "カードタイトルの色", "cardVariant": "カードのバリエーション", "carouselImageCount": "カルーセル画像数", @@ -212,8 +212,8 @@ "emails": "メール", "enableLanguageSelector": "言語セレクターを有効にします", "endDate": "終了日", - "expandedFooterLinks": "拡張フッターリンク", "expandFooter": "フッターを拡張します", + "expandedFooterLinks": "拡張フッターリンク", "facebookLink": "Facebookリンク", "faqs": "FAQ", "field": "分野", @@ -247,13 +247,13 @@ "latitude": "緯度", "limit": "制限", "link": "リンク", - "linkedInLink": "LinkedInリンク", "linkLabel": "リンクラベル", + "linkTarget": "リンクターゲット", + "linkType": "リンクタイプ", + "linkedInLink": "LinkedInリンク", "links": "リンク", "linksPosition": "リンクの位置", "linksTooltip": "ビューポートが狭すぎる場合、リンクは自動的に折りたたまれます", - "linkTarget": "リンクターゲット", - "linkType": "リンクタイプ", "listLength": "リストの長さ", "liveVisibility": "ライブページに表示されます", "logoWidth": "ロゴ幅", @@ -416,9 +416,9 @@ "showAverageReview": "平均レビューを表示します", "showBrow": "眉テキストを表示", "showBusinessName": "事業名を表示", + "showCTA": "CTAを表示", "showCategory": "カテゴリを表示", "showCredentials": "資格情報の表示", - "showCTA": "CTAを表示", "showCurrentStatus": "現在のステータスを表示します", "showDate": "日付を表示", "showDateTime": "日付と時刻を表示", @@ -472,13 +472,13 @@ }, "filter": "フィルター", "findALocation": "場所を見つけます", + "fontSize": "フォントサイズ", + "fontSizeDefaultLabel": "デフォルト", "fonts": { "choose": "フォントを選択します", "notFound": "フォントは見つかりません。", "search": "フォントを検索..." }, - "fontSize": "フォントサイズ", - "fontSizeDefaultLabel": "デフォルト", "friday": "金曜日", "getDirections": "道順を取得します", "heading": "見出し", @@ -508,12 +508,12 @@ "loadingMap": "マップの読み込み...", "loadingNearbyLocations": "近くの場所を読み込む...", "loadingVE": "ビジュアルエディターの読み込み...", + "locationWithCount_one": "{{count}} 件の場所", + "locationWithCount_other": "{{count}} 件の場所", "locationsNear_one": "「{{name}}」付近の {{count}} 件の場所", "locationsNear_other": "「{{name}}」付近の {{count}} 件の場所", "locationsWithinDistanceOf_one": "「{{name}}」から {{distance}} {{unit}} 以内にある {{count}} 件の場所", "locationsWithinDistanceOf_other": "「{{name}}」から {{distance}} {{unit}} 以内にある {{count}} 件の場所", - "locationWithCount_one": "{{count}} 件の場所", - "locationWithCount_other": "{{count}} 件の場所", "logo": "ロゴ", "map": "地図", "mapRequiresOptIn": "この地図は Cookie が有効になっている場合にのみ表示できます", diff --git a/packages/visual-editor/locales/platform/lt/visual-editor.json b/packages/visual-editor/locales/platform/lt/visual-editor.json index 70f1ec77c3..2b9b3ddec4 100644 --- a/packages/visual-editor/locales/platform/lt/visual-editor.json +++ b/packages/visual-editor/locales/platform/lt/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Pasirinkite vaizdo įrašą", "clearAll": "Išvalyti viską", "close": "Uždaryti", - "closed": "Uždarytas", "closeHeaderMenu": "Uždarykite antraštės meniu", "closeMenu": "Uždaryti meniu", + "closed": "Uždarytas", "closesAtTime": "Uždaroma {{time}}", "closesAtTimeWeek": "Uždaroma {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Fono spalva", "bannerText": "Reklamjuostės tekstas", "businessLogo": "Verslo logotipas", - "buttons": "Mygtukai", "buttonText": "Mygtuko tekstas", + "buttons": "Mygtukai", "cardTitleColor": "Kortelės pavadinimo spalva", "cardVariant": "Kortelės variantas", "carouselImageCount": "Karuselės vaizdų skaičius", @@ -212,8 +212,8 @@ "emails": "El. El. laiškai", "enableLanguageSelector": "Įgalinti kalbos parinkiklį", "endDate": "Pabaigos data", - "expandedFooterLinks": "Išplėstos poraštės nuorodos", "expandFooter": "Išplėskite poraštę", + "expandedFooterLinks": "Išplėstos poraštės nuorodos", "facebookLink": "„Facebook“ nuoroda", "faqs": "DUK", "field": "Laukas", @@ -247,13 +247,13 @@ "latitude": "Platuma", "limit": "Limit", "link": "Nuoroda", - "linkedInLink": "„LinkedIn“ nuoroda", "linkLabel": "Nuorodos etiketė", + "linkTarget": "Nuoroda Tikslas", + "linkType": "Nuorodos tipas", + "linkedInLink": "„LinkedIn“ nuoroda", "links": "Nuorodos", "linksPosition": "Nuorodų padėtis", "linksTooltip": "Jei peržiūros sritis per siaura, nuorodos bus automatiškai sutrauktos", - "linkTarget": "Nuoroda Tikslas", - "linkType": "Nuorodos tipas", "listLength": "Sąrašo ilgis", "liveVisibility": "Matomas tiesioginiame puslapyje", "logoWidth": "Logotipo plotis", @@ -416,9 +416,9 @@ "showAverageReview": "Rodyti vidutinę apžvalgą", "showBrow": "Rodyti antakių tekstą", "showBusinessName": "Rodyti įmonės pavadinimą", + "showCTA": "Rodyti CTA", "showCategory": "Rodyti kategoriją", "showCredentials": "Rodyti kredencialus", - "showCTA": "Rodyti CTA", "showCurrentStatus": "Parodykite dabartinę būseną", "showDate": "Rodyti datą", "showDateTime": "Rodyti datą ir laiką", @@ -472,13 +472,13 @@ }, "filter": "Filtruoti", "findALocation": "Raskite vietą", + "fontSize": "Šrifto dydis", + "fontSizeDefaultLabel": "Numatytasis", "fonts": { "choose": "Pasirinkite šriftą", "notFound": "Jokių šriftų nerasta.", "search": "Ieškokite šriftų ..." }, - "fontSize": "Šrifto dydis", - "fontSizeDefaultLabel": "Numatytasis", "friday": "Penktadienis", "getDirections": "Gaukite nurodymus", "heading": "Antraštė", @@ -493,9 +493,9 @@ "informationSection": "Informacijos skyrius", "inheritedDataMsg": "Duomenys paveldimi iš pirminės sekcijos.", "insight": "Įžvalga", - "kilometer_one": "kilometras", "kilometer_few": "kilometrų", "kilometer_many": "kilometrų", + "kilometer_one": "kilometras", "kilometer_other": "kilometrų", "knowledgeGraphContent": "Žinių grafiko turinys", "link": "nuoroda", @@ -510,26 +510,26 @@ "loadingMap": "Krovimo žemėlapis ...", "loadingNearbyLocations": "Pakraunama netoliese esančias vietas ...", "loadingVE": "Įkeliamas vaizdinis redaktorius ...", - "locationsNear_one": "{{count}} vieta šalia „{{name}}“", + "locationWithCount_few": "{{count}} vietos", + "locationWithCount_many": "{{count}} vietos", + "locationWithCount_one": "{{count}} vieta", + "locationWithCount_other": "{{count}} vietos", "locationsNear_few": "{{count}} vietos šalia „{{name}}“", "locationsNear_many": "{{count}} vietos šalia „{{name}}“", + "locationsNear_one": "{{count}} vieta šalia „{{name}}“", "locationsNear_other": "{{count}} vietos šalia „{{name}}“", - "locationsWithinDistanceOf_one": "{{count}} vieta per {{distance}} {{unit}} nuo „{{name}}“", "locationsWithinDistanceOf_few": "{{count}} vietovių per {{distance}} {{unit}} nuo „{{name}}“", "locationsWithinDistanceOf_many": "{{count}} vietovių per {{distance}} {{unit}} nuo „{{name}}“", + "locationsWithinDistanceOf_one": "{{count}} vieta per {{distance}} {{unit}} nuo „{{name}}“", "locationsWithinDistanceOf_other": "{{count}} vietovių per {{distance}} {{unit}} nuo „{{name}}“", - "locationWithCount_one": "{{count}} vieta", - "locationWithCount_few": "{{count}} vietos", - "locationWithCount_many": "{{count}} vietos", - "locationWithCount_other": "{{count}} vietos", "logo": "Logotipas", "map": "Žemėlapis", "mapRequiresOptIn": "Šis žemėlapis gali būti rodomas tik įjungus slapukus", "maxWidthTip": "Siekdami optimalaus turinio suderinimo, mes rekomenduojame nustatyti antraštės ir poraštės plotį, kad jis atitiktų arba viršytų puslapio turinio tinklą.", "metaTitleMissingLocales": "Trūksta lokalės (-ių) meta pavadinimo: {{locales}}", - "mile_one": "mylia", "mile_few": "mylios", "mile_many": "mylios", + "mile_one": "mylia", "mile_other": "mylių", "missingHtmlWidget": "Pridėkite HTML, kad peržiūrėtumėte komponentą", "monday": "Pirmadienis", @@ -692,9 +692,9 @@ }, "thursday": "Ketvirtadienis", "toPublishHeading": "Norėdami paskelbti, ištaisykite šias klaidas:", - "totalReviews_one": "{{count}} atsiliepimas", "totalReviews_few": "{{count}} atsiliepimai", "totalReviews_many": "{{count}} atsiliepimo", + "totalReviews_one": "{{count}} atsiliepimas", "totalReviews_other": "{{count}} atsiliepimų", "tuesday": "Antradienis", "undo": "Anuliuoti", diff --git a/packages/visual-editor/locales/platform/lv/visual-editor.json b/packages/visual-editor/locales/platform/lv/visual-editor.json index c8a2d2d27f..d33f95eb45 100644 --- a/packages/visual-editor/locales/platform/lv/visual-editor.json +++ b/packages/visual-editor/locales/platform/lv/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Izvēlieties video", "clearAll": "Notīrīt visu", "close": "Tuvs", - "closed": "Slēgts", "closeHeaderMenu": "Aizvērt galvenes izvēlni", "closeMenu": "Aizvērt ēdienkarti", + "closed": "Slēgts", "closesAtTime": "Tiek slēgts plkst. {{time}}", "closesAtTimeWeek": "Tiek slēgts plkst. {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Fona krāsa", "bannerText": "Reklāmkarogu teksts", "businessLogo": "Biznesa logotips", - "buttons": "Pogas", "buttonText": "Pogas teksts", + "buttons": "Pogas", "cardTitleColor": "Kartes nosaukuma krāsa", "cardVariant": "Kartes variants", "carouselImageCount": "Karuseļa attēlu skaits", @@ -212,8 +212,8 @@ "emails": "E -pasti", "enableLanguageSelector": "Iespējot valodas atlasītāju", "endDate": "Beigu datums", - "expandedFooterLinks": "Paplašinātas kājenes saites", "expandFooter": "Paplašināt kājeni", + "expandedFooterLinks": "Paplašinātas kājenes saites", "facebookLink": "Facebook saite", "faqs": "FAQ", "field": "Lauks", @@ -247,13 +247,13 @@ "latitude": "Platums", "limit": "Ierobežot", "link": "Saite", - "linkedInLink": "LinkedIn saite", "linkLabel": "Saites etiķete", + "linkTarget": "Saites mērķis", + "linkType": "Saites tips", + "linkedInLink": "LinkedIn saite", "links": "Saites", "linksPosition": "Saišu pozīcija", "linksTooltip": "Ja skata logs ir pārāk šaurs, saites tiks automātiski sakļautas", - "linkTarget": "Saites mērķis", - "linkType": "Saites tips", "listLength": "Saraksta garums", "liveVisibility": "Redzams tiešraides lapā", "logoWidth": "Logotipa platums", @@ -416,9 +416,9 @@ "showAverageReview": "Rādīt vidējo pārskatu", "showBrow": "Rādīt uzacu tekstu", "showBusinessName": "Rādīt uzņēmuma nosaukumu", + "showCTA": "Rādīt CTA", "showCategory": "Rādīt kategoriju", "showCredentials": "Rādīt akreditācijas datus", - "showCTA": "Rādīt CTA", "showCurrentStatus": "Parādīt pašreizējo statusu", "showDate": "Rādīt datumu", "showDateTime": "Rādīt datumu un laiku", @@ -472,13 +472,13 @@ }, "filter": "Filtrs", "findALocation": "Atrodiet atrašanās vietu", + "fontSize": "Fonta lielums", + "fontSizeDefaultLabel": "Nepildīt", "fonts": { "choose": "Izvēlieties fontu", "notFound": "Fonti nav atrasti.", "search": "Meklēt fontus ..." }, - "fontSize": "Fonta lielums", - "fontSizeDefaultLabel": "Nepildīt", "friday": "Piektdiena", "getDirections": "Saņemt norādes", "heading": "Virsraksts", @@ -493,9 +493,9 @@ "informationSection": "Informācijas sadaļa", "inheritedDataMsg": "Dati tiek mantoti no vecāku sadaļas.", "insight": "Ieskats", - "kilometer_zero": "kilometri", "kilometer_one": "kilometrs", "kilometer_other": "kilometri", + "kilometer_zero": "kilometri", "knowledgeGraphContent": "Zināšanu grafika saturs", "link": "saite", "linkTypes": { @@ -509,23 +509,23 @@ "loadingMap": "Kartes ielāde ...", "loadingNearbyLocations": "Iekraušana tuvējo vietu ...", "loadingVE": "Vizuālā redaktora ielāde ...", - "locationsNear_zero": "{{count}} atrašanās vietas netālu no \"{{name}}\"", + "locationWithCount_one": "{{count}} atrašanās vieta", + "locationWithCount_other": "{{count}} vietas", + "locationWithCount_zero": "{{count}} atrašanās vietas", "locationsNear_one": "{{count}} atrašanās vieta netālu no \"{{name}}\"", "locationsNear_other": "{{count}} atrašanās vietas netālu no \"{{name}}\"", - "locationsWithinDistanceOf_zero": "{{count}} atrašanās vietas {{distance}} {{unit}} rādiusā no \"{{name}}\"", + "locationsNear_zero": "{{count}} atrašanās vietas netālu no \"{{name}}\"", "locationsWithinDistanceOf_one": "{{count}} atrašanās vieta {{distance}} {{unit}} rādiusā no \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} atrašanās vietas {{distance}} {{unit}} rādiusā no \"{{name}}\"", - "locationWithCount_zero": "{{count}} atrašanās vietas", - "locationWithCount_one": "{{count}} atrašanās vieta", - "locationWithCount_other": "{{count}} vietas", + "locationsWithinDistanceOf_zero": "{{count}} atrašanās vietas {{distance}} {{unit}} rādiusā no \"{{name}}\"", "logo": "Logotips", "map": "Karte", "mapRequiresOptIn": "Šo karti var parādīt tikai tad, ja ir iespējoti sīkfaili", "maxWidthTip": "Lai iegūtu optimālu satura izlīdzināšanu, mēs iesakām iestatīt galvenes un kājenes platumu, lai tas atbilstu vai pārsniegtu lapas satura režģi.", "metaTitleMissingLocales": "Trūkst metanosaukuma lokalizācijai(-ām): {{locales}}", - "mile_zero": "jūdzes", "mile_one": "jūdze", "mile_other": "jūdzes", + "mile_zero": "jūdzes", "missingHtmlWidget": "Pievienojiet HTML, lai skatītu komponentu", "monday": "Pirmdiena", "nearbyLocationsEmptyState": "Nav {{entityType}} {{radius}} {{unit}} rādiusā", @@ -687,9 +687,9 @@ }, "thursday": "Ceturtdiena", "toPublishHeading": "Lai publicētu, atrisiniet tālāk norādītās kļūdas.", - "totalReviews_zero": "{{count}} atsauksmes", "totalReviews_one": "{{count}} atsauksme", "totalReviews_other": "{{count}} atsauksmes", + "totalReviews_zero": "{{count}} atsauksmes", "tuesday": "Otrdiena", "undo": "Atsaukt", "update": "Atjaunināt", diff --git a/packages/visual-editor/locales/platform/nb/visual-editor.json b/packages/visual-editor/locales/platform/nb/visual-editor.json index 6034a96391..0eb5f67bc6 100644 --- a/packages/visual-editor/locales/platform/nb/visual-editor.json +++ b/packages/visual-editor/locales/platform/nb/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Velg video", "clearAll": "Fjern alle", "close": "Lukke", - "closed": "Lukket", "closeHeaderMenu": "Lukk headermeny", "closeMenu": "Lukk meny", + "closed": "Lukket", "closesAtTime": "Stenger kl. {{time}}", "closesAtTimeWeek": "Stenger kl. {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Bakgrunnsfarge", "bannerText": "Bannertekst", "businessLogo": "Forretningslogo", - "buttons": "Knapper", "buttonText": "Knappetekst", + "buttons": "Knapper", "cardTitleColor": "Korttittelfarge", "cardVariant": "Kortvariant", "carouselImageCount": "Antall karusellbilder", @@ -212,8 +212,8 @@ "emails": "E-post", "enableLanguageSelector": "Aktiver språkvelger", "endDate": "Sluttdato", - "expandedFooterLinks": "Utvidede bunntekstlenker", "expandFooter": "Utvide bunnteksten", + "expandedFooterLinks": "Utvidede bunntekstlenker", "facebookLink": "Facebook -lenke", "faqs": "Vanlige spørsmål", "field": "Felt", @@ -247,13 +247,13 @@ "latitude": "Breddegrad", "limit": "Begrense", "link": "Lenke", - "linkedInLink": "LinkedIn Link", "linkLabel": "Koblingsetikett", + "linkTarget": "Linkmål", + "linkType": "Koblingstype", + "linkedInLink": "LinkedIn Link", "links": "Lenker", "linksPosition": "Linker Posisjon", "linksTooltip": "Lenker vil automatisk kollapse hvis visningsporten er for smal", - "linkTarget": "Linkmål", - "linkType": "Koblingstype", "listLength": "Listelengde", "liveVisibility": "Synlig på live side", "logoWidth": "Logo bredde", @@ -416,9 +416,9 @@ "showAverageReview": "Vis gjennomsnittlig gjennomgang", "showBrow": "Vis overtekst", "showBusinessName": "Vis bedriftsnavn", + "showCTA": "Vis CTA", "showCategory": "Vis kategori", "showCredentials": "Vis legitimasjon", - "showCTA": "Vis CTA", "showCurrentStatus": "Vis gjeldende status", "showDate": "Vis dato", "showDateTime": "Vis dato og klokkeslett", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Finn et sted", + "fontSize": "Fontstørrelse", + "fontSizeDefaultLabel": "Misligholde", "fonts": { "choose": "Velg en font", "notFound": "Ingen skrifter funnet.", "search": "Søkefonter ..." }, - "fontSize": "Fontstørrelse", - "fontSizeDefaultLabel": "Misligholde", "friday": "fredag", "getDirections": "Få veibeskrivelse", "heading": "Overskrift", @@ -508,12 +508,12 @@ "loadingMap": "Laster inn kart ...", "loadingNearbyLocations": "Laster inn nærliggende steder ...", "loadingVE": "Laster inn visuell redaktør ...", + "locationWithCount_one": "{{count}} plassering", + "locationWithCount_other": "{{count}} lokasjoner", "locationsNear_one": "{{count}} plassering i nærheten \"{{name}}\"", "locationsNear_other": "{{count}} steder i nærheten av «{{name}}»", "locationsWithinDistanceOf_one": "{{count}} sted innenfor {{distance}} {{unit}} fra \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} steder innenfor {{distance}} {{unit}} fra \"{{name}}\"", - "locationWithCount_one": "{{count}} plassering", - "locationWithCount_other": "{{count}} lokasjoner", "logo": "Logo", "map": "Kart", "mapRequiresOptIn": "Dette kartet kan bare vises hvis informasjonskapsler er aktivert", diff --git a/packages/visual-editor/locales/platform/nl/visual-editor.json b/packages/visual-editor/locales/platform/nl/visual-editor.json index 13252691f5..53655785be 100644 --- a/packages/visual-editor/locales/platform/nl/visual-editor.json +++ b/packages/visual-editor/locales/platform/nl/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Kies video", "clearAll": "Alles wissen", "close": "Dichtbij", - "closed": "Gesloten", "closeHeaderMenu": "Sluit koptekstmenu", "closeMenu": "Sluit het menu", + "closed": "Gesloten", "closesAtTime": "Sluit om {{time}}", "closesAtTimeWeek": "Sluit om {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Achtergrondkleur", "bannerText": "Banner Tekst", "businessLogo": "Bedrijfslogo", - "buttons": "Knoppen", "buttonText": "Knoptekst", + "buttons": "Knoppen", "cardTitleColor": "Kleur kaarttitel", "cardVariant": "Kaartvariant", "carouselImageCount": "Aantal carrouselafbeeldingen", @@ -212,8 +212,8 @@ "emails": "E -mails", "enableLanguageSelector": "Schakel taalselector in", "endDate": "Einddatum", - "expandedFooterLinks": "Uitgebreide voettekst links", "expandFooter": "Footer uitbreiden", + "expandedFooterLinks": "Uitgebreide voettekst links", "facebookLink": "Facebook -link", "faqs": "FAQ's", "field": "Veld", @@ -247,13 +247,13 @@ "latitude": "Breedte", "limit": "Beperken", "link": "Link", - "linkedInLink": "LinkedIn -link", "linkLabel": "Linklabel", + "linkTarget": "Doel koppelen", + "linkType": "Linktype", + "linkedInLink": "LinkedIn -link", "links": "Links", "linksPosition": "Links Positie", "linksTooltip": "Links worden automatisch samengevouwen als de viewport te smal is", - "linkTarget": "Doel koppelen", - "linkType": "Linktype", "listLength": "Maak een lijst van lengte", "liveVisibility": "Zichtbaar op live pagina", "logoWidth": "Logo -breedte", @@ -416,9 +416,9 @@ "showAverageReview": "Toon gemiddelde beoordeling", "showBrow": "Toon wenkbrauwtekst", "showBusinessName": "Toon bedrijfsnaam", + "showCTA": "Toon CTA", "showCategory": "Categorie tonen", "showCredentials": "Toon referenties", - "showCTA": "Toon CTA", "showCurrentStatus": "Toon de huidige status", "showDate": "Datum weergeven", "showDateTime": "Datum en tijd weergeven", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Vind een locatie", + "fontSize": "Lettergrootte", + "fontSizeDefaultLabel": "Standaard", "fonts": { "choose": "Kies een lettertype", "notFound": "Geen lettertypen gevonden.", "search": "Zoek lettertypen ..." }, - "fontSize": "Lettergrootte", - "fontSizeDefaultLabel": "Standaard", "friday": "Vrijdag", "getDirections": "Routebeschrijving", "heading": "Rubriek", @@ -508,12 +508,12 @@ "loadingMap": "Kaart laden ...", "loadingNearbyLocations": "Nabijgelegen locaties laden ...", "loadingVE": "Visuele editor laden ...", + "locationWithCount_one": "{{count}} locatie", + "locationWithCount_other": "{{count}} locaties", "locationsNear_one": "{{count}} locatie nabij \"{{name}}\"", "locationsNear_other": "{{count}} locaties in de buurt van \"{{name}}\"", "locationsWithinDistanceOf_one": "{{count}} locatie binnen {{distance}} {{unit}} van \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} locaties binnen {{distance}} {{unit}} van \"{{name}}\"", - "locationWithCount_one": "{{count}} locatie", - "locationWithCount_other": "{{count}} locaties", "logo": "Logo", "map": "Kaart", "mapRequiresOptIn": "Deze kaart kan alleen worden weergegeven als cookies zijn ingeschakeld", diff --git a/packages/visual-editor/locales/platform/pl/visual-editor.json b/packages/visual-editor/locales/platform/pl/visual-editor.json index 5bfab7ea24..e0b01862e2 100644 --- a/packages/visual-editor/locales/platform/pl/visual-editor.json +++ b/packages/visual-editor/locales/platform/pl/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Wybierz wideo", "clearAll": "Wyczyść wszystko", "close": "Zamknąć", - "closed": "Zamknięte", "closeHeaderMenu": "Zamknij menu nagłówka", "closeMenu": "Zamknij menu", + "closed": "Zamknięte", "closesAtTime": "Zamyka się o {{time}}", "closesAtTimeWeek": "Zamyka się o {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Kolor tła", "bannerText": "Tekst banerowy", "businessLogo": "Logo biznesowe", - "buttons": "Pikolak", "buttonText": "Tekst przycisku", + "buttons": "Pikolak", "cardTitleColor": "Kolor tytułu karty", "cardVariant": "Wariant karty", "carouselImageCount": "Liczba obrazów w karuzeli", @@ -212,8 +212,8 @@ "emails": "E -maile", "enableLanguageSelector": "Włącz wybór języka", "endDate": "Data zakończenia", - "expandedFooterLinks": "Rozszerzone łącza stopki", "expandFooter": "Rozwiń stopkę", + "expandedFooterLinks": "Rozszerzone łącza stopki", "facebookLink": "Link na Facebooku", "faqs": "FAQ", "field": "Pole", @@ -247,13 +247,13 @@ "latitude": "Szerokość", "limit": "Limit", "link": "Link", - "linkedInLink": "Link LinkedIn", "linkLabel": "Etykieta łącza", + "linkTarget": "Cel łącza", + "linkType": "Typ linku", + "linkedInLink": "Link LinkedIn", "links": "Spinki do mankietów", "linksPosition": "Pozycja Linków", "linksTooltip": "Łącza zostaną automatycznie zwinięte, jeśli rzutnia jest zbyt wąska", - "linkTarget": "Cel łącza", - "linkType": "Typ linku", "listLength": "Długość listy", "liveVisibility": "Widoczne na stronie na żywo", "logoWidth": "Szerokość logo", @@ -416,9 +416,9 @@ "showAverageReview": "Pokaż średnią recenzję", "showBrow": "Pokaż nadtytuł", "showBusinessName": "Pokaż nazwę firmy", + "showCTA": "Pokaż wezwanie do działania", "showCategory": "Pokaż kategorię", "showCredentials": "Pokaż poświadczenia", - "showCTA": "Pokaż wezwanie do działania", "showCurrentStatus": "Pokaż aktualny status", "showDate": "Pokaż datę", "showDateTime": "Pokaż datę i godzinę", @@ -472,13 +472,13 @@ }, "filter": "Filtr", "findALocation": "Znajdź lokalizację", + "fontSize": "Rozmiar czcionki", + "fontSizeDefaultLabel": "Domyślny", "fonts": { "choose": "Wybierz czcionkę", "notFound": "Nie znaleziono czcionek.", "search": "Wyszukaj czcionki ..." }, - "fontSize": "Rozmiar czcionki", - "fontSizeDefaultLabel": "Domyślny", "friday": "Piątek", "getDirections": "Uzyskaj wskazówki", "heading": "Nagłówek", @@ -493,9 +493,9 @@ "informationSection": "Sekcja informacji", "inheritedDataMsg": "Dane są dziedziczone z sekcji nadrzędnej.", "insight": "Wgląd", - "kilometer_one": "kilometr", "kilometer_few": "kilometry", "kilometer_many": "kilometry", + "kilometer_one": "kilometr", "kilometer_other": "kilometry", "knowledgeGraphContent": "Treść wykresu wiedzy", "link": "Link", @@ -510,26 +510,26 @@ "loadingMap": "Ładowanie mapy ...", "loadingNearbyLocations": "Ładowanie pobliskich lokalizacji ...", "loadingVE": "Ładowanie edytora wizualnego ...", - "locationsNear_one": "{{count}} lokalizacja w pobliżu „{{name}}”", + "locationWithCount_few": "{{count}} lokalizacje", + "locationWithCount_many": "{{count}} lokalizacji", + "locationWithCount_one": "{{count}} lokalizacja", + "locationWithCount_other": "{{count}} lokalizacji", "locationsNear_few": "{{count}} lokalizacje w pobliżu „{{name}}”", "locationsNear_many": "{{count}} lokalizacji w pobliżu „{{name}}”", + "locationsNear_one": "{{count}} lokalizacja w pobliżu „{{name}}”", "locationsNear_other": "{{count}} lokalizacji w pobliżu „{{name}}”", - "locationsWithinDistanceOf_one": "{{count}} lokalizacja w promieniu {{distance}} {{unit}} od „{{name}}”", "locationsWithinDistanceOf_few": "{{count}} lokalizacje w promieniu {{distance}} {{unit}} od „{{name}}”", "locationsWithinDistanceOf_many": "{{count}} lokalizacji w promieniu {{distance}} {{unit}} od „{{name}}”", + "locationsWithinDistanceOf_one": "{{count}} lokalizacja w promieniu {{distance}} {{unit}} od „{{name}}”", "locationsWithinDistanceOf_other": "{{count}} lokalizacji w promieniu {{distance}} {{unit}} od „{{name}}”", - "locationWithCount_one": "{{count}} lokalizacja", - "locationWithCount_few": "{{count}} lokalizacje", - "locationWithCount_many": "{{count}} lokalizacji", - "locationWithCount_other": "{{count}} lokalizacji", "logo": "Logo", "map": "Mapa", "mapRequiresOptIn": "Ta mapa może być wyświetlana tylko wtedy, gdy włączona jest obsługa plików cookie", "maxWidthTip": "Aby uzyskać optymalne dostosowanie treści, zalecamy ustawienie szerokości nagłówka i stopki w celu dopasowania lub przekroczenia sieci treści strony.", "metaTitleMissingLocales": "Brak tytułu meta dla ustawień regionalnych: {{locales}}", - "mile_one": "mila", "mile_few": "mile", "mile_many": "mil", + "mile_one": "mila", "mile_other": "mili", "missingHtmlWidget": "Dodaj HTML, aby wyświetlić komponent", "monday": "Poniedziałek", @@ -692,9 +692,9 @@ }, "thursday": "Czwartek", "toPublishHeading": "Aby opublikować, usuń następujące błędy:", - "totalReviews_one": "{{count}} recenzja", "totalReviews_few": "{{count}} recenzje", "totalReviews_many": "{{count}} recenzji", + "totalReviews_one": "{{count}} recenzja", "totalReviews_other": "{{count}} recenzji", "tuesday": "Wtorek", "undo": "Anulować", diff --git a/packages/visual-editor/locales/platform/pt/visual-editor.json b/packages/visual-editor/locales/platform/pt/visual-editor.json index c7cdf414d8..9849244577 100644 --- a/packages/visual-editor/locales/platform/pt/visual-editor.json +++ b/packages/visual-editor/locales/platform/pt/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Escolha o vídeo", "clearAll": "Limpar tudo", "close": "Fechar", - "closed": "Fechado", "closeHeaderMenu": "Feche o menu do cabeçalho", "closeMenu": "Feche o menu", + "closed": "Fechado", "closesAtTime": "Fecha às {{time}}", "closesAtTimeWeek": "Fecha às {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Cor de fundo", "bannerText": "Texto do banner", "businessLogo": "Logotipo de negócios", - "buttons": "Botões", "buttonText": "Texto do botão", + "buttons": "Botões", "cardTitleColor": "Cor do título do cartão", "cardVariant": "Variante de cartão", "carouselImageCount": "Contagem de imagens do carrossel", @@ -212,8 +212,8 @@ "emails": "E -mails", "enableLanguageSelector": "Ativar seletor de linguagem", "endDate": "Data de término", - "expandedFooterLinks": "Links expandidos do rodapé", "expandFooter": "Expandir rodapé", + "expandedFooterLinks": "Links expandidos do rodapé", "facebookLink": "Link do Facebook", "faqs": "Perguntas frequentes", "field": "Campo", @@ -247,13 +247,13 @@ "latitude": "Latitude", "limit": "Limite", "link": "Link", - "linkedInLink": "Link LinkedIn", "linkLabel": "Etiqueta do link", + "linkTarget": "Alvo do link", + "linkType": "Tipo de link", + "linkedInLink": "Link LinkedIn", "links": "Links", "linksPosition": "Posição dos links", "linksTooltip": "Os links serão recolhidos automaticamente se a janela de visualização for muito estreita", - "linkTarget": "Alvo do link", - "linkType": "Tipo de link", "listLength": "Comprimento da lista", "liveVisibility": "Visível na página ao vivo", "logoWidth": "Largura do logotipo", @@ -416,9 +416,9 @@ "showAverageReview": "Mostrar revisão média", "showBrow": "Mostrar texto de sobretítulo", "showBusinessName": "Mostrar nome da empresa", + "showCTA": "Mostrar CTA", "showCategory": "Mostrar categoria", "showCredentials": "Mostrar credenciais", - "showCTA": "Mostrar CTA", "showCurrentStatus": "Mostre o status atual", "showDate": "Mostrar data", "showDateTime": "Mostrar data e hora", @@ -472,13 +472,13 @@ }, "filter": "Filtro", "findALocation": "Encontre um local", + "fontSize": "Tamanho da fonte", + "fontSizeDefaultLabel": "Padrão", "fonts": { "choose": "Escolha uma fonte", "notFound": "Nenhuma fonte encontrada.", "search": "Pesquisar fontes ..." }, - "fontSize": "Tamanho da fonte", - "fontSizeDefaultLabel": "Padrão", "friday": "Sexta-feira", "getDirections": "Obtenha direções", "heading": "Cabeçalho", @@ -493,8 +493,8 @@ "informationSection": "Seção de informações", "inheritedDataMsg": "Os dados são herdados da seção pai.", "insight": "Entendimento", - "kilometer_one": "quilômetro", "kilometer_many": "quilômetros", + "kilometer_one": "quilômetro", "kilometer_other": "quilômetros", "knowledgeGraphContent": "Conteúdo do gráfico de conhecimento", "link": "link", @@ -509,22 +509,22 @@ "loadingMap": "Carregando mapa ...", "loadingNearbyLocations": "Carregando locais próximos ...", "loadingVE": "Carregando Editor Visual ...", - "locationsNear_one": "{{count}} localização próxima a \"{{name}}\"", + "locationWithCount_many": "{{count}} locais", + "locationWithCount_one": "{{count}} localização", + "locationWithCount_other": "{{count}} localizações", "locationsNear_many": "{{count}} locais próximos a \"{{name}}\"", + "locationsNear_one": "{{count}} localização próxima a \"{{name}}\"", "locationsNear_other": "{{count}} locais próximos a \"{{name}}\"", - "locationsWithinDistanceOf_one": "{{count}} localização dentro de {{distance}} {{unit}} de \"{{name}}\"", "locationsWithinDistanceOf_many": "{{count}} locais dentro de {{distance}} {{unit}} de \"{{name}}\"", + "locationsWithinDistanceOf_one": "{{count}} localização dentro de {{distance}} {{unit}} de \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} locais dentro de {{distance}} {{unit}} de \"{{name}}\"", - "locationWithCount_one": "{{count}} localização", - "locationWithCount_many": "{{count}} locais", - "locationWithCount_other": "{{count}} localizações", "logo": "Logotipo", "map": "Mapa", "mapRequiresOptIn": "Este mapa só pode ser exibido se os cookies estiverem ativados", "maxWidthTip": "Para um alinhamento ideal de conteúdo, recomendamos definir a largura do cabeçalho e do rodapé para corresponder ou exceder a grade de conteúdo da página.", "metaTitleMissingLocales": "O meta título está faltando para locais: {{locales}}", - "mile_one": "milha", "mile_many": "milhas", + "mile_one": "milha", "mile_other": "milhas", "missingHtmlWidget": "Adicione HTML para visualizar o componente", "monday": "Segunda-feira", @@ -687,8 +687,8 @@ }, "thursday": "Quinta-feira", "toPublishHeading": "Para publicar, resolva os seguintes erros:", - "totalReviews_one": "{{count}} comentário", "totalReviews_many": "{{count}} comentários", + "totalReviews_one": "{{count}} comentário", "totalReviews_other": "{{count}} comentários", "tuesday": "Terça-feira", "undo": "Desfazer", diff --git a/packages/visual-editor/locales/platform/ro/visual-editor.json b/packages/visual-editor/locales/platform/ro/visual-editor.json index c65d951477..92c5630cc6 100644 --- a/packages/visual-editor/locales/platform/ro/visual-editor.json +++ b/packages/visual-editor/locales/platform/ro/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Alegeți videoclipuri", "clearAll": "Ștergeți tot", "close": "Aproape", - "closed": "Închis", "closeHeaderMenu": "Închideți meniul antetului", "closeMenu": "Închideți meniul", + "closed": "Închis", "closesAtTime": "Se închide la {{time}}", "closesAtTimeWeek": "Se închide la {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Culoarea fundalului", "bannerText": "Text banner", "businessLogo": "Logo -ul de afaceri", - "buttons": "Butoane", "buttonText": "Text buton", + "buttons": "Butoane", "cardTitleColor": "Culoarea titlului cardului", "cardVariant": "Varianta card", "carouselImageCount": "Număr de imagini carusel", @@ -212,8 +212,8 @@ "emails": "E -mailuri", "enableLanguageSelector": "Activați selectorul de limbă", "endDate": "Data de încheiere", - "expandedFooterLinks": "Legături de subsol extinse", "expandFooter": "Extinde subsolul", + "expandedFooterLinks": "Legături de subsol extinse", "facebookLink": "Link Facebook", "faqs": "Întrebări frecvente", "field": "Domeniu", @@ -247,13 +247,13 @@ "latitude": "Latitudine", "limit": "Limită", "link": "Legătură", - "linkedInLink": "LinkedIn Link", "linkLabel": "Etichetă de link", + "linkTarget": "Link țintă", + "linkType": "Tip de legătură", + "linkedInLink": "LinkedIn Link", "links": "Link -uri", "linksPosition": "Poziția legăturilor", "linksTooltip": "Linkurile se vor restrânge automat dacă fereastra de vizualizare este prea îngustă", - "linkTarget": "Link țintă", - "linkType": "Tip de legătură", "listLength": "Lungimea listei", "liveVisibility": "Vizibil pe pagina live", "logoWidth": "Lățimea logo -ului", @@ -416,9 +416,9 @@ "showAverageReview": "Afișați recenzia medie", "showBrow": "Afișează textul sprâncenelor", "showBusinessName": "Afișați numele companiei", + "showCTA": "Afișează CTA", "showCategory": "Afișează categoria", "showCredentials": "Afișați acreditările", - "showCTA": "Afișează CTA", "showCurrentStatus": "Afișați starea curentă", "showDate": "Afișează data", "showDateTime": "Afișați data și ora", @@ -472,13 +472,13 @@ }, "filter": "Filtra", "findALocation": "Găsiți o locație", + "fontSize": "Dimensiunea fontului", + "fontSizeDefaultLabel": "Implicit", "fonts": { "choose": "Alegeți un font", "notFound": "Nu au fost găsite fonturi.", "search": "Căutați fonturi ..." }, - "fontSize": "Dimensiunea fontului", - "fontSizeDefaultLabel": "Implicit", "friday": "vineri", "getDirections": "Obțineți indicații", "heading": "Titlu", @@ -493,8 +493,8 @@ "informationSection": "Secțiune de informații", "inheritedDataMsg": "Datele sunt moștenite din secțiunea părinte.", "insight": "Perspectivă", - "kilometer_one": "kilometru", "kilometer_few": "kilometri", + "kilometer_one": "kilometru", "kilometer_other": "kilometri", "knowledgeGraphContent": "Conținut grafic de cunoștințe", "link": "legătură", @@ -509,22 +509,22 @@ "loadingMap": "Harta de încărcare ...", "loadingNearbyLocations": "Încărcarea locațiilor din apropiere ...", "loadingVE": "Încărcarea editorului vizual ...", - "locationsNear_one": "{{count}} locație lângă \"{{name}}\"", + "locationWithCount_few": "{{count}} locații", + "locationWithCount_one": "{{count}} locație", + "locationWithCount_other": "{{count}} locații", "locationsNear_few": "{{count}} locații lângă „{{name}}”", + "locationsNear_one": "{{count}} locație lângă \"{{name}}\"", "locationsNear_other": "{{count}} locații lângă „{{name}}”", - "locationsWithinDistanceOf_one": "{{count}} locație la {{distance}} {{unit}} de „{{name}}”", "locationsWithinDistanceOf_few": "{{count}} locații în {{distance}} {{unit}} din „{{name}}”", + "locationsWithinDistanceOf_one": "{{count}} locație la {{distance}} {{unit}} de „{{name}}”", "locationsWithinDistanceOf_other": "{{count}} locații pe o rază de {{distance}} {{unit}} de „{{name}}”", - "locationWithCount_one": "{{count}} locație", - "locationWithCount_few": "{{count}} locații", - "locationWithCount_other": "{{count}} locații", "logo": "Logo", "map": "Hartă", "mapRequiresOptIn": "Această hartă poate fi afișată numai dacă cookie-urile sunt activate", "maxWidthTip": "Pentru o aliniere optimă a conținutului, vă recomandăm să setați antetul și lățimea subsolului pentru a se potrivi sau a depăși grila de conținut a paginii.", "metaTitleMissingLocales": "Lipsește meta titlul pentru localități: {{locales}}", - "mile_one": "milă", "mile_few": "mile", + "mile_one": "milă", "mile_other": "mile", "missingHtmlWidget": "Adăugați HTML pentru a vizualiza componenta", "monday": "luni", @@ -687,8 +687,8 @@ }, "thursday": "joi", "toPublishHeading": "Pentru a publica, rezolvați următoarele erori:", - "totalReviews_one": "{{count}} recenzie", "totalReviews_few": "{{count}} recenzii", + "totalReviews_one": "{{count}} recenzie", "totalReviews_other": "{{count}} recenzii", "tuesday": "marţi", "undo": "Anula", diff --git a/packages/visual-editor/locales/platform/sk/visual-editor.json b/packages/visual-editor/locales/platform/sk/visual-editor.json index 2d2536dd7c..992c6c5be0 100644 --- a/packages/visual-editor/locales/platform/sk/visual-editor.json +++ b/packages/visual-editor/locales/platform/sk/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Vyberte video", "clearAll": "Vymazať všetko", "close": "Zatvoriť", - "closed": "Zatvorené", "closeHeaderMenu": "Zavrieť ponuku hlavičky", "closeMenu": "Zavrieť menu", + "closed": "Zatvorené", "closesAtTime": "Zatvára sa o {{time}}", "closesAtTimeWeek": "Zatvára sa o {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Farba pozadia", "bannerText": "Text", "businessLogo": "Obchodné logo", - "buttons": "Gombíky", "buttonText": "Text tlačidla", + "buttons": "Gombíky", "cardTitleColor": "Farba názvu karty", "cardVariant": "Variant karty", "carouselImageCount": "Počet obrázkov na kolotoči", @@ -212,8 +212,8 @@ "emails": "E-maily", "enableLanguageSelector": "Povoliť výber jazyka", "endDate": "Dátum ukončenia", - "expandedFooterLinks": "Rozšírené odkazy na päty", "expandFooter": "Rozširovať pätu", + "expandedFooterLinks": "Rozšírené odkazy na päty", "facebookLink": "Odkaz", "faqs": "Časté otázky", "field": "Pole", @@ -247,13 +247,13 @@ "latitude": "Šírka", "limit": "Obmedzenie", "link": "Prepojiť", - "linkedInLink": "LinkedIn link", "linkLabel": "Označenie odkazu", + "linkTarget": "Cieľ odkazu", + "linkType": "Typ odkazu", + "linkedInLink": "LinkedIn link", "links": "Odkazy", "linksPosition": "Pozícia odkazov", "linksTooltip": "Ak je výrez príliš úzky, prepojenia sa automaticky zbalia", - "linkTarget": "Cieľ odkazu", - "linkType": "Typ odkazu", "listLength": "Dĺžka zoznamu", "liveVisibility": "Viditeľné na živej stránke", "logoWidth": "Šírka loga", @@ -416,9 +416,9 @@ "showAverageReview": "Zobraziť priemernú recenziu", "showBrow": "Zobraziť text obočia", "showBusinessName": "Zobraziť obchodný názov", + "showCTA": "Zobraziť výzvu na akciu", "showCategory": "Zobraziť kategóriu", "showCredentials": "Zobraziť poverenia", - "showCTA": "Zobraziť výzvu na akciu", "showCurrentStatus": "Zobraziť aktuálny stav", "showDate": "Zobraziť dátum", "showDateTime": "Zobraziť dátum a čas", @@ -472,13 +472,13 @@ }, "filter": "Filter", "findALocation": "Nájdite miesto", + "fontSize": "Veľkosť písma", + "fontSizeDefaultLabel": "Predvolený", "fonts": { "choose": "Vyberte si písmo", "notFound": "Nenašli sa žiadne písma.", "search": "Vyhľadajte písma ..." }, - "fontSize": "Veľkosť písma", - "fontSizeDefaultLabel": "Predvolený", "friday": "Piatok", "getDirections": "Získajte pokyny", "heading": "Nadpis", @@ -493,9 +493,9 @@ "informationSection": "Sekcia", "inheritedDataMsg": "Údaje sa dedia z nadradenej sekcie.", "insight": "Nahliadnutie", - "kilometer_one": "kilometer", "kilometer_few": "kilometre", "kilometer_many": "kilometrov", + "kilometer_one": "kilometer", "kilometer_other": "kilometrov", "knowledgeGraphContent": "Obsah grafov vedomostí", "link": "prepojiť", @@ -510,26 +510,26 @@ "loadingMap": "Načítava mapa ...", "loadingNearbyLocations": "Načítavanie miest v okolí ...", "loadingVE": "Načítava sa vizuálny editor ...", - "locationsNear_one": "{{count}} umiestnenie blízko „{{name}}“", + "locationWithCount_few": "{{count}} miest", + "locationWithCount_many": "{{count}} miest", + "locationWithCount_one": "{{count}} lokácia", + "locationWithCount_other": "{{count}} lokality", "locationsNear_few": "{{count}} miest v blízkosti „{{name}}“", "locationsNear_many": "{{count}} miest v blízkosti „{{name}}“", + "locationsNear_one": "{{count}} umiestnenie blízko „{{name}}“", "locationsNear_other": "{{count}} miest v blízkosti „{{name}}“", - "locationsWithinDistanceOf_one": "{{count}} miesto v rámci {{distance}} {{unit}} od „{{name}}“", "locationsWithinDistanceOf_few": "{{count}} miest v rámci {{distance}} {{unit}} od „{{name}}“", "locationsWithinDistanceOf_many": "{{count}} miest v rámci {{distance}} {{unit}} od „{{name}}“", + "locationsWithinDistanceOf_one": "{{count}} miesto v rámci {{distance}} {{unit}} od „{{name}}“", "locationsWithinDistanceOf_other": "{{count}} miest v rámci {{distance}} {{unit}} od „{{name}}“", - "locationWithCount_one": "{{count}} lokácia", - "locationWithCount_few": "{{count}} miest", - "locationWithCount_many": "{{count}} miest", - "locationWithCount_other": "{{count}} lokality", "logo": "Logo", "map": "Mapa", "mapRequiresOptIn": "Túto mapu je možné zobraziť iba vtedy, ak sú povolené súbory cookie", "maxWidthTip": "Pre optimálne zarovnanie obsahu odporúčame nastaviť šírku hlavičky a päty tak, aby zodpovedala alebo prekročila mriežku obsahu stránky.", "metaTitleMissingLocales": "Chýba meta názov pre miestne nastavenia: {{locales}}", - "mile_one": "míľa", "mile_few": "míle", "mile_many": "míľ", + "mile_one": "míľa", "mile_other": "míľ", "missingHtmlWidget": "Pridajte HTML na Zobraziť komponent", "monday": "Pondelok", @@ -692,9 +692,9 @@ }, "thursday": "Štvrtok", "toPublishHeading": "Ak chcete publikovať, vyriešte nasledujúce chyby:", - "totalReviews_one": "{{count}} recenzia", "totalReviews_few": "{{count}} recenzie", "totalReviews_many": "{{count}} recenzií", + "totalReviews_one": "{{count}} recenzia", "totalReviews_other": "{{count}} recenzií", "tuesday": "Utorok", "undo": "Rozpustiť", diff --git a/packages/visual-editor/locales/platform/sv/visual-editor.json b/packages/visual-editor/locales/platform/sv/visual-editor.json index c92786c963..6d38afb0c0 100644 --- a/packages/visual-editor/locales/platform/sv/visual-editor.json +++ b/packages/visual-editor/locales/platform/sv/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Välj video", "clearAll": "Rensa alla", "close": "Nära", - "closed": "Stängd", "closeHeaderMenu": "Stäng rubrikmeny", "closeMenu": "Stänga meny", + "closed": "Stängd", "closesAtTime": "Stänger kl. {{time}}", "closesAtTimeWeek": "Stänger kl. {{time}} {{dayOfWeek}}", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Bakgrundsfärg", "bannerText": "Bannertext", "businessLogo": "Affärslogotyp", - "buttons": "Knappar", "buttonText": "Knapptext", + "buttons": "Knappar", "cardTitleColor": "Kortets titelfärg", "cardVariant": "Kortvariant", "carouselImageCount": "Antal karusellbilder", @@ -212,8 +212,8 @@ "emails": "E -postmeddelanden", "enableLanguageSelector": "Aktivera språkväljare", "endDate": "Slutdatum", - "expandedFooterLinks": "Utvidgade sidlänkar", "expandFooter": "Expandera sidfot", + "expandedFooterLinks": "Utvidgade sidlänkar", "facebookLink": "Facebook -länk", "faqs": "Vanliga frågor", "field": "Fält", @@ -247,13 +247,13 @@ "latitude": "Latitud", "limit": "Begränsa", "link": "Länk", - "linkedInLink": "LinkedIn -länk", "linkLabel": "Länketikett", + "linkTarget": "Länkmål", + "linkType": "Länktyp", + "linkedInLink": "LinkedIn -länk", "links": "Länkar", "linksPosition": "Länkar Position", "linksTooltip": "Länkar kommer automatiskt att kollapsa om visningsporten är för smal", - "linkTarget": "Länkmål", - "linkType": "Länktyp", "listLength": "Listlängd", "liveVisibility": "Synlig på live -sidan", "logoWidth": "Logotypbredd", @@ -416,9 +416,9 @@ "showAverageReview": "Visa genomsnittlig recension", "showBrow": "Visa ögonbrynstext", "showBusinessName": "Visa företagsnamn", + "showCTA": "Visa CTA", "showCategory": "Visa kategori", "showCredentials": "Visa meriter", - "showCTA": "Visa CTA", "showCurrentStatus": "Visa aktuell status", "showDate": "Visa datum", "showDateTime": "Visa datum och tid", @@ -472,13 +472,13 @@ }, "filter": "Filtrera", "findALocation": "Hitta en plats", + "fontSize": "Fontstorlek", + "fontSizeDefaultLabel": "Standard", "fonts": { "choose": "Välj ett teckensnitt", "notFound": "Inga teckensnitt hittades.", "search": "Sök teckensnitt ..." }, - "fontSize": "Fontstorlek", - "fontSizeDefaultLabel": "Standard", "friday": "Fredag", "getDirections": "Få vägbeskrivning", "heading": "Rubrik", @@ -508,12 +508,12 @@ "loadingMap": "Laddar karta ...", "loadingNearbyLocations": "Laddar närliggande platser ...", "loadingVE": "Laddar visuell redaktör ...", + "locationWithCount_one": "{{count}} Plats", + "locationWithCount_other": "{{count}} Platser", "locationsNear_one": "{{count}} Plats nära \"{{name}}\"", "locationsNear_other": "{{count}} platser nära \"{{name}}\"", "locationsWithinDistanceOf_one": "{{count}} plats inom {{distance}} {{unit}} från \"{{name}}\"", "locationsWithinDistanceOf_other": "{{count}} platser inom {{distance}} {{unit}} från \"{{name}}\"", - "locationWithCount_one": "{{count}} Plats", - "locationWithCount_other": "{{count}} Platser", "logo": "Logotyp", "map": "Karta", "mapRequiresOptIn": "Denna karta kan endast visas om cookies är aktiverade", diff --git a/packages/visual-editor/locales/platform/tr/visual-editor.json b/packages/visual-editor/locales/platform/tr/visual-editor.json index 90100d88a9..3a7ef8b77a 100644 --- a/packages/visual-editor/locales/platform/tr/visual-editor.json +++ b/packages/visual-editor/locales/platform/tr/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "Video seçin", "clearAll": "Tümünü Temizle", "close": "Kapalı", - "closed": "Kapalı", "closeHeaderMenu": "Başlık menüsünü kapat", "closeMenu": "Kapat Menüsü", + "closed": "Kapalı", "closesAtTime": "{{time}} itibarıyla kapanıyor", "closesAtTimeWeek": "{{time}} {{dayOfWeek}} itibarıyla kapanıyor", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "Arka plan rengi", "bannerText": "Banner metni", "businessLogo": "İş logosu", - "buttons": "Düğmeler", "buttonText": "Düğme Metni", + "buttons": "Düğmeler", "cardTitleColor": "Kart Başlığı Rengi", "cardVariant": "Kart Varyantı", "carouselImageCount": "Atlıkarınca Resim Sayısı", @@ -212,8 +212,8 @@ "emails": "E -postalar", "enableLanguageSelector": "Dil seçicisini etkinleştir", "endDate": "Bitiş Tarihi", - "expandedFooterLinks": "Genişletilmiş altbilgi bağlantıları", "expandFooter": "Altbilgi genişlet", + "expandedFooterLinks": "Genişletilmiş altbilgi bağlantıları", "facebookLink": "Facebook bağlantısı", "faqs": "SSS", "field": "Alan", @@ -247,13 +247,13 @@ "latitude": "Enlem", "limit": "Sınırlamak", "link": "Bağlantı", - "linkedInLink": "LinkedIn Link", "linkLabel": "Bağlantı Etiketi", + "linkTarget": "Bağlantı Hedefi", + "linkType": "Bağlantı türü", + "linkedInLink": "LinkedIn Link", "links": "Bağlar", "linksPosition": "Bağlantı Konumu", "linksTooltip": "Görünüm çok darsa bağlantılar otomatik olarak daraltılır", - "linkTarget": "Bağlantı Hedefi", - "linkType": "Bağlantı türü", "listLength": "Liste uzunluğu", "liveVisibility": "Canlı sayfada görünür", "logoWidth": "Logo genişliği", @@ -416,9 +416,9 @@ "showAverageReview": "Ortalama incelemeyi göster", "showBrow": "Kaş Metnini Göster", "showBusinessName": "İşletme Adını Göster", + "showCTA": "CTA'yı göster", "showCategory": "Kategoriyi Göster", "showCredentials": "Kimlik Bilgilerini Göster", - "showCTA": "CTA'yı göster", "showCurrentStatus": "Mevcut Durumu Göster", "showDate": "Tarihi Göster", "showDateTime": "Tarih ve Saati Göster", @@ -472,13 +472,13 @@ }, "filter": "Filtre", "findALocation": "Bir Konum Bul", + "fontSize": "Yazı tipi boyutu", + "fontSizeDefaultLabel": "Varsayılan", "fonts": { "choose": "Bir yazı tipi seçin", "notFound": "Yazı tipi bulunamadı.", "search": "Yazı tiplerini arama ..." }, - "fontSize": "Yazı tipi boyutu", - "fontSizeDefaultLabel": "Varsayılan", "friday": "Cuma", "getDirections": "Yol tarifi alın", "heading": "Başlık", @@ -508,12 +508,12 @@ "loadingMap": "Yükleme haritası ...", "loadingNearbyLocations": "Yakındaki yerleri yükleme ...", "loadingVE": "Görsel Editör Yükleme ...", + "locationWithCount_one": "{{count}} Konum", + "locationWithCount_other": "{{count}} konumlar", "locationsNear_one": "{{count}} konum \"{{name}}\" yakınında yer", "locationsNear_other": "\"{{name}}\" yakınındaki {{count}} konum", "locationsWithinDistanceOf_one": "\"{{name}}\" 'a {{distance}} {{unit}} mesafede {{count}} konum", "locationsWithinDistanceOf_other": "\"{{name}}\" 'den {{distance}} {{unit}} uzaklıktaki {{count}} konum", - "locationWithCount_one": "{{count}} Konum", - "locationWithCount_other": "{{count}} konumlar", "logo": "Logo", "map": "Harita", "mapRequiresOptIn": "Bu harita yalnızca çerezler etkinse görüntülenebilir", diff --git a/packages/visual-editor/locales/platform/zh-TW/visual-editor.json b/packages/visual-editor/locales/platform/zh-TW/visual-editor.json index b382cdae48..ff55e52a4d 100644 --- a/packages/visual-editor/locales/platform/zh-TW/visual-editor.json +++ b/packages/visual-editor/locales/platform/zh-TW/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "選擇視頻", "clearAll": "全部清除", "close": "關閉", - "closed": "關閉", "closeHeaderMenu": "關閉標題菜單", "closeMenu": "關閉菜單", + "closed": "關閉", "closesAtTime": "於 {{time}} 關閉", "closesAtTimeWeek": "於 {{time}} {{dayOfWeek}} 關閉", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "背景顏色", "bannerText": "橫幅文字", "businessLogo": "業務徽標", - "buttons": "按鈕", "buttonText": "按鈕文字", + "buttons": "按鈕", "cardTitleColor": "卡片標題顏色", "cardVariant": "卡牌變體", "carouselImageCount": "輪播圖像計數", @@ -212,8 +212,8 @@ "emails": "電子郵件", "enableLanguageSelector": "啟用語言選擇器", "endDate": "結束日期", - "expandedFooterLinks": "擴展的頁腳鍊接", "expandFooter": "擴展頁腳", + "expandedFooterLinks": "擴展的頁腳鍊接", "facebookLink": "Facebook鏈接", "faqs": "常見問題解答", "field": "場地", @@ -247,13 +247,13 @@ "latitude": "緯度", "limit": "限制", "link": "鏈接", - "linkedInLink": "LinkedIn鏈接", "linkLabel": "鏈接標籤", + "linkTarget": "鏈接目標", + "linkType": "鏈接類型", + "linkedInLink": "LinkedIn鏈接", "links": "鏈接", "linksPosition": "鏈接位置", "linksTooltip": "如果視口太窄,鏈接將自動折疊", - "linkTarget": "鏈接目標", - "linkType": "鏈接類型", "listLength": "列表長度", "liveVisibility": "在現場頁面上可見", "logoWidth": "徽標寬度", @@ -416,9 +416,9 @@ "showAverageReview": "顯示平均評論", "showBrow": "顯示眉毛文字", "showBusinessName": "顯示公司名稱", + "showCTA": "顯示號召性用語", "showCategory": "顯示類別", "showCredentials": "顯示憑證", - "showCTA": "顯示號召性用語", "showCurrentStatus": "顯示當前狀態", "showDate": "演出日期", "showDateTime": "顯示日期和時間", @@ -472,13 +472,13 @@ }, "filter": "篩選", "findALocation": "找到一個位置", + "fontSize": "字體大小", + "fontSizeDefaultLabel": "預設", "fonts": { "choose": "選擇一個字體", "notFound": "找不到字體。", "search": "搜索字體..." }, - "fontSize": "字體大小", - "fontSizeDefaultLabel": "預設", "friday": "星期五", "getDirections": "獲取指示", "heading": "標題", @@ -508,12 +508,12 @@ "loadingMap": "加載地圖...", "loadingNearbyLocations": "在附近的位置加載...", "loadingVE": "加載視覺編輯器...", + "locationWithCount_one": "{{count}} 個位置", + "locationWithCount_other": "{{count}} 個位置", "locationsNear_one": "“{{name}}”附近有 {{count}} 個位置", "locationsNear_other": "“{{name}}”附近有 {{count}} 個位置", "locationsWithinDistanceOf_one": "“{{name}}”的 {{distance}} {{unit}} 內有 {{count}} 個位置", "locationsWithinDistanceOf_other": "“{{name}}”的 {{distance}} {{unit}} 內有 {{count}} 個位置", - "locationWithCount_one": "{{count}} 個位置", - "locationWithCount_other": "{{count}} 個位置", "logo": "標識", "map": "地圖", "mapRequiresOptIn": "該地圖僅在啟用cookies的情況下才能顯示", diff --git a/packages/visual-editor/locales/platform/zh/visual-editor.json b/packages/visual-editor/locales/platform/zh/visual-editor.json index 79da6a401a..2064ab52a5 100644 --- a/packages/visual-editor/locales/platform/zh/visual-editor.json +++ b/packages/visual-editor/locales/platform/zh/visual-editor.json @@ -41,9 +41,9 @@ "chooseVideo": "选择视频", "clearAll": "全部清除", "close": "关闭", - "closed": "关闭", "closeHeaderMenu": "关闭标题菜单", "closeMenu": "关闭菜单", + "closed": "关闭", "closesAtTime": "于 {{time}} 关闭", "closesAtTimeWeek": "于 {{time}} {{dayOfWeek}} 关闭", "componentErrorBoundary": { @@ -173,8 +173,8 @@ "backgroundColor": "背景颜色", "bannerText": "横幅文字", "businessLogo": "业务徽标", - "buttons": "按钮", "buttonText": "按钮文字", + "buttons": "按钮", "cardTitleColor": "卡片标题颜色", "cardVariant": "卡片变体", "carouselImageCount": "轮播图像计数", @@ -212,8 +212,8 @@ "emails": "电子邮件", "enableLanguageSelector": "启用语言选择器", "endDate": "结束日期", - "expandedFooterLinks": "扩展的页脚链接", "expandFooter": "扩展页脚", + "expandedFooterLinks": "扩展的页脚链接", "facebookLink": "Facebook链接", "faqs": "常见问题解答", "field": "场地", @@ -247,13 +247,13 @@ "latitude": "纬度", "limit": "限制", "link": "关联", - "linkedInLink": "LinkedIn链接", "linkLabel": "链接标签", + "linkTarget": "链接目标", + "linkType": "链接类型", + "linkedInLink": "LinkedIn链接", "links": "链接", "linksPosition": "链接位置", "linksTooltip": "如果视口太窄,链接将自动折叠", - "linkTarget": "链接目标", - "linkType": "链接类型", "listLength": "列表长度", "liveVisibility": "在现场页面上可见", "logoWidth": "徽标宽度", @@ -416,9 +416,9 @@ "showAverageReview": "显示平均评论", "showBrow": "显示眉标题", "showBusinessName": "显示公司名称", + "showCTA": "显示号召性用语", "showCategory": "显示类别", "showCredentials": "显示凭证", - "showCTA": "显示号召性用语", "showCurrentStatus": "显示当前状态", "showDate": "显示日期", "showDateTime": "显示日期和时间", @@ -472,13 +472,13 @@ }, "filter": "筛选", "findALocation": "找到一个位置", + "fontSize": "字体大小", + "fontSizeDefaultLabel": "默认", "fonts": { "choose": "选择一个字体", "notFound": "找不到字体。", "search": "搜索字体..." }, - "fontSize": "字体大小", - "fontSizeDefaultLabel": "默认", "friday": "星期五", "getDirections": "获取指示", "heading": "标题", @@ -508,12 +508,12 @@ "loadingMap": "加载地图...", "loadingNearbyLocations": "在附近的位置加载...", "loadingVE": "加载视觉编辑器...", + "locationWithCount_one": "{{count}} 个位置", + "locationWithCount_other": "{{count}} 个位置", "locationsNear_one": "“{{name}}”附近有 {{count}} 个位置", "locationsNear_other": "“{{name}}”附近有 {{count}} 个地点", "locationsWithinDistanceOf_one": "“{{name}}”的 {{distance}} {{unit}} 内有 {{count}} 个位置", "locationsWithinDistanceOf_other": "“{{name}}”的 {{distance}} {{unit}} 内有 {{count}} 个位置", - "locationWithCount_one": "{{count}} 个位置", - "locationWithCount_other": "{{count}} 个位置", "logo": "标识", "map": "地图", "mapRequiresOptIn": "该地图仅在启用cookies的情况下才能显示", diff --git a/packages/visual-editor/package.json b/packages/visual-editor/package.json index 8bab5e4c3f..5b9d3e540a 100644 --- a/packages/visual-editor/package.json +++ b/packages/visual-editor/package.json @@ -53,7 +53,8 @@ "i18n:propagate:components": "pnpm exec tsx scripts/propagatePlatformToComponents.ts", "i18n:check:interpolation": "pnpm exec tsx scripts/checkInterpolationVariables.ts", "i18n:lint": "i18next-cli lint --config i18next-cli.platform.config.ts --quiet && i18next-cli lint --config i18next-cli.components.config.ts --quiet && pnpm run i18n:check:interpolation", - "i18n:update": "pnpm run i18n:extract:platform && pnpm run i18n:extract:components && pnpm run i18n:translate:platform && pnpm run i18n:propagate:components && pnpm run i18n:lint" + "i18n:update": "pnpm run i18n:extract:platform && pnpm run i18n:extract:components && pnpm run i18n:translate:platform && pnpm run i18n:propagate:components && pnpm run i18n:translate:components:component-defaults && pnpm run i18n:lint", + "i18n:translate:components:component-defaults": "pnpm exec tsx scripts/generateTranslations.ts --type components --scope componentDefaults" }, "dependencies": { "@microsoft/api-documenter": "^7.26.29", diff --git a/packages/visual-editor/scripts/generateTranslations.ts b/packages/visual-editor/scripts/generateTranslations.ts index 2bf98164ba..c65b57e03e 100644 --- a/packages/visual-editor/scripts/generateTranslations.ts +++ b/packages/visual-editor/scripts/generateTranslations.ts @@ -4,18 +4,23 @@ import { getSubdirectoryNames, loadJsonSafe, saveJson, + sortObject, type FlatTranslations, unflatten, } from "../src/utils/i18n/jsonUtils.ts"; /** - * Fills missing platform locale values using Google Translate. + * Fills missing locale values using Google Translate. + * + * Supports: + * - Platform translation mode: `--type platform` + * - Scoped component mode: `--type components --scope componentDefaults` * * Behavior: - * - Reads English source strings from locales/platform/en/visual-editor.json. - * - Translates only missing/empty keys in non-English platform locale files. + * - Reads English source strings from `locales//en/visual-editor.json`. + * - Translates only missing/empty keys in non-English locale files. * - Adds contextual hints to ambiguous keys and removes them after translation. - * - Preserves nested object JSON shape on disk. + * - Preserves JSON shape on disk. */ const DEFAULT_LANGUAGE = "en"; const NAMESPACE = "visual-editor"; @@ -28,37 +33,102 @@ const CONTEXT_MARKER_END = "]]"; const PLURAL_SUFFIXES = new Set(["zero", "one", "two", "few", "many", "other"]); const INTERPOLATION_REGEX = /\{\{\s*([^{}]+?)\s*\}\}/g; -type TranslationType = "platform"; +type TranslationType = "platform" | "components"; +type TranslationScope = "componentDefaults"; interface MaskedVariable { token: string; original: string; } -interface TranslationTarget { +type TranslationTarget = { key: string; english: string; sourceKey: string; -} +}; type GoogleTranslationSegment = [translatedText: string, ...rest: unknown[]]; type GoogleTranslateResponse = [GoogleTranslationSegment[], ...rest: unknown[]]; -/** - * Reads and validates the --type argument. - * This script intentionally supports "platform" only. - */ +type TranslationOptions = { + type: TranslationType; + scope?: TranslationScope; +}; + +const getArgValue = (flag: string): string | undefined => { + const index = process.argv.findIndex((arg) => arg === flag); + if (index < 0 || index + 1 >= process.argv.length) { + return undefined; + } + + return process.argv[index + 1]; +}; + const getTypeArg = (): TranslationType => { - const index = process.argv.findIndex((arg) => arg === "--type"); - const raw = index >= 0 ? process.argv[index + 1] : "platform"; + const raw = getArgValue("--type") ?? "platform"; + + if (raw !== "platform" && raw !== "components") { + throw new Error( + `Unsupported --type "${raw}". Supported values are "platform" and "components".` + ); + } + + return raw; +}; + +const getScopeArg = (): TranslationScope | undefined => { + const raw = getArgValue("--scope"); + if (!raw) { + return undefined; + } - if (raw !== "platform") { + if (raw !== "componentDefaults") { throw new Error( - `Unsupported --type "${raw}". This script only supports "--type platform".` + `Unsupported --scope "${raw}". Supported values are "componentDefaults".` ); } - return "platform"; + return raw; +}; + +const getTranslationOptions = (): TranslationOptions => { + const type = getTypeArg(); + const scope = getScopeArg(); + + if (type === "components" && scope !== "componentDefaults") { + throw new Error( + "When --type components is used, --scope componentDefaults is required." + ); + } + + if (type === "platform" && scope) { + throw new Error("--scope is not supported for --type platform."); + } + + return { + type, + scope, + }; +}; + +/** + * Returns a key prefix filter for scoped translation runs. + */ +const getScopePrefix = (scope?: TranslationScope): string | undefined => { + if (scope === "componentDefaults") { + return "componentDefaults."; + } + + return undefined; +}; + +const isKeyInScope = (key: string, scope?: TranslationScope): boolean => { + const scopePrefix = getScopePrefix(scope); + if (!scopePrefix) { + return true; + } + + return key.startsWith(scopePrefix); }; /** @@ -187,7 +257,7 @@ const removeEmbeddedContext = (text: string): string => { }; /** - * Replaces interpolation placeholders with stable sentinel tokens before MT. + * Replaces interpolation placeholders with sentinel tokens before MT. * This reduces the chance providers translate variable names. */ const maskInterpolationVariables = ( @@ -219,9 +289,6 @@ const unmaskInterpolationVariables = ( return output; }; -/** - * Lists locale folders under locales/. - */ const getTargetLanguages = async (type: TranslationType): Promise => { const dir = path.join(LOCALES_DIR, type); const entries = await getSubdirectoryNames(dir, { suppressMissing: true }); @@ -266,9 +333,13 @@ const translateText = async ( }; /** - * Translates missing keys for all non-primary locales of a translation type. + * Translates missing keys for all non-primary locales for a translation mode. + * When `scope` is provided, only keys in that scope are considered. */ -const translateFile = async (type: TranslationType): Promise => { +const translateFile = async ({ + type, + scope, +}: TranslationOptions): Promise => { const defaultPath = path.join( LOCALES_DIR, type, @@ -276,7 +347,9 @@ const translateFile = async (type: TranslationType): Promise => { `${NAMESPACE}.json` ); const defaultJson = flatten(await loadJsonSafe(defaultPath)); - const defaultKeySet = new Set(Object.keys(defaultJson)); + const defaultKeySet = new Set( + Object.keys(defaultJson).filter((key) => isKeyInScope(key, scope)) + ); for (const locale of await getTargetLanguages(type)) { if (locale === DEFAULT_LANGUAGE) { @@ -302,6 +375,10 @@ const translateFile = async (type: TranslationType): Promise => { const translationTargets: TranslationTarget[] = []; for (const key of candidateKeys) { + if (!isKeyInScope(key, scope)) { + continue; + } + const value = cache.get(key.trim()); if (value !== undefined && value !== "") { continue; @@ -320,12 +397,16 @@ const translateFile = async (type: TranslationType): Promise => { } if (translationTargets.length === 0) { - console.log(`No missing translations for [${type}/${locale}].`); + const scopeLabel = scope ? `/${scope}` : ""; + console.log( + `No missing translations for [${type}${scopeLabel}/${locale}].` + ); continue; } + const scopeLabel = scope ? `/${scope}` : ""; console.log( - `Translating ${translationTargets.length} keys for [${type}/${locale}]...` + `Translating ${translationTargets.length} keys for [${type}${scopeLabel}/${locale}]...` ); let successCount = 0; @@ -346,6 +427,7 @@ const translateFile = async (type: TranslationType): Promise => { if (context) { translated = removeEmbeddedContext(translated); } + translated = unmaskInterpolationVariables(translated, variables); cache.set(key.trim(), translated); @@ -360,7 +442,9 @@ const translateFile = async (type: TranslationType): Promise => { }) ); - const finalJson = unflatten(Object.fromEntries(cache) as FlatTranslations); + const finalJson = sortObject( + unflatten(Object.fromEntries(cache) as FlatTranslations) + ); if (!isDryRun) { await saveJson(targetPath, finalJson); } @@ -374,8 +458,8 @@ const translateFile = async (type: TranslationType): Promise => { /** * Script entrypoint. */ -const type = getTypeArg(); -translateFile(type).catch((error) => { +const options = getTranslationOptions(); +translateFile(options).catch((error) => { console.error(error); process.exit(1); }); diff --git a/packages/visual-editor/src/components/Locator.tsx b/packages/visual-editor/src/components/Locator.tsx index cba0553ff8..5149076f1f 100644 --- a/packages/visual-editor/src/components/Locator.tsx +++ b/packages/visual-editor/src/components/Locator.tsx @@ -54,6 +54,7 @@ import { toMeters, toMiles, } from "../utils/i18n/distance.ts"; +import { defaultText } from "../utils/defaultContent.ts"; import { msg } from "../utils/i18n/platform.ts"; import { resolveComponentData } from "../utils/resolveComponentData.tsx"; import { @@ -83,7 +84,6 @@ const DEFAULT_MAP_CENTER: [number, number] = [-74.005371, 40.741611]; // New Yor const DEFAULT_RADIUS = 25; const HOURS_FIELD = "builtin.hours"; const INITIAL_LOCATION_KEY = "initialLocation"; -const DEFAULT_TITLE = "Find a Location"; const translateDistanceUnit = ( t: (key: string, options?: Record) => string, @@ -598,10 +598,7 @@ export const LocatorComponent: ComponentConfig<{ props: LocatorProps }> = { showDistanceOptions: false, }, pageHeading: { - title: { - en: DEFAULT_TITLE, - hasLocalizedValue: "true", - }, + title: defaultText("componentDefaults.findALocation", "Find a Location"), }, resultCard: DEFAULT_LOCATOR_RESULT_CARD_PROPS, }, diff --git a/packages/visual-editor/src/components/contentBlocks/BodyText.tsx b/packages/visual-editor/src/components/contentBlocks/BodyText.tsx index 1103a53a44..fa2f9056e7 100644 --- a/packages/visual-editor/src/components/contentBlocks/BodyText.tsx +++ b/packages/visual-editor/src/components/contentBlocks/BodyText.tsx @@ -12,6 +12,7 @@ import { TranslatableRichText } from "../../types/types.ts"; import { useBackground } from "../../hooks/useBackground.tsx"; import { resolveDataFromParent } from "../../editor/ParentData.tsx"; import { BackgroundStyle } from "../../index.ts"; +import { defaultRichText } from "../../utils/defaultContent.ts"; export type BodyTextProps = { data: { @@ -114,10 +115,7 @@ export const BodyText: ComponentConfig<{ props: BodyTextProps }> = { data: { text: { field: "", - constantValue: { - en: "Text", - hasLocalizedValue: "true", - }, + constantValue: defaultRichText("componentDefaults.text", "Text"), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/contentBlocks/CtaWrapper.tsx b/packages/visual-editor/src/components/contentBlocks/CtaWrapper.tsx index 50a5feef82..e0fe07c051 100644 --- a/packages/visual-editor/src/components/contentBlocks/CtaWrapper.tsx +++ b/packages/visual-editor/src/components/contentBlocks/CtaWrapper.tsx @@ -24,6 +24,7 @@ import { ctaTypeOptions, getCTAType, } from "../../internal/puck/constant-value-fields/EnhancedCallToAction.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface CTAWrapperProps { data: { @@ -297,17 +298,11 @@ export const CTAWrapper: ComponentConfig<{ props: CTAWrapperProps }> = { }, selectedType: "textAndLink", }, - buttonText: { - en: "Button", - hasLocalizedValue: "true", - }, + buttonText: defaultText("componentDefaults.button", "Button"), customId: "", customClass: "", dataAttributes: [], - ariaLabel: { - en: "Button", - hasLocalizedValue: "true", - }, + ariaLabel: defaultText("componentDefaults.button", "Button"), }, styles: { variant: "primary", diff --git a/packages/visual-editor/src/components/contentBlocks/HeadingText.tsx b/packages/visual-editor/src/components/contentBlocks/HeadingText.tsx index 1a73bbd7c9..4cd9d91e38 100644 --- a/packages/visual-editor/src/components/contentBlocks/HeadingText.tsx +++ b/packages/visual-editor/src/components/contentBlocks/HeadingText.tsx @@ -15,6 +15,7 @@ import { } from "../../utils/themeConfigOptions.ts"; import { resolveDataFromParent } from "../../editor/ParentData.tsx"; import { useTranslation } from "react-i18next"; +import { defaultText } from "../../utils/defaultContent.ts"; export type HeadingTextProps = { /** The heading text value */ @@ -131,10 +132,7 @@ export const HeadingText: ComponentConfig<{ props: HeadingTextProps }> = { data: { text: { field: "", - constantValue: { - en: "Text", - hasLocalizedValue: "true", - }, + constantValue: defaultText("componentDefaults.text", "Text"), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/contentBlocks/Phone.tsx b/packages/visual-editor/src/components/contentBlocks/Phone.tsx index a101e67d41..f423d0d782 100644 --- a/packages/visual-editor/src/components/contentBlocks/Phone.tsx +++ b/packages/visual-editor/src/components/contentBlocks/Phone.tsx @@ -10,6 +10,7 @@ import { YextField } from "../../editor/YextField.tsx"; import { TranslatableString } from "../../types/types.ts"; import { backgroundColors } from "../../utils/themeConfigOptions.ts"; import { resolveDataFromParent } from "../../editor/ParentData.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; /** The props for the Phone component */ export interface PhoneProps { @@ -81,10 +82,7 @@ export const defaultPhoneDataProps: PhoneProps["data"] = { field: "mainPhone", constantValue: "", }, - label: { - en: "Phone", - hasLocalizedValue: "true", - }, + label: defaultText("componentDefaults.phone", "Phone"), }; export const PhoneFields: Fields = { diff --git a/packages/visual-editor/src/components/contentBlocks/Text.tsx b/packages/visual-editor/src/components/contentBlocks/Text.tsx index 4f40a47266..e856af9533 100644 --- a/packages/visual-editor/src/components/contentBlocks/Text.tsx +++ b/packages/visual-editor/src/components/contentBlocks/Text.tsx @@ -13,6 +13,7 @@ import { resolveDataFromParent } from "../../editor/ParentData.tsx"; import { BackgroundStyle } from "../../utils/themeConfigOptions.ts"; import { normalizeThemeColor } from "../../utils/normalizeThemeColor.ts"; import { themeManagerCn } from "../../utils/cn.ts"; +import { defaultText } from "../../utils/defaultContent.ts"; export type TextProps = { data: { @@ -136,10 +137,7 @@ export const Text: ComponentConfig<{ props: TextProps }> = { data: { text: { field: "", - constantValue: { - en: "Text", - hasLocalizedValue: "true", - }, + constantValue: defaultText("componentDefaults.text", "Text"), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/contentBlocks/image/Image.tsx b/packages/visual-editor/src/components/contentBlocks/image/Image.tsx index 2e5728e63c..d012bfd723 100644 --- a/packages/visual-editor/src/components/contentBlocks/image/Image.tsx +++ b/packages/visual-editor/src/components/contentBlocks/image/Image.tsx @@ -152,7 +152,7 @@ const ImageWrapperComponent: PuckComponent = (props) => { (typeof imageUrl === "string" && imageUrl.trim() === ""); const inputLink = resolveComponentData( - data.link ?? { en: DEFAULT_LINK, hasLocalizedValue: "true" as const }, + data.link ?? DEFAULT_LINK, i18n.language, streamDocument ); @@ -238,7 +238,7 @@ export const imageDefaultProps = { }, constantValueEnabled: true, }, - link: { en: DEFAULT_LINK, hasLocalizedValue: "true" as const }, + link: DEFAULT_LINK, }, styles: { aspectRatio: 1.78, diff --git a/packages/visual-editor/src/components/directory/Directory.tsx b/packages/visual-editor/src/components/directory/Directory.tsx index 113d484348..14f6961f91 100644 --- a/packages/visual-editor/src/components/directory/Directory.tsx +++ b/packages/visual-editor/src/components/directory/Directory.tsx @@ -13,6 +13,7 @@ import { ComponentConfig, Fields, PuckComponent, Slot } from "@puckeditor/core"; import { AnalyticsScopeProvider } from "@yext/pages-components"; import { DirectoryList } from "./DirectoryWrapper.tsx"; import { isDirectoryGrid } from "../../utils/directory/utils.ts"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface DirectoryStyles { /** @@ -128,10 +129,7 @@ export const Directory: ComponentConfig<{ props: DirectoryProps }> = { props: { data: { text: { - constantValue: { - en: "", - hasLocalizedValue: "true", - }, + constantValue: "", constantValueEnabled: false, field: "name", }, @@ -146,10 +144,7 @@ export const Directory: ComponentConfig<{ props: DirectoryProps }> = { props: { data: { text: { - constantValue: { - en: "", - hasLocalizedValue: "true", - }, + constantValue: "", constantValueEnabled: true, field: "name", }, @@ -163,10 +158,10 @@ export const Directory: ComponentConfig<{ props: DirectoryProps }> = { type: "BreadcrumbsSlot", props: { data: { - directoryRoot: { - en: "Directory Root", - hasLocalizedValue: "true", - }, + directoryRoot: defaultText( + "componentDefaults.directoryRoot", + "Directory Root" + ), }, styles: { backgroundColor: backgroundColors.background1.value, diff --git a/packages/visual-editor/src/components/footer/CopyrightMessageSlot.tsx b/packages/visual-editor/src/components/footer/CopyrightMessageSlot.tsx index fd8cdce2cb..7b04a08d0d 100644 --- a/packages/visual-editor/src/components/footer/CopyrightMessageSlot.tsx +++ b/packages/visual-editor/src/components/footer/CopyrightMessageSlot.tsx @@ -56,10 +56,7 @@ const CopyrightMessageSlotInternal: PuckComponent = ( export const defaultCopyrightMessageSlotProps: CopyrightMessageSlotProps = { data: { - text: { - en: "", - hasLocalizedValue: "true", - }, + text: "", }, }; diff --git a/packages/visual-editor/src/components/footer/ExpandedFooter.tsx b/packages/visual-editor/src/components/footer/ExpandedFooter.tsx index 33e1f23042..d942128cdc 100644 --- a/packages/visual-editor/src/components/footer/ExpandedFooter.tsx +++ b/packages/visual-editor/src/components/footer/ExpandedFooter.tsx @@ -10,16 +10,14 @@ import { Background } from "../atoms/background.tsx"; import { PageSection, PageSectionProps } from "../atoms/pageSection.tsx"; import { themeManagerCn } from "../../utils/cn.ts"; import { defaultCopyrightMessageSlotProps } from "./CopyrightMessageSlot.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; const PLACEHOLDER_LOGO_IMAGE: string = "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg"; export const defaultLink = { linkType: "URL" as const, - label: { - en: "Footer Link", - hasLocalizedValue: "true" as const, - }, + label: defaultText("componentDefaults.footerLink", "Footer Link"), link: "#", openInNewTab: false, }; @@ -322,7 +320,7 @@ export const ExpandedFooter: ComponentConfig<{ props: ExpandedFooterProps }> = { url: PLACEHOLDER_LOGO_IMAGE, height: 100, width: 100, - alternateText: { en: "Logo", hasLocalizedValue: "true" }, + alternateText: defaultText("componentDefaults.logo", "Logo"), }, constantValueEnabled: true, }, @@ -383,19 +381,31 @@ export const ExpandedFooter: ComponentConfig<{ props: ExpandedFooterProps }> = { data: { sections: [ { - label: { en: "Footer Label", hasLocalizedValue: "true" }, + label: defaultText( + "componentDefaults.footerLabel", + "Footer Label" + ), links: defaultLinks, }, { - label: { en: "Footer Label", hasLocalizedValue: "true" }, + label: defaultText( + "componentDefaults.footerLabel", + "Footer Label" + ), links: defaultLinks, }, { - label: { en: "Footer Label", hasLocalizedValue: "true" }, + label: defaultText( + "componentDefaults.footerLabel", + "Footer Label" + ), links: defaultLinks, }, { - label: { en: "Footer Label", hasLocalizedValue: "true" }, + label: defaultText( + "componentDefaults.footerLabel", + "Footer Label" + ), links: defaultLinks, }, ], diff --git a/packages/visual-editor/src/components/footer/FooterExpandedLinkSectionSlot.tsx b/packages/visual-editor/src/components/footer/FooterExpandedLinkSectionSlot.tsx index a2e7b1dc62..cf32154c92 100644 --- a/packages/visual-editor/src/components/footer/FooterExpandedLinkSectionSlot.tsx +++ b/packages/visual-editor/src/components/footer/FooterExpandedLinkSectionSlot.tsx @@ -12,6 +12,7 @@ import { i18nComponentsInstance } from "../../utils/i18n/components.ts"; import { useBackground } from "../../hooks/useBackground.tsx"; import { useTranslation } from "react-i18next"; import { defaultLink, defaultLinks } from "./ExpandedFooter.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface FooterExpandedLinkSectionSlotProps { data: { @@ -79,7 +80,10 @@ const defaultFooterExpandedLinkSectionProps: FooterExpandedLinkSectionSlotProps data: { label: { field: "", - constantValue: { en: "Footer Label", hasLocalizedValue: "true" }, + constantValue: defaultText( + "componentDefaults.footerLabel", + "Footer Label" + ), constantValueEnabled: true, }, links: defaultLinks, diff --git a/packages/visual-editor/src/components/footer/FooterExpandedLinksWrapper.tsx b/packages/visual-editor/src/components/footer/FooterExpandedLinksWrapper.tsx index 026735fb05..2bc71a32c3 100644 --- a/packages/visual-editor/src/components/footer/FooterExpandedLinksWrapper.tsx +++ b/packages/visual-editor/src/components/footer/FooterExpandedLinksWrapper.tsx @@ -11,9 +11,10 @@ import { useBackground } from "../../hooks/useBackground.tsx"; import { Body } from "../atoms/body.tsx"; import { useTranslation } from "react-i18next"; import { defaultLink, defaultLinks } from "./ExpandedFooter.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; const defaultSection = { - label: { en: "Footer Label", hasLocalizedValue: "true" as const }, + label: defaultText("componentDefaults.footerLabel", "Footer Label"), links: defaultLinks, }; diff --git a/packages/visual-editor/src/components/footer/FooterLogoSlot.tsx b/packages/visual-editor/src/components/footer/FooterLogoSlot.tsx index 88b362f8ce..ab5e637f4a 100644 --- a/packages/visual-editor/src/components/footer/FooterLogoSlot.tsx +++ b/packages/visual-editor/src/components/footer/FooterLogoSlot.tsx @@ -12,6 +12,7 @@ import { useTranslation } from "react-i18next"; import { ImageStylingFields } from "../contentBlocks/image/styling.ts"; import { ComplexImageType, ImageType } from "@yext/pages-components"; import { getImageUrl } from "../contentBlocks/image/Image.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface FooterLogoSlotProps { data: { @@ -120,7 +121,7 @@ export const FooterLogoSlot: ComponentConfig<{ props: FooterLogoSlotProps }> = { url: "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg", height: 100, width: 100, - alternateText: { en: "Logo", hasLocalizedValue: "true" }, + alternateText: defaultText("componentDefaults.logo", "Logo"), }, constantValueEnabled: true, }, diff --git a/packages/visual-editor/src/components/footer/SecondaryFooterSlot.tsx b/packages/visual-editor/src/components/footer/SecondaryFooterSlot.tsx index c0cee2cf17..e8e66ca285 100644 --- a/packages/visual-editor/src/components/footer/SecondaryFooterSlot.tsx +++ b/packages/visual-editor/src/components/footer/SecondaryFooterSlot.tsx @@ -5,13 +5,11 @@ import { msg, pt } from "../../utils/i18n/platform.ts"; import { BackgroundStyle } from "../../utils/themeConfigOptions.ts"; import { PageSection, PageSectionProps } from "../atoms/pageSection.tsx"; import { defaultCopyrightMessageSlotProps } from "./CopyrightMessageSlot.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; const defaultLink = { linkType: "URL" as const, - label: { - en: "Footer Link", - hasLocalizedValue: "true" as const, - }, + label: defaultText("componentDefaults.footerLink", "Footer Link"), link: "#", openInNewTab: false, }; diff --git a/packages/visual-editor/src/components/header/HeaderLinks.tsx b/packages/visual-editor/src/components/header/HeaderLinks.tsx index 1417669214..65e9b2089b 100644 --- a/packages/visual-editor/src/components/header/HeaderLinks.tsx +++ b/packages/visual-editor/src/components/header/HeaderLinks.tsx @@ -26,6 +26,7 @@ import { import { getHeaderViewport } from "./viewport.ts"; import { BackgroundStyle } from "../../utils/themeConfigOptions.ts"; import { BodyProps } from "../atoms/body.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; export type HeaderLinksProps = { data: { @@ -63,7 +64,7 @@ export type HeaderLinksProps = { const defaultLink: TranslatableCTA = { linkType: "URL", - label: { en: "Header Link", hasLocalizedValue: "true" }, + label: defaultText("componentDefaults.headerLink", "Header Link"), link: "#", openInNewTab: false, }; diff --git a/packages/visual-editor/src/components/header/PrimaryHeaderSlot.tsx b/packages/visual-editor/src/components/header/PrimaryHeaderSlot.tsx index d1ef34b57b..cdaa83fc51 100644 --- a/packages/visual-editor/src/components/header/PrimaryHeaderSlot.tsx +++ b/packages/visual-editor/src/components/header/PrimaryHeaderSlot.tsx @@ -30,6 +30,7 @@ import { } from "./ExpandedHeaderMenuContext.tsx"; import { getHeaderViewport } from "./viewport.ts"; import { SlidePanel } from "./SlidePanel.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; const HAMBURGER_RESERVE_PX = 48; @@ -424,12 +425,15 @@ export const defaultPrimaryHeaderProps: PrimaryHeaderSlotProps = { data: { show: true, actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: { - label: { en: "Call to Action", hasLocalizedValue: "true" }, - link: { en: "#", hasLocalizedValue: "true" }, + label: defaultText( + "componentDefaults.callToAction", + "Call to Action" + ), + link: "#", linkType: "URL", ctaType: "textAndLink", }, @@ -451,12 +455,15 @@ export const defaultPrimaryHeaderProps: PrimaryHeaderSlotProps = { data: { show: true, actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: { - label: { en: "Call to Action", hasLocalizedValue: "true" }, - link: { en: "#", hasLocalizedValue: "true" }, + label: defaultText( + "componentDefaults.callToAction", + "Call to Action" + ), + link: "#", linkType: "URL", ctaType: "textAndLink", }, diff --git a/packages/visual-editor/src/components/pageSections/AboutSection/AboutSection.tsx b/packages/visual-editor/src/components/pageSections/AboutSection/AboutSection.tsx index 7acfd919d6..776684e6f0 100644 --- a/packages/visual-editor/src/components/pageSections/AboutSection/AboutSection.tsx +++ b/packages/visual-editor/src/components/pageSections/AboutSection/AboutSection.tsx @@ -25,13 +25,11 @@ import { defaultAboutSectionProps, } from "./AboutSectionDetailsColumn.tsx"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; const placeholderText = { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1},{"type":"linebreak","version":1},{"type":"linebreak","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":"Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

', }; export type AboutSectionProps = { @@ -202,10 +200,10 @@ export const AboutSection: ComponentConfig<{ props: AboutSectionProps }> = { props: { data: { text: { - constantValue: { - en: "About [[name]]", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.aboutName", + "About [[name]]" + ), constantValueEnabled: true, field: "", }, @@ -242,10 +240,10 @@ export const AboutSection: ComponentConfig<{ props: AboutSectionProps }> = { { header: { field: "", - constantValue: { - en: "Hours", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.hours", + "Hours" + ), constantValueEnabled: true, }, content: { @@ -256,10 +254,10 @@ export const AboutSection: ComponentConfig<{ props: AboutSectionProps }> = { { header: { field: "", - constantValue: { - en: "Services Offered", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.servicesOffered", + "Services Offered" + ), constantValueEnabled: true, }, content: { @@ -276,10 +274,10 @@ export const AboutSection: ComponentConfig<{ props: AboutSectionProps }> = { { header: { field: "", - constantValue: { - en: "Follow Us", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.followUs", + "Follow Us" + ), constantValueEnabled: true, }, content: { diff --git a/packages/visual-editor/src/components/pageSections/AboutSection/AboutSectionDetailsColumn.tsx b/packages/visual-editor/src/components/pageSections/AboutSection/AboutSectionDetailsColumn.tsx index 819de2029b..27aa9e0715 100644 --- a/packages/visual-editor/src/components/pageSections/AboutSection/AboutSectionDetailsColumn.tsx +++ b/packages/visual-editor/src/components/pageSections/AboutSection/AboutSectionDetailsColumn.tsx @@ -52,6 +52,7 @@ import { hoursTableFields, HoursTable, } from "../../contentBlocks/HoursTable.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export type AboutSectionDetailsColumnProps = { sections: DetailSection[]; @@ -137,10 +138,7 @@ export const defaultAboutSectionProps: Omit = constantValue: "", constantValueEnabled: false, }, - label: { - en: "Phone", - hasLocalizedValue: "true", - }, + label: defaultText("componentDefaults.phone", "Phone"), }, styles: { phoneFormat: "domestic", @@ -301,7 +299,7 @@ const aboutSectionDetailsColumnFields: Fields = defaultItemProps: { header: { field: "", - constantValue: { en: "Header", hasLocalizedValue: "true" }, + constantValue: defaultText("componentDefaults.header", "Header"), constantValueEnabled: true, }, content: { diff --git a/packages/visual-editor/src/components/pageSections/Banner.tsx b/packages/visual-editor/src/components/pageSections/Banner.tsx index 5ddf8d0eb9..84e7802c2d 100644 --- a/packages/visual-editor/src/components/pageSections/Banner.tsx +++ b/packages/visual-editor/src/components/pageSections/Banner.tsx @@ -10,7 +10,6 @@ import { EntityField } from "../../editor/EntityField.tsx"; import { TranslatableRichText } from "../../types/types.ts"; import { msg, pt } from "../../utils/i18n/platform.ts"; import { Body } from "../atoms/body.tsx"; -import { getDefaultRTF } from "../../editor/TranslatableRichTextField.tsx"; import { ComponentConfig, Fields, PuckComponent } from "@puckeditor/core"; import { backgroundColors, @@ -20,6 +19,7 @@ import { CircleSlash2 } from "lucide-react"; import { useTemplateMetadata } from "../../internal/hooks/useMessageReceivers.ts"; import { resolveYextEntityField } from "../../utils/resolveYextEntityField.ts"; import { ComponentErrorBoundary } from "../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultRichText } from "../../utils/defaultContent.ts"; export interface BannerData { /** @@ -230,10 +230,10 @@ export const defaultBannerProps: BannerSectionProps = { data: { text: { field: "", - constantValue: { - en: getDefaultRTF("Banner Text"), - hasLocalizedValue: "true", - }, + constantValue: defaultRichText( + "componentDefaults.bannerText", + "Banner Text" + ), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/pageSections/Breadcrumbs.tsx b/packages/visual-editor/src/components/pageSections/Breadcrumbs.tsx index ef9003a8e6..0f385b6353 100644 --- a/packages/visual-editor/src/components/pageSections/Breadcrumbs.tsx +++ b/packages/visual-editor/src/components/pageSections/Breadcrumbs.tsx @@ -15,6 +15,7 @@ import { ComponentConfig, Fields } from "@puckeditor/core"; import { AnalyticsScopeProvider } from "@yext/pages-components"; import { ComponentErrorBoundary } from "../../internal/components/ComponentErrorBoundary.tsx"; import { resolveBreadcrumbs } from "../../utils/urls/resolveBreadcrumbs.ts"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface BreadcrumbsData { /** @@ -184,10 +185,10 @@ export const BreadcrumbsSection: ComponentConfig<{ fields: breadcrumbsSectionFields, defaultProps: { data: { - directoryRoot: { - en: "Directory Root", - hasLocalizedValue: "true", - }, + directoryRoot: defaultText( + "componentDefaults.directoryRoot", + "Directory Root" + ), }, styles: { backgroundColor: backgroundColors.background1.value, diff --git a/packages/visual-editor/src/components/pageSections/CoreInfoSection.tsx b/packages/visual-editor/src/components/pageSections/CoreInfoSection.tsx index cd590861cb..ca36b043fa 100644 --- a/packages/visual-editor/src/components/pageSections/CoreInfoSection.tsx +++ b/packages/visual-editor/src/components/pageSections/CoreInfoSection.tsx @@ -23,6 +23,7 @@ import { resolvePhoneNumbers, } from "../contentBlocks/PhoneList.tsx"; import { ComponentErrorBoundary } from "../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface CoreInfoStyles { /** @@ -201,10 +202,10 @@ export const CoreInfoSection: ComponentConfig<{ props: CoreInfoSectionProps }> = props: { data: { text: { - constantValue: { - en: "Information", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.information", + "Information" + ), constantValueEnabled: true, field: "", }, @@ -246,10 +247,7 @@ export const CoreInfoSection: ComponentConfig<{ props: CoreInfoSectionProps }> = field: "mainPhone", constantValue: "", }, - label: { - en: "Phone", - hasLocalizedValue: "true", - }, + label: defaultText("componentDefaults.phone", "Phone"), }, ], }, @@ -282,10 +280,10 @@ export const CoreInfoSection: ComponentConfig<{ props: CoreInfoSectionProps }> = props: { data: { text: { - constantValue: { - en: "Hours", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.hours", + "Hours" + ), constantValueEnabled: true, field: "", }, @@ -319,10 +317,10 @@ export const CoreInfoSection: ComponentConfig<{ props: CoreInfoSectionProps }> = props: { data: { text: { - constantValue: { - en: "Services", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.services", + "Services" + ), constantValueEnabled: true, field: "", }, diff --git a/packages/visual-editor/src/components/pageSections/EventSection/EventCard.tsx b/packages/visual-editor/src/components/pageSections/EventSection/EventCard.tsx index 4dc959f797..1930f966e0 100644 --- a/packages/visual-editor/src/components/pageSections/EventSection/EventCard.tsx +++ b/packages/visual-editor/src/components/pageSections/EventSection/EventCard.tsx @@ -25,11 +25,12 @@ import { ImgSizesByBreakpoint } from "../../atoms/image.tsx"; import { resolveYextEntityField } from "../../../utils/resolveYextEntityField.ts"; import { i18nComponentsInstance } from "../../../utils/i18n/components.ts"; import { resolveComponentData } from "../../../utils/resolveComponentData.tsx"; -import { getDefaultRTF } from "../../../editor/TranslatableRichTextField.tsx"; import { useCardContext } from "../../../hooks/useCardContext.tsx"; import { useGetCardSlots } from "../../../hooks/useGetCardSlots.tsx"; import { getRandomPlaceholderImageObject } from "../../../utils/imagePlaceholders.ts"; import { syncParentStyles } from "../../../utils/cardSlots/syncParentStyles.ts"; +import { defaultText } from "../../../utils/defaultContent.ts"; +import { getDefaultRTF } from "../../../editor/TranslatableRichTextField.tsx"; const defaultEvent = { image: { @@ -37,16 +38,13 @@ const defaultEvent = { height: 360, width: 640, }, - title: { en: "Event Title", hasLocalizedValue: "true" }, + title: defaultText("componentDefaults.eventTitle", "Event Title"), dateTime: "2022-12-12T14:00:00", - description: { - en: getDefaultRTF( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - ), - hasLocalizedValue: "true", - }, + description: getDefaultRTF( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + ), cta: { - label: { en: "Learn More", hasLocalizedValue: "true" }, + label: defaultText("componentDefaults.learnMore", "Learn More"), link: "#", linkType: "URL", ctaType: "textAndLink", @@ -85,7 +83,10 @@ export const defaultEventCardSlotData = ( }), width: 640, height: 360, - alternateText: "Event Image", + alternateText: defaultText( + "componentDefaults.eventImage", + "Event Image" + ), }, constantValueEnabled: true, }, @@ -169,7 +170,7 @@ export const defaultEventCardSlotData = ( ...(id && { id: `${id}-cta` }), data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: defaultEvent.cta, diff --git a/packages/visual-editor/src/components/pageSections/EventSection/EventSection.tsx b/packages/visual-editor/src/components/pageSections/EventSection/EventSection.tsx index dc6c77437d..ed3ed3cd6b 100644 --- a/packages/visual-editor/src/components/pageSections/EventSection/EventSection.tsx +++ b/packages/visual-editor/src/components/pageSections/EventSection/EventSection.tsx @@ -13,6 +13,7 @@ import { defaultEventCardSlotData } from "./EventCard.tsx"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; import { EventCardsWrapperProps } from "./EventCardsWrapper.tsx"; import { forwardHeadingLevel } from "../../../utils/cardSlots/forwardHeadingLevel.ts"; +import { defaultText } from "../../../utils/defaultContent.ts"; export interface EventSectionProps { /** @@ -135,10 +136,10 @@ export const EventSection: ComponentConfig<{ props: EventSectionProps }> = { props: { data: { text: { - constantValue: { - en: "Upcoming Events", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.upcomingEvents", + "Upcoming Events" + ), constantValueEnabled: true, field: "", }, diff --git a/packages/visual-editor/src/components/pageSections/FAQsSection/FAQCard.tsx b/packages/visual-editor/src/components/pageSections/FAQsSection/FAQCard.tsx index d3b2ac4d8e..b0a5819edb 100644 --- a/packages/visual-editor/src/components/pageSections/FAQsSection/FAQCard.tsx +++ b/packages/visual-editor/src/components/pageSections/FAQsSection/FAQCard.tsx @@ -26,16 +26,10 @@ import { useGetCardSlots } from "../../../hooks/useGetCardSlots.tsx"; import { BackgroundStyle } from "../../../utils/themeConfigOptions.ts"; const defaultFAQ = { - question: { - en: "Question Lorem ipsum dolor sit amet?", - hasLocalizedValue: "true", - }, - answer: { - en: getDefaultRTF( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." - ), - hasLocalizedValue: "true", - }, + question: "Question Lorem ipsum dolor sit amet?", + answer: getDefaultRTF( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." + ), } satisfies FAQStruct; export const defaultFAQCardData = ( diff --git a/packages/visual-editor/src/components/pageSections/FAQsSection/FAQsSection.tsx b/packages/visual-editor/src/components/pageSections/FAQsSection/FAQsSection.tsx index 925dbe9031..34ab36267b 100644 --- a/packages/visual-editor/src/components/pageSections/FAQsSection/FAQsSection.tsx +++ b/packages/visual-editor/src/components/pageSections/FAQsSection/FAQsSection.tsx @@ -25,6 +25,7 @@ import { AnalyticsScopeProvider } from "@yext/pages-components"; import { defaultFAQCardData, FAQCardProps } from "./FAQCard.tsx"; import { CardContextProvider } from "../../../hooks/useCardContext.tsx"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export interface FAQStyles { /** @@ -160,10 +161,10 @@ export const FAQSection: ComponentConfig<{ props: FAQSectionProps }> = { props: { data: { text: { - constantValue: { - en: "Frequently Asked Questions", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.frequentlyAskedQuestions", + "Frequently Asked Questions" + ), constantValueEnabled: true, field: "", }, diff --git a/packages/visual-editor/src/components/pageSections/HeroSection.tsx b/packages/visual-editor/src/components/pageSections/HeroSection.tsx index eda70100a1..f23a140ce8 100644 --- a/packages/visual-editor/src/components/pageSections/HeroSection.tsx +++ b/packages/visual-editor/src/components/pageSections/HeroSection.tsx @@ -31,6 +31,7 @@ import { SpotlightHero } from "./heroVariants/SpotlightHero.js"; import { ImmersiveHero } from "./heroVariants/ImmersiveHero.js"; import { getRandomPlaceholderImageObject } from "../../utils/imagePlaceholders.ts"; import { ComponentErrorBoundary } from "../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface HeroData { backgroundImage: YextEntityField< @@ -406,10 +407,10 @@ export const HeroSection: ComponentConfig<{ props: HeroSectionProps }> = { props: { data: { text: { - constantValue: { - en: "Business Name", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.businessName", + "Business Name" + ), constantValueEnabled: true, field: "", }, @@ -424,10 +425,10 @@ export const HeroSection: ComponentConfig<{ props: HeroSectionProps }> = { props: { data: { text: { - constantValue: { - en: "Geomodifier", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.geomodifier", + "Geomodifier" + ), constantValueEnabled: true, field: "", }, @@ -485,18 +486,15 @@ export const HeroSection: ComponentConfig<{ props: HeroSectionProps }> = { props: { data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: { - label: { - en: "Call To Action", - hasLocalizedValue: "true", - }, - link: { - en: "#", - hasLocalizedValue: "true", - }, + label: defaultText( + "componentDefaults.callToAction", + "Call To Action" + ), + link: "#", linkType: "URL", ctaType: "textAndLink", }, @@ -516,18 +514,15 @@ export const HeroSection: ComponentConfig<{ props: HeroSectionProps }> = { props: { data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: { - label: { - en: "Learn More", - hasLocalizedValue: "true", - }, - link: { - en: "#", - hasLocalizedValue: "true", - }, + label: defaultText( + "componentDefaults.learnMore", + "Learn More" + ), + link: "#", linkType: "URL", ctaType: "textAndLink", }, diff --git a/packages/visual-editor/src/components/pageSections/InsightSection/InsightCard.tsx b/packages/visual-editor/src/components/pageSections/InsightSection/InsightCard.tsx index abd39df992..ad363d8fe2 100644 --- a/packages/visual-editor/src/components/pageSections/InsightSection/InsightCard.tsx +++ b/packages/visual-editor/src/components/pageSections/InsightSection/InsightCard.tsx @@ -27,6 +27,7 @@ import { Slot, } from "@puckeditor/core"; import { syncParentStyles } from "../../../utils/cardSlots/syncParentStyles.ts"; +import { defaultText } from "../../../utils/defaultContent.ts"; const defaultInsight = { image: { @@ -34,20 +35,14 @@ const defaultInsight = { width: 640, height: 360, }, - name: { en: "Article Name", hasLocalizedValue: "true" }, - category: { - en: "Category", - hasLocalizedValue: "true", - }, - description: { - en: getDefaultRTF( - "Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters" - ), - hasLocalizedValue: "true", - }, + name: defaultText("componentDefaults.articleName", "Article Name"), + category: defaultText("componentDefaults.category", "Category"), + description: getDefaultRTF( + "Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters" + ), publishTime: "2022-08-02T14:00:00", cta: { - label: { en: "Read More", hasLocalizedValue: "true" }, + label: defaultText("componentDefaults.readMore", "Read More"), link: "#", linkType: "URL", ctaType: "textAndLink", @@ -189,7 +184,7 @@ export const defaultInsightCardSlotData = ( ...(id && { id: `${id}-cta` }), data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: defaultInsight.cta, diff --git a/packages/visual-editor/src/components/pageSections/InsightSection/InsightSection.tsx b/packages/visual-editor/src/components/pageSections/InsightSection/InsightSection.tsx index e22a1fb9a2..0301670255 100644 --- a/packages/visual-editor/src/components/pageSections/InsightSection/InsightSection.tsx +++ b/packages/visual-editor/src/components/pageSections/InsightSection/InsightSection.tsx @@ -14,6 +14,7 @@ import { forwardHeadingLevel } from "../../../utils/cardSlots/forwardHeadingLeve import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; import { defaultInsightCardSlotData } from "./InsightCard.tsx"; import { InsightCardsWrapperProps } from "./InsightCardsWrapper.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export interface InsightSectionProps { /** @@ -136,10 +137,10 @@ export const InsightSection: ComponentConfig<{ props: InsightSectionProps }> = { data: { text: { field: "", - constantValue: { - en: "Insights", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.insights", + "Insights" + ), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/pageSections/NearbyLocations/NearbyLocations.tsx b/packages/visual-editor/src/components/pageSections/NearbyLocations/NearbyLocations.tsx index e6e59b34ea..39b090e671 100644 --- a/packages/visual-editor/src/components/pageSections/NearbyLocations/NearbyLocations.tsx +++ b/packages/visual-editor/src/components/pageSections/NearbyLocations/NearbyLocations.tsx @@ -19,6 +19,7 @@ import { HeadingTextProps } from "../../contentBlocks/HeadingText.tsx"; import { AnalyticsScopeProvider } from "@yext/pages-components"; import { defaultNearbyLocationsCardsProps } from "./NearbyLocationsCardsWrapper.tsx"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export interface NearbyLocationsSectionProps { /** @@ -204,10 +205,10 @@ export const NearbyLocationsSection: ComponentConfig<{ data: { text: { field: "", - constantValue: { - en: "Nearby Locations", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.nearbyLocations", + "Nearby Locations" + ), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGallerySection.tsx b/packages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGallerySection.tsx index 7fb06c175d..851bf036e1 100644 --- a/packages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGallerySection.tsx +++ b/packages/visual-editor/src/components/pageSections/PhotoGallerySection/PhotoGallerySection.tsx @@ -20,6 +20,7 @@ import { AssetImageType } from "../../../types/images.ts"; import { PhotoGalleryWrapperProps } from "./PhotoGalleryWrapper.tsx"; import { getRandomPlaceholderImageObject } from "../../../utils/imagePlaceholders.ts"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; // Generate 3 random placeholder images for the gallery export const PLACEHOLDER: AssetImageType = { @@ -164,10 +165,10 @@ export const PhotoGallerySection: ComponentConfig<{ data: { text: { field: "", - constantValue: { - en: "Gallery", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.gallery", + "Gallery" + ), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/pageSections/ProductSection/ProductCard.tsx b/packages/visual-editor/src/components/pageSections/ProductSection/ProductCard.tsx index cc7ce271fd..139f35f9fc 100644 --- a/packages/visual-editor/src/components/pageSections/ProductSection/ProductCard.tsx +++ b/packages/visual-editor/src/components/pageSections/ProductSection/ProductCard.tsx @@ -31,6 +31,7 @@ import { getRandomPlaceholderImageObject } from "../../../utils/imagePlaceholder import { TextProps } from "../../contentBlocks/Text.tsx"; import { ProductSectionVariant } from "./ProductSection.tsx"; import { syncParentStyles } from "../../../utils/cardSlots/syncParentStyles.ts"; +import { defaultText } from "../../../utils/defaultContent.ts"; const defaultProduct = { image: { @@ -38,23 +39,14 @@ const defaultProduct = { height: 360, width: 640, }, - brow: { - en: "Category", - hasLocalizedValue: "true", - }, - name: { en: "Product Name", hasLocalizedValue: "true" }, - price: { - en: "$123.00", - hasLocalizedValue: "true", - }, - description: { - en: getDefaultRTF( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." - ), - hasLocalizedValue: "true", - }, + brow: defaultText("componentDefaults.category", "Category"), + name: defaultText("componentDefaults.productName", "Product Name"), + price: defaultText("componentDefaults.price", "$123.00"), + description: getDefaultRTF( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + ), cta: { - label: { en: "Learn More", hasLocalizedValue: "true" }, + label: defaultText("componentDefaults.learnMore", "Learn More"), link: "#", linkType: "URL", ctaType: "textAndLink", @@ -185,7 +177,7 @@ export const defaultProductCardSlotData = ( ...(id && { id: `${id}-cta` }), data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: defaultProduct.cta, diff --git a/packages/visual-editor/src/components/pageSections/ProductSection/ProductSection.tsx b/packages/visual-editor/src/components/pageSections/ProductSection/ProductSection.tsx index b6d819f9d1..81f203e51b 100644 --- a/packages/visual-editor/src/components/pageSections/ProductSection/ProductSection.tsx +++ b/packages/visual-editor/src/components/pageSections/ProductSection/ProductSection.tsx @@ -20,6 +20,7 @@ import { defaultProductCardSlotData } from "./ProductCard.tsx"; import { ProductCardsWrapperProps } from "./ProductCardsWrapper.tsx"; import { forwardHeadingLevel } from "../../../utils/cardSlots/forwardHeadingLevel.ts"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export type ProductSectionVariant = "immersive" | "classic" | "minimal"; export type ProductSectionImageConstrain = "fill" | "fixed"; @@ -163,10 +164,10 @@ export const ProductSection: ComponentConfig<{ props: ProductSectionProps }> = { data: { text: { field: "", - constantValue: { - en: "Featured Products", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.featuredProducts", + "Featured Products" + ), constantValueEnabled: true, }, }, diff --git a/packages/visual-editor/src/components/pageSections/ProfessionalHeroSection.tsx b/packages/visual-editor/src/components/pageSections/ProfessionalHeroSection.tsx index bfbcb31744..e422048b09 100644 --- a/packages/visual-editor/src/components/pageSections/ProfessionalHeroSection.tsx +++ b/packages/visual-editor/src/components/pageSections/ProfessionalHeroSection.tsx @@ -24,6 +24,7 @@ import { resolveComponentData } from "../../utils/resolveComponentData.tsx"; import { AnalyticsScopeProvider } from "@yext/pages-components"; import { getRandomPlaceholderImageObject } from "../../utils/imagePlaceholders.ts"; import { ComponentErrorBoundary } from "../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../utils/defaultContent.ts"; export interface ProfessionalHeroStyles { /** @@ -560,10 +561,10 @@ export const ProfessionalHeroSection: ComponentConfig<{ data: { text: { field: "", - constantValue: { - en: "Business Name", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.businessName", + "Business Name" + ), constantValueEnabled: true, }, }, @@ -580,10 +581,10 @@ export const ProfessionalHeroSection: ComponentConfig<{ data: { text: { field: "", - constantValue: { - en: "Credentials", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.credentials", + "Credentials" + ), constantValueEnabled: true, }, }, @@ -600,10 +601,10 @@ export const ProfessionalHeroSection: ComponentConfig<{ props: { data: { text: { - constantValue: { - en: "Professional Name", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.professionalName", + "Professional Name" + ), constantValueEnabled: true, field: "name", }, @@ -618,10 +619,10 @@ export const ProfessionalHeroSection: ComponentConfig<{ props: { data: { text: { - constantValue: { - en: "Professional Title", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.professionalTitle", + "Professional Title" + ), constantValueEnabled: true, field: "", }, @@ -640,10 +641,10 @@ export const ProfessionalHeroSection: ComponentConfig<{ props: { data: { text: { - constantValue: { - en: "Subtitle", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.subtitle", + "Subtitle" + ), constantValueEnabled: true, field: "", }, @@ -682,18 +683,15 @@ export const ProfessionalHeroSection: ComponentConfig<{ props: { data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: { - label: { - en: "Contact Me", - hasLocalizedValue: "true", - }, - link: { - en: "#", - hasLocalizedValue: "true", - }, + label: defaultText( + "componentDefaults.contactMe", + "Contact Me" + ), + link: "#", linkType: "URL", ctaType: "textAndLink", }, @@ -712,18 +710,15 @@ export const ProfessionalHeroSection: ComponentConfig<{ props: { data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: { - label: { - en: "Learn More", - hasLocalizedValue: "true", - }, - link: { - en: "#", - hasLocalizedValue: "true", - }, + label: defaultText( + "componentDefaults.learnMore", + "Learn More" + ), + link: "#", linkType: "URL", ctaType: "textAndLink", }, @@ -747,10 +742,7 @@ export const ProfessionalHeroSection: ComponentConfig<{ field: "mainPhone", constantValue: "", }, - label: { - en: "Phone", - hasLocalizedValue: "true", - }, + label: defaultText("componentDefaults.phone", "Phone"), }, ], }, diff --git a/packages/visual-editor/src/components/pageSections/PromoSection/PromoSection.tsx b/packages/visual-editor/src/components/pageSections/PromoSection/PromoSection.tsx index 052c15c45e..b92eb3ff09 100644 --- a/packages/visual-editor/src/components/pageSections/PromoSection/PromoSection.tsx +++ b/packages/visual-editor/src/components/pageSections/PromoSection/PromoSection.tsx @@ -38,6 +38,7 @@ import { CompactPromo } from "./CompactPromo.tsx"; import { useTranslation } from "react-i18next"; import { PromoEmptyState } from "./PromoEmptyState.tsx"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export interface PromoData { /** @@ -352,10 +353,10 @@ export const PromoSection: ComponentConfig<{ props: PromoSectionProps }> = { data: { text: { field: "", - constantValue: { - en: "Featured Promotion", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.featuredPromotion", + "Featured Promotion" + ), constantValueEnabled: true, }, }, @@ -370,12 +371,9 @@ export const PromoSection: ComponentConfig<{ props: PromoSectionProps }> = { data: { text: { field: "", - constantValue: { - en: getDefaultRTF( - "Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 100 characters" - ), - hasLocalizedValue: "true", - }, + constantValue: getDefaultRTF( + "Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 100 characters" + ), constantValueEnabled: true, }, }, @@ -429,11 +427,14 @@ export const PromoSection: ComponentConfig<{ props: PromoSectionProps }> = { props: { data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: { - label: "Learn More", + label: defaultText( + "componentDefaults.learnMore", + "Learn More" + ), link: "#", linkType: "URL", ctaType: "textAndLink", diff --git a/packages/visual-editor/src/components/pageSections/TeamSection/TeamCard.tsx b/packages/visual-editor/src/components/pageSections/TeamSection/TeamCard.tsx index 27ad638849..678ab0a2a6 100644 --- a/packages/visual-editor/src/components/pageSections/TeamSection/TeamCard.tsx +++ b/packages/visual-editor/src/components/pageSections/TeamSection/TeamCard.tsx @@ -28,14 +28,15 @@ import { useCardContext } from "../../../hooks/useCardContext.tsx"; import { useGetCardSlots } from "../../../hooks/useGetCardSlots.tsx"; import { TextProps } from "../../contentBlocks/Text.tsx"; import { syncParentStyles } from "../../../utils/cardSlots/syncParentStyles.ts"; +import { defaultRichText, defaultText } from "../../../utils/defaultContent.ts"; const defaultPerson = { - name: { en: "First Last", hasLocalizedValue: "true" }, - title: { en: "Associate Agent", hasLocalizedValue: "true" }, + name: defaultText("componentDefaults.firstLast", "First Last"), + title: defaultRichText("componentDefaults.associateAgent", "Associate Agent"), phoneNumber: "+12027706619", email: "jkelley@[company].com", cta: { - label: { en: "Visit Profile", hasLocalizedValue: "true" }, + label: defaultText("componentDefaults.visitProfile", "Visit Profile"), link: "#", linkType: "URL", ctaType: "textAndLink", @@ -135,10 +136,7 @@ export const defaultTeamCardSlotData = ( constantValue: defaultPerson.phoneNumber, constantValueEnabled: true, }, - label: { - en: "", - hasLocalizedValue: "true", - }, + label: "", }, ], }, @@ -176,7 +174,7 @@ export const defaultTeamCardSlotData = ( ...(id && { id: `${id}-cta` }), data: { actionType: "link", - buttonText: { en: "Button", hasLocalizedValue: "true" }, + buttonText: defaultText("componentDefaults.button", "Button"), entityField: { field: "", constantValue: defaultPerson.cta, diff --git a/packages/visual-editor/src/components/pageSections/TeamSection/TeamSection.tsx b/packages/visual-editor/src/components/pageSections/TeamSection/TeamSection.tsx index 129994ead2..d610530ca1 100644 --- a/packages/visual-editor/src/components/pageSections/TeamSection/TeamSection.tsx +++ b/packages/visual-editor/src/components/pageSections/TeamSection/TeamSection.tsx @@ -14,6 +14,7 @@ import { defaultTeamCardSlotData } from "./TeamCard.tsx"; import { TeamCardsWrapperProps } from "./TeamCardsWrapper.tsx"; import { forwardHeadingLevel } from "../../../utils/cardSlots/forwardHeadingLevel.ts"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export interface TeamSectionProps { /** @@ -136,10 +137,10 @@ export const TeamSection: ComponentConfig<{ props: TeamSectionProps }> = { props: { data: { text: { - constantValue: { - en: "Meet Our Team", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.meetOurTeam", + "Meet Our Team" + ), constantValueEnabled: true, field: "", }, diff --git a/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialCard.tsx b/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialCard.tsx index addcc2e0c0..cd00d4f8bb 100644 --- a/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialCard.tsx +++ b/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialCard.tsx @@ -20,20 +20,18 @@ import { BodyTextProps } from "../../contentBlocks/BodyText.tsx"; import { deepMerge } from "../../../utils/themeResolver.ts"; import { resolveYextEntityField } from "../../../utils/resolveYextEntityField.ts"; import { i18nComponentsInstance } from "../../../utils/i18n/components.ts"; -import { getDefaultRTF } from "../../../editor/TranslatableRichTextField.tsx"; import { TimestampProps } from "../../contentBlocks/Timestamp.tsx"; import { useCardContext } from "../../../hooks/useCardContext.tsx"; import { useGetCardSlots } from "../../../hooks/useGetCardSlots.tsx"; import { syncParentStyles } from "../../../utils/cardSlots/syncParentStyles.ts"; +import { defaultText } from "../../../utils/defaultContent.ts"; +import { getDefaultRTF } from "../../../editor/TranslatableRichTextField.tsx"; const defaultTestimonial = { - description: { - en: getDefaultRTF( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." - ), - hasLocalizedValue: "true", - }, - contributorName: { en: "Name", hasLocalizedValue: "true" }, + description: getDefaultRTF( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." + ), + contributorName: defaultText("componentDefaults.name", "Name"), contributionDate: "2022-08-02T14:00:00", } satisfies TestimonialStruct; diff --git a/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialSection.tsx b/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialSection.tsx index 41dcd145ce..1c89cbe487 100644 --- a/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialSection.tsx +++ b/packages/visual-editor/src/components/pageSections/TestimonialSection/TestimonialSection.tsx @@ -14,6 +14,7 @@ import { defaultTestimonialCardSlotData } from "./TestimonialCard.tsx"; import { TestimonialCardsWrapperProps } from "./TestimonialCardsWrapper.tsx"; import { forwardHeadingLevel } from "../../../utils/cardSlots/forwardHeadingLevel.ts"; import { ComponentErrorBoundary } from "../../../internal/components/ComponentErrorBoundary.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export interface TestimonialSectionProps { /** @@ -140,10 +141,10 @@ export const TestimonialSection: ComponentConfig<{ props: { data: { text: { - constantValue: { - en: "Featured Testimonials", - hasLocalizedValue: "true", - }, + constantValue: defaultText( + "componentDefaults.featuredTestimonials", + "Featured Testimonials" + ), constantValueEnabled: true, field: "", }, diff --git a/packages/visual-editor/src/components/pageSections/VideoSection.tsx b/packages/visual-editor/src/components/pageSections/VideoSection.tsx index d0a74088ad..71e0006c5d 100644 --- a/packages/visual-editor/src/components/pageSections/VideoSection.tsx +++ b/packages/visual-editor/src/components/pageSections/VideoSection.tsx @@ -98,10 +98,7 @@ export const VideoSection: ComponentConfig<{ props: { data: { text: { - constantValue: { - en: "", - hasLocalizedValue: "true", - }, + constantValue: "", constantValueEnabled: true, field: "", }, diff --git a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with data.png b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with data.png index 319f0d4b98..513c73775f 100644 Binary files a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with data.png and b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with data.png differ diff --git a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with no data.png b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with no data.png index 3c1363ac21..a3ef9045fa 100644 Binary files a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with no data.png and b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[desktop] default props with no data.png differ diff --git a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with data.png b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with data.png index c2fef34d0b..3a0928aded 100644 Binary files a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with data.png and b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with data.png differ diff --git a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with no data.png b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with no data.png index d232ee8cb6..92d0a4091f 100644 Binary files a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with no data.png and b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[mobile] default props with no data.png differ diff --git a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with data.png b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with data.png index b3a9bc5d83..184503d279 100644 Binary files a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with data.png and b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with data.png differ diff --git a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with no data.png b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with no data.png index bbbd2da3dd..cc380fbd2e 100644 Binary files a/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with no data.png and b/packages/visual-editor/src/components/testing/screenshots/HeroSection/[tablet] default props with no data.png differ diff --git a/packages/visual-editor/src/editor/Editor.tsx b/packages/visual-editor/src/editor/Editor.tsx index 2812915bde..5cdadfbae0 100644 --- a/packages/visual-editor/src/editor/Editor.tsx +++ b/packages/visual-editor/src/editor/Editor.tsx @@ -32,6 +32,7 @@ import { import { migrate } from "../utils/migrate.ts"; import { migrationRegistry } from "../components/migrations/migrationRegistry.ts"; import { ErrorProvider } from "../contexts/ErrorContext.tsx"; +import { processTemplateLayoutData } from "../utils/defaultLayoutTranslations.ts"; const devLogger = new DevLogger(); @@ -203,7 +204,13 @@ export const Editor = ({ finalThemeConfig = createDefaultThemeConfig(templateMetadata?.customFonts); } const migratedData = !isLoading - ? migrate(layoutData!, migrationRegistry, puckConfig, document) + ? processTemplateLayoutData({ + layoutData: layoutData!, + streamDocument: document, + templateId: templateMetadata?.templateId ?? "", + buildProcessedLayout: () => + migrate(layoutData!, migrationRegistry, puckConfig, document), + }) : undefined; return ( diff --git a/packages/visual-editor/src/internal/puck/constant-value-fields/EnhancedCallToAction.tsx b/packages/visual-editor/src/internal/puck/constant-value-fields/EnhancedCallToAction.tsx index 85263c1aa3..b0d840ff5e 100644 --- a/packages/visual-editor/src/internal/puck/constant-value-fields/EnhancedCallToAction.tsx +++ b/packages/visual-editor/src/internal/puck/constant-value-fields/EnhancedCallToAction.tsx @@ -8,6 +8,7 @@ import { TranslatableStringField } from "../../../editor/TranslatableStringField import { linkTypeOptions } from "./CallToAction.tsx"; import { useMemo } from "react"; import { YextEntityField } from "../../../editor/YextEntityFieldSelector.tsx"; +import { defaultText } from "../../../utils/defaultContent.ts"; export const ctaTypeOptions = () => { return [ @@ -81,17 +82,18 @@ export const ENHANCED_CTA_CONSTANT_CONFIG: CustomField const updatedValue = { ...value, ctaType: newValue }; // Set defaults based on CTA type if (newValue === "presetImage") { - updatedValue.label = { en: "", hasLocalizedValue: "true" }; + updatedValue.label = ""; } else if (newValue === "getDirections") { - updatedValue.label = updatedValue?.label || { - en: "Get Directions", - hasLocalizedValue: "true", - }; + updatedValue.label = + updatedValue?.label || + defaultText( + "componentDefaults.getDirections", + "Get Directions" + ); } else if (newValue === "textAndLink") { - updatedValue.label = updatedValue?.label || { - en: "Learn More", - hasLocalizedValue: "true", - }; + updatedValue.label = + updatedValue?.label || + defaultText("componentDefaults.learnMore", "Learn More"); updatedValue.link = updatedValue?.link || "#"; updatedValue.linkType = updatedValue?.linkType || "URL"; } diff --git a/packages/visual-editor/src/utils/defaultContent.test.ts b/packages/visual-editor/src/utils/defaultContent.test.ts new file mode 100644 index 0000000000..b89efcd10e --- /dev/null +++ b/packages/visual-editor/src/utils/defaultContent.test.ts @@ -0,0 +1,78 @@ +import { describe, expect, it } from "vitest"; +import { defaultRichText, defaultText } from "./defaultContent.ts"; +import { componentDefaultRegistry } from "./i18n/componentDefaultRegistry.ts"; +import { locales } from "./i18n/locales.ts"; +import { TranslatableRichText, TranslatableString } from "../types/types.ts"; +import { getDefaultRTF } from "../editor/TranslatableRichTextField.tsx"; + +type LocalizedStringMap = { hasLocalizedValue: "true" } & Record< + string, + string +>; + +type LocalizedRichTextMap = { + hasLocalizedValue: "true"; +} & Record; + +describe("defaultContent", () => { + it("builds a localized TranslatableString across all supported locales", () => { + const value = defaultText("componentDefaults.text", "Text"); + const localizedValue = value as Exclude & + LocalizedStringMap; + + expect(typeof value).toBe("object"); + expect(localizedValue.hasLocalizedValue).toBe("true"); + for (const locale of locales) { + expect(typeof localizedValue[locale]).toBe("string"); + } + }); + + it("builds localized rich text defaults with html fallback", () => { + const value = defaultRichText( + "componentDefaults.bannerText", + "Banner Text" + ); + const localizedValue = value as Exclude & + LocalizedRichTextMap; + + expect(localizedValue.hasLocalizedValue).toBe("true"); + const enValue = localizedValue.en; + if (typeof enValue === "string") { + throw new Error("Expected rich text object for en value."); + } + expect(enValue.html).toContain("Banner Text"); + }); + + it("keeps localized rich text html and json in sync", () => { + const value = defaultRichText( + "componentDefaults.bannerText", + "Banner Text" + ); + const localizedValue = value as Exclude & + LocalizedRichTextMap; + const frValue = localizedValue.fr; + const expectedFrText = + componentDefaultRegistry.fr["componentDefaults.bannerText"]; + + if (typeof frValue === "string") { + throw new Error("Expected rich text object for fr value."); + } + + expect(frValue.html).toContain(expectedFrText); + expect(frValue.json).toContain(expectedFrText); + }); + + it("preserves bold formatting when enDefault rich text is bold", () => { + const boldDefault = getDefaultRTF("Banner Text", { isBold: true }); + const value = defaultRichText("componentDefaults.bannerText", boldDefault); + const localizedValue = value as Exclude & + LocalizedRichTextMap; + const frValue = localizedValue.fr; + + if (typeof frValue === "string") { + throw new Error("Expected rich text object for fr value."); + } + + expect(frValue.html).toContain(""); + }); +}); diff --git a/packages/visual-editor/src/utils/defaultContent.ts b/packages/visual-editor/src/utils/defaultContent.ts new file mode 100644 index 0000000000..d4b5cae75d --- /dev/null +++ b/packages/visual-editor/src/utils/defaultContent.ts @@ -0,0 +1,102 @@ +import { getDefaultRTF } from "../editor/TranslatableRichTextField.tsx"; +import { + RichText, + TranslatableRichText, + TranslatableString, +} from "../types/types.ts"; +import { componentDefaultRegistry } from "./i18n/componentDefaultRegistry.ts"; +import { locales } from "./i18n/locales.ts"; + +type LocalizedDefaults = { + hasLocalizedValue: "true"; +} & Record; + +const getDefaultTextForLocale = ( + key: string, + locale: string, + enDefault = "" +): string => { + // Loaded eagerly from locale JSON so default lookup stays synchronous. + const defaultsForLocale = componentDefaultRegistry[locale] ?? {}; + return defaultsForLocale[key] ?? enDefault; +}; + +const isBoldRichText = (rtf: RichText): boolean => { + return typeof rtf.html === "string" && //i.test(rtf.html); +}; + +const getPlainTextFromRichText = (rtf: RichText): string => { + if (typeof rtf.html !== "string") { + return ""; + } + + return rtf.html.replace(/<[^>]+>/g, "").trim(); +}; + +/** + * Builds a localized translatable string for all supported Visual Editor locales. + * + * Locale values are sourced from the component default registry by `key`. + * If a locale-specific value is missing, only English falls back to `enDefault`; + * non-English locales default to an empty string. + * + * @param key - Dot-delimited key in the locale defaults registry. + * @param enDefault - English fallback when no `en` registry value exists. + */ +export const defaultText = ( + key: string, + enDefault: string +): TranslatableString => { + const localizedDefaults: LocalizedDefaults = { + hasLocalizedValue: "true", + }; + + for (const locale of locales) { + localizedDefaults[locale] = getDefaultTextForLocale( + key, + locale, + locale === "en" ? enDefault : "" + ); + } + + return localizedDefaults; +}; + +/** + * Builds a localized translatable rich text value for all supported Visual Editor locales. + * + * Locale values are sourced from the component default registry by `key`. + * If a locale-specific value is missing, only English falls back to `enDefault`; + * non-English locales default to empty rich text. Rich text values are created + * with `getDefaultRTF` so `html` and `json` stay in sync. + * + * @param key - Dot-delimited key in the locale defaults registry. + * @param enDefault - English fallback when no `en` registry value exists. + */ +export const defaultRichText = ( + key: string, + enDefault: string | RichText +): TranslatableRichText => { + let baseRichText: RichText; + if (typeof enDefault === "string") { + baseRichText = getDefaultRTF(enDefault); + } else { + baseRichText = enDefault; + } + const enFallbackText = getPlainTextFromRichText(baseRichText); + const isBold = isBoldRichText(baseRichText); + + const localizedDefaults: Record & { + hasLocalizedValue: "true"; + } = { + hasLocalizedValue: "true", + }; + + for (const locale of locales) { + const fallbackText = locale === "en" ? enFallbackText : ""; + const localizedText = getDefaultTextForLocale(key, locale, fallbackText); + localizedDefaults[locale] = getDefaultRTF(localizedText, { isBold }); + } + + return localizedDefaults; +}; diff --git a/packages/visual-editor/src/utils/defaultLayoutTranslations.test.ts b/packages/visual-editor/src/utils/defaultLayoutTranslations.test.ts new file mode 100644 index 0000000000..ba208ba23f --- /dev/null +++ b/packages/visual-editor/src/utils/defaultLayoutTranslations.test.ts @@ -0,0 +1,194 @@ +import { describe, expect, it } from "vitest"; +import { defaultLayoutData } from "../vite-plugin/defaultLayoutData.ts"; +import { + injectTemplateLayoutDefaultTranslations, + isDefaultTemplateLayout, + processTemplateLayoutData, +} from "./defaultLayoutTranslations.ts"; +import { getDefaultRTF } from "../editor/TranslatableRichTextField.tsx"; +import { componentDefaultRegistry } from "./i18n/componentDefaultRegistry.ts"; +import type { StreamDocument } from "./types/StreamDocument.ts"; +import type { Data } from "@puckeditor/core"; + +type TestLayout = Record; +type TestStreamDocument = Pick; + +const buildStreamDocument = (locales: string[]): TestStreamDocument => ({ + _pageset: JSON.stringify({ + scope: { locales }, + }), +}); + +const buildLabelLayout = ( + labelOverrides: Record = {} +): TestLayout => ({ + root: { + props: { + label: { + hasLocalizedValue: "true", + en: "Button", + ...labelOverrides, + }, + }, + }, +}); + +const asData = (value: unknown): Data => value as Data; +const asStreamDocument = (value: TestStreamDocument): StreamDocument => + value as StreamDocument; + +describe("defaultLayoutTranslations", () => { + it("detects untouched defaults for directory and locator templates", () => { + const directoryLayout = JSON.parse(defaultLayoutData.directory); + const locatorLayout = JSON.parse(defaultLayoutData.locator); + + expect(isDefaultTemplateLayout(directoryLayout, "directory")).toBe(true); + expect(isDefaultTemplateLayout(locatorLayout, "locator")).toBe(true); + }); + + it("injects rich text locales from default content translations", () => { + const layout = { + root: { + props: { + body: { + hasLocalizedValue: "true", + en: getDefaultRTF("Banner Text"), + }, + }, + }, + }; + + injectTemplateLayoutDefaultTranslations( + asData(layout), + asStreamDocument(buildStreamDocument(["fr"])), + "main" + ); + + const expectedText = + componentDefaultRegistry.fr["componentDefaults.bannerText"]; + const frBody = (layout.root.props.body as Record).fr; + expect(frBody).toBeDefined(); + expect(frBody.html).toContain(expectedText); + expect(frBody.json).toContain(expectedText); + }); + + it("does not inject english defaults for locales without translations", () => { + const layout = buildLabelLayout(); + + const result = injectTemplateLayoutDefaultTranslations( + asData(layout), + asStreamDocument(buildStreamDocument(["zz"])), + "main" + ); + expect(result).toBe(layout as unknown as Data); + expect(layout.root.props.label.zz).toBeUndefined(); + expect(Object.keys(layout.root.props.label).sort()).toEqual([ + "en", + "hasLocalizedValue", + ]); + }); + + it("falls back to en when pageset is invalid", () => { + const layout = buildLabelLayout(); + + injectTemplateLayoutDefaultTranslations( + asData(layout), + asStreamDocument({ _pageset: "not-json" }), + "main" + ); + + expect(layout.root.props.label.en).toBe("Button"); + expect(Object.keys(layout.root.props.label).sort()).toEqual([ + "en", + "hasLocalizedValue", + ]); + }); + + it("skips rich text injection when en rich text shape is not recognized", () => { + const layout = { + root: { + props: { + body: { + hasLocalizedValue: "true", + en: { + html: "

Banner Text

", + json: "{}", + }, + }, + }, + }, + }; + + injectTemplateLayoutDefaultTranslations( + asData(layout), + asStreamDocument(buildStreamDocument(["fr"])), + "main" + ); + + expect((layout.root.props.body as Record).fr).toBeUndefined(); + }); + + it("processTemplateLayoutData injects defaults when raw layout is untouched", async () => { + const layoutData = JSON.parse(defaultLayoutData.main) as Data; + const processedLayout = asData(buildLabelLayout()); + const streamDocument = asStreamDocument(buildStreamDocument(["fr"])); + const processed = await processTemplateLayoutData({ + layoutData, + streamDocument, + templateId: "main", + buildProcessedLayout: async () => processedLayout, + }); + + expect((processed as TestLayout).root.props.label.fr).toBe( + componentDefaultRegistry.fr["componentDefaults.button"] + ); + }); + + it("processTemplateLayoutData supports sync buildProcessedLayout", () => { + const layoutData = JSON.parse(defaultLayoutData.main) as Data; + const processedLayout = asData(buildLabelLayout()); + const streamDocument = asStreamDocument(buildStreamDocument(["fr"])); + const processed = processTemplateLayoutData({ + layoutData, + streamDocument, + templateId: "main", + buildProcessedLayout: () => processedLayout, + }); + + expect(processed).toBe(processedLayout); + expect((processed as TestLayout).root.props.label.fr).toBe( + componentDefaultRegistry.fr["componentDefaults.button"] + ); + }); + + it("processTemplateLayoutData skips injection when raw layout is edited", async () => { + const layoutData = JSON.parse(defaultLayoutData.main) as Data; + (layoutData.content as Array)[0].props.styles.maxWidth = "wide"; + const processedLayout = asData(buildLabelLayout()); + + const streamDocument = asStreamDocument(buildStreamDocument(["fr"])); + const processed = await processTemplateLayoutData({ + layoutData, + streamDocument, + templateId: "main", + buildProcessedLayout: async () => processedLayout, + }); + + expect((processed as TestLayout).root.props.label.fr).toBeUndefined(); + }); + + it("processTemplateLayoutData is a no-op for unknown template ids", async () => { + const layoutData = JSON.parse(defaultLayoutData.main) as Data; + const processedLayout = asData(buildLabelLayout()); + const streamDocument = asStreamDocument(buildStreamDocument(["fr"])); + const processed = await processTemplateLayoutData({ + layoutData, + streamDocument, + templateId: "unknown-template", + buildProcessedLayout: async () => processedLayout, + }); + + expect(processed).toBe(processedLayout); + expect((processed as TestLayout).root.props.label.fr).toBeUndefined(); + }); +}); diff --git a/packages/visual-editor/src/utils/defaultLayoutTranslations.ts b/packages/visual-editor/src/utils/defaultLayoutTranslations.ts new file mode 100644 index 0000000000..7f56a6f699 --- /dev/null +++ b/packages/visual-editor/src/utils/defaultLayoutTranslations.ts @@ -0,0 +1,353 @@ +import type { Data } from "@puckeditor/core"; +import { getDefaultRTF } from "../editor/TranslatableRichTextField.tsx"; +import { defaultLayoutData } from "../vite-plugin/defaultLayoutData.ts"; +import { isDeepEqual } from "./deepEqual.ts"; +import { componentDefaultRegistry } from "./i18n/componentDefaultRegistry.ts"; +import { normalizeLocale } from "./normalizeLocale.ts"; +import type { StreamDocument } from "./types/StreamDocument.ts"; +import { DEFAULT_LOCALE } from "./pageSetLocales.ts"; + +type JsonObject = Record; + +type LocalizedObject = { + hasLocalizedValue: "true"; + [key: string]: unknown; +}; + +export type VisualEditorTemplateId = "main" | "directory" | "locator"; + +const defaultLayoutsByTemplate: Record = { + main: JSON.parse(defaultLayoutData.main), + directory: JSON.parse(defaultLayoutData.directory), + locator: JSON.parse(defaultLayoutData.locator), +}; + +const enDefaults = componentDefaultRegistry[DEFAULT_LOCALE] ?? {}; +const enValueToKeys = new Map(); + +for (const [key, value] of Object.entries(enDefaults)) { + const currentKeys = enValueToKeys.get(value) ?? []; + currentKeys.push(key); + enValueToKeys.set(value, currentKeys); +} + +const hasOwn = (obj: object, key: string): boolean => { + return Object.prototype.hasOwnProperty.call(obj, key); +}; + +const isPlainObject = (value: unknown): value is JsonObject => { + return typeof value === "object" && value !== null && !Array.isArray(value); +}; + +const stripNonSemanticIds = (node: unknown): unknown => { + if (Array.isArray(node)) { + return node.map(stripNonSemanticIds); + } + + if (!isPlainObject(node)) { + return node; + } + + const stripped: JsonObject = {}; + for (const [key, value] of Object.entries(node)) { + if (key === "id" && typeof value === "string") { + continue; + } + stripped[key] = stripNonSemanticIds(value); + } + + return stripped; +}; + +const normalizedDefaultLayoutsByTemplate: Record< + VisualEditorTemplateId, + unknown +> = Object.fromEntries( + Object.entries(defaultLayoutsByTemplate).map(([templateId, layout]) => [ + templateId, + stripNonSemanticIds(layout), + ]) +) as Record; + +const getTemplateLayout = (templateId: string): unknown | undefined => { + return defaultLayoutsByTemplate[templateId as VisualEditorTemplateId]; +}; + +const getNormalizedTemplateLayout = ( + templateId: string +): unknown | undefined => { + return normalizedDefaultLayoutsByTemplate[ + templateId as VisualEditorTemplateId + ]; +}; + +const getTargetLocales = (streamDocument: StreamDocument): string[] => { + try { + const parsedPageset = JSON.parse(streamDocument?._pageset ?? "{}"); + const pagesetLocales = parsedPageset?.scope?.locales; + + if (!Array.isArray(pagesetLocales) || pagesetLocales.length === 0) { + return [DEFAULT_LOCALE]; + } + + const normalizedLocales = pagesetLocales + .filter((locale: unknown): locale is string => typeof locale === "string") + .map((locale) => normalizeLocale(locale)); + + if (normalizedLocales.length === 0) { + return [DEFAULT_LOCALE]; + } + + // Include both regional and base locales (for example, "es-MX" and "es"). + const expandedLocales = new Set(); + for (const locale of normalizedLocales) { + expandedLocales.add(locale); + expandedLocales.add(locale.split("-")[0]); + } + + return [...expandedLocales]; + } catch { + return [DEFAULT_LOCALE]; + } +}; + +const getLocaleDefaultMap = (locale: string): Record => { + const normalizedLocale = normalizeLocale(locale); + const baseLocale = normalizedLocale.split("-")[0]; + + return ( + componentDefaultRegistry[normalizedLocale] ?? + componentDefaultRegistry[baseLocale] ?? + {} + ); +}; + +const getLocalizedDefaultText = ( + locale: string, + enValue: string +): string | undefined => { + const keys = enValueToKeys.get(enValue); + if (!keys || keys.length === 0) { + return undefined; + } + + const localeDefaults = getLocaleDefaultMap(locale); + const candidateValues = new Set(); + + // One English string may map to multiple default keys. + // If locale values disagree across keys, skip injection to avoid guessing. + for (const key of keys) { + const value = localeDefaults[key]; + if (value === undefined) { + return undefined; + } + candidateValues.add(value); + } + + if (candidateValues.size !== 1) { + return undefined; + } + + return candidateValues.values().next().value; +}; + +const extractDefaultRichTextInfo = ( + value: unknown +): { text: string; isBold: boolean } | undefined => { + if (!isPlainObject(value) || typeof value.html !== "string") { + return undefined; + } + + const match = value.html.match(/<(strong|span)>(.*?)<\/\1>/i); + if (!match) { + return undefined; + } + + return { + isBold: match[1].toLowerCase() === "strong", + text: match[2], + }; +}; + +const injectMissingLocaleValues = ( + node: LocalizedObject, + locales: string[], + resolveValue: (locale: string) => unknown +): void => { + for (const locale of locales) { + if (hasOwn(node, locale)) { + continue; + } + + const value = resolveValue(locale); + if (value !== undefined) { + node[locale] = value; + } + } +}; + +const injectLocalizedValues = (node: unknown, locales: string[]): void => { + if (Array.isArray(node)) { + node.forEach((item) => injectLocalizedValues(item, locales)); + return; + } + + if (!isPlainObject(node)) { + return; + } + + const localizedNode = node as LocalizedObject; + if (localizedNode.hasLocalizedValue === "true") { + const enValue = localizedNode.en; + + if (typeof enValue === "string") { + injectMissingLocaleValues(localizedNode, locales, (locale) => { + return getLocalizedDefaultText(locale, enValue); + }); + } else { + const richTextInfo = extractDefaultRichTextInfo(enValue); + if (richTextInfo) { + injectMissingLocaleValues(localizedNode, locales, (locale) => { + const localizedText = getLocalizedDefaultText( + locale, + richTextInfo.text + ); + return localizedText === undefined + ? undefined + : getDefaultRTF(localizedText, { isBold: richTextInfo.isBold }); + }); + } + } + } + + for (const value of Object.values(node)) { + injectLocalizedValues(value, locales); + } +}; + +type ProcessTemplateLayoutDataOptions = { + layoutData: Data; + streamDocument: StreamDocument; + templateId: string; + buildProcessedLayout: () => TLayout | Promise; +}; + +/** + * Checks whether a layout matches the canonical default layout for a template. + * + * Differences in generated string `id` fields are ignored. + * + * @param layout - Layout data to compare. + * @param templateId - Template id (`main`, `directory`, or `locator`). + * @returns `true` when the layout is semantically unchanged from the template default. + */ +export const isDefaultTemplateLayout = ( + layout: unknown, + templateId: string +): boolean => { + const defaultLayout = getNormalizedTemplateLayout(templateId); + if (defaultLayout === undefined) { + return false; + } + + return isDeepEqual(stripNonSemanticIds(layout), defaultLayout); +}; + +/** + * Injects missing localized values for known default template content. + * + * This mutates `layout` in place and also returns the same layout object. + * Existing locale values are never overwritten. + * + * @param layout - Layout data to enrich. + * @param streamDocument - Stream document used to determine target locales. + * @param templateId - Template id (`main`, `directory`, or `locator`). + * @returns The same `layout` object after injection. + */ +export const injectTemplateLayoutDefaultTranslations = ( + layout: Data, + streamDocument: StreamDocument, + templateId: string +): Data => { + if (getTemplateLayout(templateId) === undefined) { + return layout; + } + + const locales = getTargetLocales(streamDocument); + injectLocalizedValues(layout, locales); + return layout; +}; + +type ProcessTemplateLayoutData = { + ( + options: Omit< + ProcessTemplateLayoutDataOptions, + "buildProcessedLayout" + > & { + buildProcessedLayout: () => TLayout; + } + ): TLayout; + ( + options: Omit< + ProcessTemplateLayoutDataOptions, + "buildProcessedLayout" + > & { + buildProcessedLayout: () => Promise; + } + ): Promise; +}; + +/** + * Runs template layout processing and conditionally injects default translations. + * + * The default-layout check is performed against `layoutData` before running + * `buildProcessedLayout`, and injection is applied only when the layout was + * still untouched at that point. + * + * @param options.layoutData - layout before migration/resolution. + * @param options.streamDocument - Stream document used for locale selection. + * @param options.templateId - Template id (`main`, `directory`, or `locator`). + * @param options.buildProcessedLayout - Function that returns the processed layout + * (sync or async). + * @returns Processed layout, with injected default translations when eligible. + */ +export const processTemplateLayoutData: ProcessTemplateLayoutData = < + TLayout extends Data, +>({ + layoutData, + streamDocument, + templateId, + buildProcessedLayout, +}: ProcessTemplateLayoutDataOptions): TLayout | Promise => { + const shouldInjectDefaultTranslations = isDefaultTemplateLayout( + layoutData, + templateId + ); + + console.log( + "shouldInjectDefaultTranslations:", + shouldInjectDefaultTranslations + ); + + const applyInjection = (processedLayout: TLayout): TLayout => { + if (!shouldInjectDefaultTranslations) { + return processedLayout; + } + + return injectTemplateLayoutDefaultTranslations( + processedLayout, + streamDocument, + templateId + ) as TLayout; + }; + + const processedLayout = buildProcessedLayout(); + if ( + processedLayout && + typeof (processedLayout as Promise).then === "function" + ) { + return (processedLayout as Promise).then(applyInjection); + } + + return applyInjection(processedLayout as TLayout); +}; diff --git a/packages/visual-editor/src/utils/i18n/componentDefaultRegistry.ts b/packages/visual-editor/src/utils/i18n/componentDefaultRegistry.ts new file mode 100644 index 0000000000..0066b292af --- /dev/null +++ b/packages/visual-editor/src/utils/i18n/componentDefaultRegistry.ts @@ -0,0 +1,90 @@ +type JsonValue = + | string + | number + | boolean + | null + | JsonValue[] + | { [key: string]: JsonValue }; + +type LocaleModule = { + default: JsonValue; +}; + +type ComponentsLocaleRoot = { + componentDefaults?: JsonValue; +}; + +const COMPONENT_DEFAULTS_LOCALE_PATH_REGEX = + /\/components\/([^/]+)\/visual-editor\.json$/; +const COMPONENT_DEFAULTS_NAMESPACE = "componentDefaults"; + +const componentDefaultsLocaleModules = import.meta.glob( + "../../../locales/components/*/visual-editor.json", + { + eager: true, + } +) as Record; + +const flattenStringLeafNodes = ( + value: JsonValue | undefined, + prefix = "", + out: Record = {} +): Record => { + if ( + value === null || + value === undefined || + typeof value !== "object" || + Array.isArray(value) + ) { + if (typeof value === "string" && prefix) { + out[prefix] = value; + } + return out; + } + + for (const [key, child] of Object.entries(value)) { + const nextPrefix = prefix ? `${prefix}.${key}` : key; + flattenStringLeafNodes(child as JsonValue, nextPrefix, out); + } + + return out; +}; + +const getLocaleFromModulePath = ( + path: string, + regex: RegExp +): string | undefined => { + const match = path.match(regex); + return match?.[1]; +}; + +const buildRegistry = (): Record> => { + const registry: Record> = {}; + + // Source: componentDefaults key in locales/components//visual-editor.json + for (const [path, mod] of Object.entries(componentDefaultsLocaleModules)) { + const locale = getLocaleFromModulePath( + path, + COMPONENT_DEFAULTS_LOCALE_PATH_REGEX + ); + if (!locale) { + continue; + } + + const localeRoot = (mod.default as ComponentsLocaleRoot) ?? {}; + registry[locale] = flattenStringLeafNodes( + localeRoot.componentDefaults as JsonValue, + COMPONENT_DEFAULTS_NAMESPACE + ); + } + + return registry; +}; + +/** + * Flattened map of component default content values by locale. + * + * Source files are loaded from: + * `locales/components//visual-editor.json` at `componentDefaults`. + */ +export const componentDefaultRegistry = buildRegistry(); diff --git a/packages/visual-editor/src/utils/i18n/getTranslations.ts b/packages/visual-editor/src/utils/i18n/getTranslations.ts index b8e13d36cc..94d35a9888 100644 --- a/packages/visual-editor/src/utils/i18n/getTranslations.ts +++ b/packages/visual-editor/src/utils/i18n/getTranslations.ts @@ -1,4 +1,4 @@ -const supportedRegionalLocales = ["en-GB", "zh-TW"]; +import { resolveTranslationLocale } from "./resolveTranslationLocale.ts"; /** * Dynamically imports the translation file for the given locale. @@ -12,13 +12,7 @@ export const getTranslations = async ( return {}; } - let strippedLocale = locale; - if (!supportedRegionalLocales.includes(locale)) { - strippedLocale = locale.split("-")[0]; - } - if (locale.includes("zh-Hant")) { - strippedLocale = "zh-TW"; - } + const strippedLocale = resolveTranslationLocale(locale); try { const module = await import( diff --git a/packages/visual-editor/src/utils/i18n/resolveTranslationLocale.test.ts b/packages/visual-editor/src/utils/i18n/resolveTranslationLocale.test.ts new file mode 100644 index 0000000000..4b2ca5ff2c --- /dev/null +++ b/packages/visual-editor/src/utils/i18n/resolveTranslationLocale.test.ts @@ -0,0 +1,23 @@ +import { describe, expect, it } from "vitest"; +import { resolveTranslationLocale } from "./resolveTranslationLocale.ts"; + +describe("resolveTranslationLocale", () => { + it("returns empty string for empty input", () => { + expect(resolveTranslationLocale("")).toBe(""); + }); + + it("preserves supported regional locales", () => { + expect(resolveTranslationLocale("en-GB")).toBe("en-GB"); + expect(resolveTranslationLocale("zh-TW")).toBe("zh-TW"); + }); + + it("maps zh-Hant locales to zh-TW", () => { + expect(resolveTranslationLocale("zh-Hant")).toBe("zh-TW"); + expect(resolveTranslationLocale("zh-Hant-HK")).toBe("zh-TW"); + }); + + it("falls back to base locale for unsupported regional locales", () => { + expect(resolveTranslationLocale("es-MX")).toBe("es"); + expect(resolveTranslationLocale("fr-CA")).toBe("fr"); + }); +}); diff --git a/packages/visual-editor/src/utils/i18n/resolveTranslationLocale.ts b/packages/visual-editor/src/utils/i18n/resolveTranslationLocale.ts new file mode 100644 index 0000000000..7791542a01 --- /dev/null +++ b/packages/visual-editor/src/utils/i18n/resolveTranslationLocale.ts @@ -0,0 +1,27 @@ +const supportedRegionalLocales = new Set(["en-GB", "zh-TW"]); + +/** + * Maps an input locale to the locale folder used by translation assets. + * Examples: + * - "es-MX" => "es" + * - "en-GB" => "en-GB" + * - "zh-Hant-HK" => "zh-TW" + * + * @param locale - Input locale from platform or document context. + * @returns Locale code that maps to an existing translations directory. + */ +export const resolveTranslationLocale = (locale: string): string => { + if (!locale) { + return ""; + } + + if (locale.includes("zh-Hant")) { + return "zh-TW"; + } + + if (supportedRegionalLocales.has(locale)) { + return locale; + } + + return locale.split("-")[0]; +}; diff --git a/packages/visual-editor/src/utils/index.ts b/packages/visual-editor/src/utils/index.ts index ce87a11cbe..ed6adad6cf 100644 --- a/packages/visual-editor/src/utils/index.ts +++ b/packages/visual-editor/src/utils/index.ts @@ -46,3 +46,5 @@ export { type FontRegistry, } from "./fonts/visualEditorFonts.ts"; export { withPropOverrides } from "./withPropOverrides.ts"; +export { defaultText, defaultRichText } from "./defaultContent.ts"; +export { processTemplateLayoutData } from "./defaultLayoutTranslations.ts"; diff --git a/packages/visual-editor/src/utils/resolveComponentData.test.tsx b/packages/visual-editor/src/utils/resolveComponentData.test.tsx index ae7c18e451..4a4fa12264 100644 --- a/packages/visual-editor/src/utils/resolveComponentData.test.tsx +++ b/packages/visual-editor/src/utils/resolveComponentData.test.tsx @@ -274,14 +274,6 @@ describe("resolveComponentData", () => { }; expect(resolveComponentData(data, "fr", mockDocument)).toBe(""); }); - - it("handles a null value from the document gracefully", () => { - const field: YextEntityField = { - constantValue: null, - field: "c_nullField", - }; - expect(resolveComponentData(field, "en", mockDocument)).toBeNull(); - }); }); it("handles a direct string value by returning it", () => { @@ -366,4 +358,12 @@ describe("resolveComponentData plain text output", () => { }) ).toBe(""); }); + + it("handles a null value from the document gracefully", () => { + const field: YextEntityField = { + constantValue: null, + field: "c_nullField", + }; + expect(resolveComponentData(field, "en", mockDocument)).toBeNull(); + }); }); diff --git a/packages/visual-editor/src/vite-plugin/defaultLayoutData.ts b/packages/visual-editor/src/vite-plugin/defaultLayoutData.ts index 7b52d849be..5020feca5e 100644 --- a/packages/visual-editor/src/vite-plugin/defaultLayoutData.ts +++ b/packages/visual-editor/src/vite-plugin/defaultLayoutData.ts @@ -44,12 +44,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg", - height: 100, - width: 100, - }, + url: "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg", + height: 100, + width: 100, }, constantValueEnabled: true, }, @@ -354,7 +351,7 @@ const mainDefaultLayout = { constantValue: { en: { json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Banner Text","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Banner Text

', + html: '

Banner Text

', }, hasLocalizedValue: "true", }, @@ -402,12 +399,9 @@ const mainDefaultLayout = { backgroundImage: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&width=640&height=360&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&width=640&height=360&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -505,12 +499,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&width=640&height=360&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&width=640&height=360&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -877,11 +868,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 100 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 100 characters

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 100 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 100 characters

', }, constantValueEnabled: true, }, @@ -910,12 +898,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -1073,12 +1058,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1504548840739-580b10ae7715?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1504548840739-580b10ae7715?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -1105,7 +1087,7 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: "Product Title", + en: "Product Name", hasLocalizedValue: "true", }, constantValueEnabled: true, @@ -1127,11 +1109,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', }, constantValueEnabled: true, }, @@ -1191,7 +1170,7 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: "Category, Pricing, etc", + en: "Category", hasLocalizedValue: "true", }, constantValueEnabled: true, @@ -1260,12 +1239,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -1292,7 +1268,7 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: "Product Title", + en: "Product Name", hasLocalizedValue: "true", }, constantValueEnabled: true, @@ -1314,11 +1290,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', }, constantValueEnabled: true, }, @@ -1447,12 +1420,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -1479,7 +1449,7 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: "Product Title", + en: "Product Name", hasLocalizedValue: "true", }, constantValueEnabled: true, @@ -1501,11 +1471,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', }, constantValueEnabled: true, }, @@ -1705,10 +1672,8 @@ const mainDefaultLayout = { data: { text: { field: "", - constantValue: { - en: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", - hasLocalizedValue: "true", - }, + constantValue: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", constantValueEnabled: true, }, }, @@ -1793,10 +1758,9 @@ const mainDefaultLayout = { data: { text: { field: "", - constantValue: { - en: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", - hasLocalizedValue: "true", - }, + constantValue: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", + constantValueEnabled: true, }, }, @@ -1881,10 +1845,8 @@ const mainDefaultLayout = { data: { text: { field: "", - constantValue: { - en: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", - hasLocalizedValue: "true", - }, + constantValue: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", constantValueEnabled: true, }, }, @@ -2023,20 +1985,14 @@ const mainDefaultLayout = { data: { question: { constantValueEnabled: true, - constantValue: { - en: "Question Lorem ipsum dolor sit amet?", - hasLocalizedValue: "true", - }, + constantValue: "Question Lorem ipsum dolor sit amet?", field: "", }, answer: { constantValueEnabled: true, constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

', }, field: "", }, @@ -2055,20 +2011,14 @@ const mainDefaultLayout = { data: { question: { constantValueEnabled: true, - constantValue: { - en: "Question Lorem ipsum dolor sit amet?", - hasLocalizedValue: "true", - }, + constantValue: "Question Lorem ipsum dolor sit amet?", field: "", }, answer: { constantValueEnabled: true, constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

', }, field: "", }, @@ -2087,20 +2037,14 @@ const mainDefaultLayout = { data: { question: { constantValueEnabled: true, - constantValue: { - en: "Question Lorem ipsum dolor sit amet?", - hasLocalizedValue: "true", - }, + constantValue: "Question Lorem ipsum dolor sit amet?", field: "", }, answer: { constantValueEnabled: true, constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

', }, field: "", }, @@ -2198,12 +2142,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://a.mktgcdn.com/p/EQRaOZG5zFlcbEHYaH16EV6WmkzV8kd6vMd73Myg4AA/196x196.jpg", - height: 80, - width: 80, - }, + url: "https://a.mktgcdn.com/p/EQRaOZG5zFlcbEHYaH16EV6WmkzV8kd6vMd73Myg4AA/196x196.jpg", + height: 80, + width: 80, }, constantValueEnabled: true, }, @@ -2388,12 +2329,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://a.mktgcdn.com/p/EQRaOZG5zFlcbEHYaH16EV6WmkzV8kd6vMd73Myg4AA/196x196.jpg", - height: 80, - width: 80, - }, + url: "https://a.mktgcdn.com/p/EQRaOZG5zFlcbEHYaH16EV6WmkzV8kd6vMd73Myg4AA/196x196.jpg", + height: 80, + width: 80, }, constantValueEnabled: true, }, @@ -2578,12 +2516,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://a.mktgcdn.com/p/EQRaOZG5zFlcbEHYaH16EV6WmkzV8kd6vMd73Myg4AA/196x196.jpg", - height: 80, - width: 80, - }, + url: "https://a.mktgcdn.com/p/EQRaOZG5zFlcbEHYaH16EV6WmkzV8kd6vMd73Myg4AA/196x196.jpg", + height: 80, + width: 80, }, constantValueEnabled: true, }, @@ -2846,12 +2781,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -2921,11 +2853,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters

', }, constantValueEnabled: true, }, @@ -3030,12 +2959,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -3105,11 +3031,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters

', }, constantValueEnabled: true, }, @@ -3214,12 +3137,9 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1504548840739-580b10ae7715?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - }, + url: "https://images.unsplash.com/photo-1504548840739-580b10ae7715?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, }, constantValueEnabled: true, }, @@ -3289,11 +3209,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo.Lorem ipsum dolor sit amet, consectetur adipiscing. Maecenas finibus placerat justo. 300 characters

', }, constantValueEnabled: true, }, @@ -3564,12 +3481,12 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1504548840739-580b10ae7715?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - alternateText: "Event Image", + url: "https://images.unsplash.com/photo-1504548840739-580b10ae7715?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, + alternateText: { + en: "Event Image", + hasLocalizedValue: "true", }, }, constantValueEnabled: true, @@ -3643,11 +3560,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', }, constantValueEnabled: true, }, @@ -3736,12 +3650,12 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - alternateText: "Event Image", + url: "https://images.unsplash.com/photo-1502252430442-aac78f397426?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, + alternateText: { + en: "Event Image", + hasLocalizedValue: "true", }, }, constantValueEnabled: true, @@ -3815,11 +3729,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', }, constantValueEnabled: true, }, @@ -3908,12 +3819,12 @@ const mainDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", - height: 360, - width: 640, - alternateText: "Event Image", + url: "https://images.unsplash.com/photo-1755745360285-0633c972b0fd?ixlib=rb-4.1.0&q=85&fm=jpg&crop=entropy&cs=srgb&height=360&width=640&fit=max", + height: 360, + width: 640, + alternateText: { + en: "Event Image", + hasLocalizedValue: "true", }, }, constantValueEnabled: true, @@ -3987,11 +3898,8 @@ const mainDefaultLayout = { text: { field: "", constantValue: { - en: { - json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', - html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', - }, - hasLocalizedValue: "true", + json: '{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}', + html: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

', }, constantValueEnabled: true, }, @@ -4162,22 +4070,13 @@ const mainDefaultLayout = { image: { field: "", constantValue: { + url: "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg", height: 100, width: 100, alternateText: { en: "Logo", hasLocalizedValue: "true", }, - hasLocalizedValue: "true", - en: { - url: "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg", - height: 100, - width: 100, - alternateText: { - en: "Logo", - hasLocalizedValue: "true", - }, - }, }, constantValueEnabled: true, }, @@ -4655,12 +4554,9 @@ const directoryDefaultLayout = { image: { field: "", constantValue: { - hasLocalizedValue: "true", - en: { - url: "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg", - height: 100, - width: 100, - }, + url: "https://a.mktgcdn.com/p/wa83C1O1lvtxHI9cGqEdP2HILyUzbD0jvtzwWpOAJfE/196x196.jpg", + height: 100, + width: 100, }, constantValueEnabled: true, }, diff --git a/packages/visual-editor/src/vite-plugin/templates/directory.tsx b/packages/visual-editor/src/vite-plugin/templates/directory.tsx index 64f586b542..b4cf9033d4 100644 --- a/packages/visual-editor/src/vite-plugin/templates/directory.tsx +++ b/packages/visual-editor/src/vite-plugin/templates/directory.tsx @@ -23,6 +23,7 @@ import { defaultThemeConfig, directoryConfig, getSchema, + processTemplateLayoutData, injectTranslations, getCanonicalUrl, resolveUrlTemplate, @@ -102,16 +103,24 @@ export const getPath: GetPath = ({ export const transformProps: TransformProps = async (props) => { const { document } = props; - - const migratedData = migrate( - JSON.parse(document.__.layout), - migrationRegistry, - directoryConfig, - document - ); - const resolvedPuckData = await resolveAllData(migratedData, directoryConfig, { + const layoutData = JSON.parse(document.__.layout); + const resolvedPuckData = await processTemplateLayoutData({ + layoutData, streamDocument: document, + templateId: "directory", + buildProcessedLayout: async () => { + const migratedData = migrate( + layoutData, + migrationRegistry, + directoryConfig, + document + ); + return await resolveAllData(migratedData, directoryConfig, { + streamDocument: document, + }); + }, }); + document.__.layout = JSON.stringify(resolvedPuckData); const translations = await injectTranslations(document); diff --git a/packages/visual-editor/src/vite-plugin/templates/locator.tsx b/packages/visual-editor/src/vite-plugin/templates/locator.tsx index 63f0da4cda..05e3bced48 100644 --- a/packages/visual-editor/src/vite-plugin/templates/locator.tsx +++ b/packages/visual-editor/src/vite-plugin/templates/locator.tsx @@ -21,6 +21,7 @@ import { defaultThemeConfig, locatorConfig, getSchema, + processTemplateLayoutData, injectTranslations, getCanonicalUrl, migrate, @@ -103,16 +104,24 @@ export const getPath: GetPath = ({ export const transformProps: TransformProps = async (props) => { const { document } = props; - - const migratedData = migrate( - JSON.parse(document.__.layout), - migrationRegistry, - locatorConfig, - document - ); - const resolvedPuckData = await resolveAllData(migratedData, locatorConfig, { + const layoutData = JSON.parse(document.__.layout); + const resolvedPuckData = await processTemplateLayoutData({ + layoutData, streamDocument: document, + templateId: "locator", + buildProcessedLayout: async () => { + const migratedData = migrate( + layoutData, + migrationRegistry, + locatorConfig, + document + ); + return await resolveAllData(migratedData, locatorConfig, { + streamDocument: document, + }); + }, }); + document.__.layout = JSON.stringify(resolvedPuckData); const translations = await injectTranslations(document); diff --git a/packages/visual-editor/src/vite-plugin/templates/main.tsx b/packages/visual-editor/src/vite-plugin/templates/main.tsx index fb88070905..bf8baa4dde 100644 --- a/packages/visual-editor/src/vite-plugin/templates/main.tsx +++ b/packages/visual-editor/src/vite-plugin/templates/main.tsx @@ -25,6 +25,7 @@ import { defaultThemeConfig, mainConfig, getSchema, + processTemplateLayoutData, injectTranslations, getCanonicalUrl, resolveUrlTemplate, @@ -105,16 +106,24 @@ export const getPath: GetPath = ({ export const transformProps: TransformProps = async (props) => { const { document } = props; - - const migratedData = migrate( - JSON.parse(document.__.layout), - migrationRegistry, - mainConfig, - document - ); - const resolvedPuckData = await resolveAllData(migratedData, mainConfig, { + const layoutData = JSON.parse(document.__.layout); + const resolvedPuckData = await processTemplateLayoutData({ + layoutData, streamDocument: document, + templateId: "main", + buildProcessedLayout: async () => { + const migratedData = migrate( + layoutData, + migrationRegistry, + mainConfig, + document + ); + return await resolveAllData(migratedData, mainConfig, { + streamDocument: document, + }); + }, }); + document.__.layout = JSON.stringify(resolvedPuckData); const translations = await injectTranslations(document);