✅ ≥1.0 mm cut · ⚠️ 0.8–1.0 mm fragile · ✏️ <0.8 mm engrave only
Engraved text
Love story
Click a heart on the board to select it — then search the city, scroll to zoom, drag to move the map. ♥ adds a golden heart you can drag.
Map pins engraved marker
15 mm
Click a shape to drop it at the map centre, then drag it into place.
Map labels engraved text tag
Short name (max 20 chars). Drag it on the map to place it — engraved in the street colour, aligned to the map.
Back engraving hidden message
0 / 300
Order data = coordinates + normalized zoom + crop bbox + all options → reproducible in Maker Studio.
Find your city
Map style
Shape
Circle — available in the Cut-out style.
Orientation
Size
Hearts
Frame color
Black
Color
♥
Order summary (goes to Shopify order)
📱 → 📱↻ Please rotate your phone The map designer needs the whole screen — turn your device sideways.
Tłumaczy w locie: teksty, placeholdery, opcje, tytuły, alerty. Nie rusza mapy.
Przełącznik EN/PL/DE dodaje się na górze panelu. */
(function(){
"use strict";
/* ---- wykrywanie języka: Shopify locale -> ?lang -> localStorage -> przeglądarka ---- */
var shopLocale = ("pl" || "en").toLowerCase().slice(0,2);
var qp=null, saved=null;
try{ qp=new URLSearchParams(location.search).get("lang"); }catch(e){}
try{ saved=localStorage.getItem("vwa_lang"); }catch(e){}
var LANG = (qp || saved || shopLocale || (navigator.language||"en").slice(0,2) || "en").toLowerCase();
if(LANG!=="pl" && LANG!=="de") LANG="en";
/* ---- słownik: dokładny angielski tekst -> {pl, de} ---- */
var I18N = {
/* nagłówki / etykiety */
"Design Your Wooden Map":{pl:"Zaprojektuj swoją drewnianą mapę",de:"Gestalte deine Holzkarte"},
"← Back to shop":{pl:"← Wróć do sklepu",de:"← Zurück zum Shop"},
"City":{pl:"Miasto",de:"Stadt"},
"Style":{pl:"Styl",de:"Stil"},
"Size":{pl:"Rozmiar",de:"Größe"},
"Color":{pl:"Kolor",de:"Farbe"},
"Frame":{pl:"Rama",de:"Rahmen"},
"Zoom":{pl:"Przybliżenie",de:"Zoom"},
"Shape":{pl:"Kształt",de:"Form"},
"Orientation":{pl:"Orientacja",de:"Ausrichtung"},
"Hearts":{pl:"Serca",de:"Herzen"},
"Frame color":{pl:"Kolor ramy",de:"Rahmenfarbe"},
"Map style":{pl:"Styl mapy",de:"Kartenstil"},
"Find your city":{pl:"Znajdź swoje miasto",de:"Finde deine Stadt"},
"Engraved text":{pl:"Grawerowany tekst",de:"Gravierter Text"},
"Map pins":{pl:"Pinezki na mapie",de:"Karten-Pins"},
"Map labels":{pl:"Tabliczki na mapie",de:"Karten-Beschriftungen"},
"Back engraving":{pl:"Grawer z tyłu",de:"Rückseiten-Gravur"},
"Love story":{pl:"Historia miłości",de:"Liebesgeschichte"},
"Message panel":{pl:"Panel z wiadomością",de:"Nachrichtenfeld"},
"Key holder header":{pl:"Nagłówek wieszaka na klucze",de:"Schlüsselbrett-Kopf"},
"Hearts — which map are you editing?":{pl:"Serca — którą mapę edytujesz?",de:"Herzen — welche Karte bearbeitest du?"},
"Order summary (goes to Shopify order)":{pl:"Podsumowanie zamówienia (trafia do zamówienia Shopify)",de:"Bestellübersicht (geht in die Shopify-Bestellung)"},
/* podpisy w nagłówkach */
"engraved marker":{pl:"grawerowany znacznik",de:"gravierte Markierung"},
"engraved text tag":{pl:"grawerowana tabliczka",de:"gravierte Textmarke"},
"hidden message":{pl:"ukryta wiadomość",de:"versteckte Nachricht"},
/* przyciski główne */
"🛒 Order Map":{pl:"🛒 Zamów mapę",de:"🛒 Karte bestellen"},
"🔔 Let me know when it's available":{pl:"🔔 Powiadom mnie, gdy będzie dostępne",de:"🔔 Benachrichtige mich, wenn verfügbar"},
"👁 Show product preview":{pl:"👁 Pokaż podgląd produktu",de:"👁 Produktvorschau anzeigen"},
"🗺 Back to raw map":{pl:"🗺 Wróć do surowej mapy",de:"🗺 Zurück zur Rohkarte"},
"⤓ Load design code":{pl:"⤓ Wczytaj kod projektu",de:"⤓ Design-Code laden"},
"Details (production data)":{pl:"Szczegóły (dane produkcyjne)",de:"Details (Produktionsdaten)"},
"🧡 ETSY ORDER CODE":{pl:"🧡 KOD ZAMÓWIENIA ETSY",de:"🧡 ETSY-BESTELLCODE"},
"🧡 Etsy order code":{pl:"🧡 Kod zamówienia Etsy",de:"🧡 Etsy-Bestellcode"},
"+ Add label":{pl:"+ Dodaj tabliczkę",de:"+ Beschriftung hinzufügen"},
"✎ Write a message on the back":{pl:"✎ Napisz wiadomość z tyłu",de:"✎ Nachricht auf die Rückseite schreiben"},
"🗺 Back to the map":{pl:"🗺 Wróć do mapy",de:"🗺 Zurück zur Karte"},
"🔍 Search":{pl:"🔍 Szukaj",de:"🔍 Suchen"},
"✕ Remove selected pin":{pl:"✕ Usuń wybraną pinezkę",de:"✕ Ausgewählten Pin entfernen"},
"Copy":{pl:"Kopiuj",de:"Kopieren"},
"Copied!":{pl:"Skopiowano!",de:"Kopiert!"},
"Close":{pl:"Zamknij",de:"Schließen"},
"Notify me":{pl:"Powiadom mnie",de:"Benachrichtigen"},
"📋 Copy code":{pl:"📋 Kopiuj kod",de:"📋 Code kopieren"},
/* warstwy */
"Highways":{pl:"Autostrady",de:"Autobahnen"},
"Roads":{pl:"Drogi",de:"Landstraßen"},
"Streets":{pl:"Ulice",de:"Straßen"},
"Paths":{pl:"Ścieżki",de:"Wege"},
"Rails":{pl:"Tory",de:"Schienen"},
"Water":{pl:"Woda",de:"Wasser"},
"Parks / green (engraved, one shade)":{pl:"Parki / zieleń (grawer, jeden odcień)",de:"Parks / Grün (graviert, ein Ton)"},
"Line thickness":{pl:"Grubość linii",de:"Linienstärke"},
"roads · streets · water · parks — optional fine-tuning":{pl:"drogi · ulice · woda · parki — opcjonalne dostrojenie",de:"Straßen · Wege · Wasser · Parks — optionale Feinabstimmung"},
"✅ ≥1.0 mm cut · ⚠️ 0.8–1.0 mm fragile · ✏️ <0.8 mm engrave only":{pl:"✅ ≥1,0 mm cięcie · ⚠️ 0,8–1,0 mm delikatne · ✏️ <0,8 mm tylko grawer",de:"✅ ≥1,0 mm Schnitt · ⚠️ 0,8–1,0 mm fragil · ✏️ <0,8 mm nur Gravur"},
"Text size":{pl:"Rozmiar tekstu",de:"Textgröße"},
"auto-fit keeps proportions":{pl:"auto-dopasowanie zachowuje proporcje",de:"Auto-Anpassung behält Proportionen"},
"Add coordinates under the name":{pl:"Dodaj współrzędne pod nazwą",de:"Koordinaten unter dem Namen hinzufügen"},
"Show coordinates line":{pl:"Pokaż linię współrzędnych",de:"Koordinatenzeile anzeigen"},
"Position ↑↓":{pl:"Pozycja ↑↓",de:"Position ↑↓"},
"Position ←→":{pl:"Pozycja ←→",de:"Position ←→"},
/* placeholdery */
"Search city, address, shop, club…":{pl:"Szukaj miasta, adresu, sklepu, klubu…",de:"Stadt, Adresse, Geschäft, Club suchen…"},
"e.g. Kraków — Where it all began":{pl:"np. Kraków — Gdzie się wszystko zaczęło",de:"z. B. Krakau — Wo alles begann"},
"e.g. Folkestone":{pl:"np. Folkestone",de:"z. B. Folkestone"},
"LABEL":{pl:"TABLICZKA",de:"BESCHRIFTUNG"},
"Headline":{pl:"Nagłówek",de:"Überschrift"},
"Your hidden message… (max 300 characters)":{pl:"Twoja ukryta wiadomość… (max 300 znaków)",de:"Deine versteckte Nachricht… (max. 300 Zeichen)"},
"City name above heart (optional)":{pl:"Nazwa miasta nad sercem (opcjonalnie)",de:"Stadtname über dem Herz (optional)"},
"Forever starts here (optional)":{pl:"Tu zaczyna się wieczność (opcjonalnie)",de:"Für immer beginnt hier (optional)"},
"Your own headline":{pl:"Twój własny nagłówek",de:"Deine eigene Überschrift"},
"Your own text":{pl:"Twój własny tekst",de:"Dein eigener Text"},
/* czcionki (opcje) */
"Montserrat — modern bold":{pl:"Montserrat — nowoczesny pogrubiony",de:"Montserrat — modern fett"},
"Bebas Neue — tall caps":{pl:"Bebas Neue — wysokie wersaliki",de:"Bebas Neue — hohe Großbuchstaben"},
"Oswald — condensed":{pl:"Oswald — zwężony",de:"Oswald — schmal"},
"Archivo Black — heavy":{pl:"Archivo Black — ciężki",de:"Archivo Black — schwer"},
"Allerta Stencil — cut-out":{pl:"Allerta Stencil — ażur",de:"Allerta Stencil — Schablone"},
"Stardos Stencil — cut-out":{pl:"Stardos Stencil — ażur",de:"Stardos Stencil — Schablone"},
"Saira Stencil One — cut-out":{pl:"Saira Stencil One — ażur",de:"Saira Stencil One — Schablone"},
"Cinzel — roman engraving":{pl:"Cinzel — grawer rzymski",de:"Cinzel — römische Gravur"},
"Playfair Display — elegant serif":{pl:"Playfair Display — elegancka szeryfowa",de:"Playfair Display — elegante Serife"},
"Lora — classic serif":{pl:"Lora — klasyczna szeryfowa",de:"Lora — klassische Serife"},
"Dancing Script — handwritten":{pl:"Dancing Script — odręczny",de:"Dancing Script — handschriftlich"},
"Great Vibes — calligraphy":{pl:"Great Vibes — kaligrafia",de:"Great Vibes — Kalligrafie"},
"Montserrat — modern":{pl:"Montserrat — nowoczesny",de:"Montserrat — modern"},
/* memory / love — nagłówki */
"WHERE WE MET":{pl:"GDZIE SIĘ POZNALIŚMY",de:"WO WIR UNS TRAFEN"},
"THE DAY WE SAID YES":{pl:"DZIEŃ, GDY POWIEDZIELIŚMY TAK",de:"DER TAG, ALS WIR JA SAGTEN"},
"WHERE IT ALL BEGAN":{pl:"GDZIE SIĘ WSZYSTKO ZACZĘŁO",de:"WO ALLES BEGANN"},
"WHERE WE FELL IN LOVE":{pl:"GDZIE SIĘ ZAKOCHALIŚMY",de:"WO WIR UNS VERLIEBTEN"},
"OUR FIRST HOME":{pl:"NASZ PIERWSZY DOM",de:"UNSER ERSTES ZUHAUSE"},
"THE PLACE THAT CHANGED EVERYTHING":{pl:"MIEJSCE, KTÓRE WSZYSTKO ZMIENIŁO",de:"DER ORT, DER ALLES VERÄNDERTE"},
"Custom…":{pl:"Własny…",de:"Eigener…"},
/* key holder */
"Home Sweet Home (script)":{pl:"Home Sweet Home (pismo)",de:"Home Sweet Home (Schreibschrift)"},
"Welcome to … Home":{pl:"Witamy w domu …",de:"Willkommen im … Zuhause"},
"Keys to … World":{pl:"Klucze do świata …",de:"Schlüssel zur … Welt"},
"First Home + address":{pl:"Pierwszy dom + adres",de:"Erstes Zuhause + Adresse"},
"Custom text":{pl:"Własny tekst",de:"Eigener Text"},
"Hooks on the bottom edge: 4 / 6 / 8 by size.":{pl:"Haczyki na dolnej krawędzi: 4 / 6 / 8 wg rozmiaru.",de:"Haken an der Unterkante: 4 / 6 / 8 je nach Größe."},
/* style (kafelki) */
"3 layers":{pl:"3 warstwy",de:"3 Schichten"},
"Love Story":{pl:"Historia miłości",de:"Liebesgeschichte"},
"2–3 heart maps":{pl:"2–3 mapy serca",de:"2–3 Herz-Karten"},
"Memory poster":{pl:"Plakat pamiątkowy",de:"Erinnerungsposter"},
"map + panel":{pl:"mapa + panel",de:"Karte + Panel"},
"Cut-out":{pl:"Ażur",de:"Scherenschnitt"},
"openwork":{pl:"ażur",de:"durchbrochen"},
"Engraved":{pl:"Grawer",de:"Graviert"},
"one layer":{pl:"jedna warstwa",de:"eine Schicht"},
"Key holder":{pl:"Wieszak na klucze",de:"Schlüsselbrett"},
"map + hooks":{pl:"mapa + haczyki",de:"Karte + Haken"},
"COMING SOON":{pl:"WKRÓTCE",de:"DEMNÄCHST"},
"Coming soon":{pl:"Wkrótce",de:"Demnächst"},
/* kształt / notatki */
"Circle — available in the Cut-out style.":{pl:"Koło — dostępne w stylu Ażur.",de:"Kreis — verfügbar im Scherenschnitt-Stil."},
"Click a shape to drop it at the map centre, then drag it into place.":{pl:"Kliknij kształt, aby umieścić go na środku mapy, potem przeciągnij na miejsce.",de:"Klicke auf eine Form, um sie in der Kartenmitte abzulegen, dann ziehe sie an ihren Platz."},
"Short name (max 20 chars). Drag it on the map to place it — engraved in the street colour, aligned to the map.":{pl:"Krótka nazwa (max 20 znaków). Przeciągnij po mapie, aby umieścić — grawer w kolorze ulic, zlicowany z mapą.",de:"Kurzer Name (max. 20 Zeichen). Auf der Karte ziehen zum Platzieren — graviert in Straßenfarbe, an der Karte ausgerichtet."},
"Click a heart on the board to select it — then search the city, scroll to zoom, drag to move the map. ♥ adds a golden heart you can drag.":{pl:"Kliknij serce na planszy, aby je wybrać — potem wyszukaj miasto, przewiń, aby przybliżyć, przeciągnij, aby przesunąć mapę. ♥ dodaje złote serce, które możesz przeciągać.",de:"Klicke auf ein Herz, um es auszuwählen — dann Stadt suchen, scrollen zum Zoomen, ziehen zum Verschieben. ♥ fügt ein goldenes Herz zum Ziehen hinzu."},
"Order data = coordinates + normalized zoom + crop bbox + all options → reproducible in Maker Studio.":{pl:"Dane zamówienia = współrzędne + znormalizowany zoom + bbox kadru + wszystkie opcje → odtwarzalne w Maker Studio.",de:"Bestelldaten = Koordinaten + normalisierter Zoom + Crop-Bbox + alle Optionen → reproduzierbar in Maker Studio."},
/* tytuły (tooltipy) */
"Pin":{pl:"Pinezka",de:"Pin"},
"Heart":{pl:"Serce",de:"Herz"},
"Star":{pl:"Gwiazda",de:"Stern"},
"House":{pl:"Dom",de:"Haus"},
"Ring":{pl:"Pierścień",de:"Ring"},
"Square":{pl:"Kwadrat",de:"Quadrat"},
"Rectangle":{pl:"Prostokąt",de:"Rechteck"},
"Circle":{pl:"Koło",de:"Kreis"},
"Vertical":{pl:"Pionowo",de:"Vertikal"},
"Horizontal":{pl:"Poziomo",de:"Horizontal"},
"Center":{pl:"Wyśrodkuj",de:"Zentrieren"},
"Height":{pl:"Wysokość",de:"Höhe"},
"Remove":{pl:"Usuń",de:"Entfernen"},
"Remove marker":{pl:"Usuń znacznik",de:"Markierung entfernen"},
"Lock position & zoom":{pl:"Zablokuj pozycję i zoom",de:"Position & Zoom sperren"},
/* modale: notify / etsy */
"Leave your e-mail and we'll let you know the moment this style is available.":{pl:"Zostaw e-mail, a damy znać, gdy tylko ten styl będzie dostępny.",de:"Hinterlasse deine E-Mail, wir benachrichtigen dich, sobald dieser Stil verfügbar ist."},
"Please enter a valid e-mail.":{pl:"Podaj prawidłowy adres e-mail.",de:"Bitte gib eine gültige E-Mail-Adresse ein."},
"Thank you! We'll e-mail you when it's ready. ♥":{pl:"Dziękujemy! Wyślemy e-mail, gdy będzie gotowe. ♥",de:"Danke! Wir schreiben dir, sobald es fertig ist. ♥"},
"Your Etsy order code":{pl:"Twój kod zamówienia Etsy",de:"Dein Etsy-Bestellcode"},
"📋 Copy code":{pl:"📋 Kopiuj kod",de:"📋 Code kopieren"},
/* alerty */
"Max 6 pins":{pl:"Maks. 6 pinezek",de:"Max. 6 Pins"},
"Max 6 labels":{pl:"Maks. 6 tabliczek",de:"Max. 6 Beschriftungen"},
"This size is temporarily unavailable.":{pl:"Ten rozmiar jest chwilowo niedostępny.",de:"Diese Größe ist vorübergehend nicht verfügbar."},
"This size/finish combination is temporarily unavailable.":{pl:"Ta kombinacja rozmiar/wykończenie jest chwilowo niedostępna.",de:"Diese Kombination aus Größe/Finish ist vorübergehend nicht verfügbar."},
"This size/frame combination is temporarily unavailable.":{pl:"Ta kombinacja rozmiar/rama jest chwilowo niedostępna.",de:"Diese Kombination aus Größe/Rahmen ist vorübergehend nicht verfügbar."},
"Product is not available yet - please try again soon.":{pl:"Produkt nie jest jeszcze dostępny - spróbuj wkrótce ponownie.",de:"Produkt ist noch nicht verfügbar - bitte versuche es bald erneut."},
"Could not add to cart - please try again.":{pl:"Nie udało się dodać do koszyka - spróbuj ponownie.",de:"Konnte nicht in den Warenkorb gelegt werden - bitte erneut versuchen."},
"Invalid design code":{pl:"Nieprawidłowy kod projektu",de:"Ungültiger Design-Code"},
/* rotate / banner */
"Please rotate your phone":{pl:"Obróć telefon",de:"Bitte drehe dein Handy"},
"The map designer needs the whole screen — turn your device sideways.":{pl:"Kreator mapy potrzebuje całego ekranu — obróć urządzenie poziomo.",de:"Der Karten-Designer braucht den ganzen Bildschirm — drehe dein Gerät quer."},
"✓ Done":{pl:"✓ Gotowe",de:"✓ Fertig"},
/* split (gdy odsłonięty) */
"Spacing between maps":{pl:"Odstęp między mapami",de:"Abstand zwischen den Karten"}
};
function trFrom(en){
if(LANG==="en" || en==null) return en;
var k=(""+en).trim();
var e=I18N[k];
if(e && e[LANG]) return (""+en).replace(k, e[LANG]);
return en;
}
var ROOT_SEL="#sidebar, .fly, #modal, #notifyModal, #etsyModal, #placeBanner, #rotateNotice";
var ORIG_TXT = (typeof WeakMap!=="undefined") ? new WeakMap() : null;
function walkText(root){
var w=document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null, false), n;
var list=[];
while((n=w.nextNode())){ if(n.nodeValue && n.nodeValue.trim()) list.push(n); }
for(var i=0;i