diff --git a/client/messages/cs.json b/client/messages/cs.json index b8ae38d21..8ea71d5c0 100644 --- a/client/messages/cs.json +++ b/client/messages/cs.json @@ -61,6 +61,7 @@ "mByYl9": "Zobrazení stránek %", "IuFETn": "Doba trvání", "0eoYsu": "Míra okamžitého opuštění", + "QashlR": "Při načítání dat došlo k chybě", "IxrHg4": "Filtruj {count} položek...", "tL4WC1": "Načítám další...", "HPx76n": "Všechny položky načteny", @@ -74,6 +75,8 @@ "XHLYdJ": "Cíle", "9d/EEp": "Produktová analytika", "5yUsUe": "Přehrávání", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Trychtýře", "08hqOd": "Cesty návštěvníků", "nL6Jl0": "Retence", @@ -242,6 +245,212 @@ "BReFYW": "Změny vstupu", "NDoUa9": "Všechny typy událostí skryty", "MJ2jZQ": "Celkem", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Cíl #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Název události", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Koncept", + "LHF3Za": "", + "47FYwb": "Zrušit", + "rbrahO": "Zavřít", + "cyR7Kh": "", + "TiR/Hq": "Ukládám...", + "mRL9Vh": "Vytvářím...", + "X0ha1a": "", + "JXdbo8": "Hotovo", + "acrOoz": "Pokračovat", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Pozastavit", + "U78NhE": "", + "wL7VAE": "Akce", + "wEQDC6": "", + "K3r6DQ": "Smazat", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Stav", + "Zh+5A6": "Zapnuto", + "OvzONl": "Vypnuto", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Vytvořeno", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Klíč", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Všechny kroky musí mít hodnoty", "jm52QG": "Zadej prosím název trychtýře", "+N7isb": "Trychtýř úspěšně uložen", @@ -273,7 +482,6 @@ "+U6ozc": "Typ", "m1czzY": "Událost", "Y6DkLY": "Cesta (např. /pricing)", - "eOj4Bs": "Název události", "Hp/0iW": "Zadej cestu (např. /checkout), ne celou URL.", "Asi2Jg": "Skrýt pokročilé možnosti", "lIEejV": "Zobrazit pokročilé možnosti", @@ -287,8 +495,6 @@ "tINfvW": "Použij * pro shodu s jedním segmentem cesty (např. /blog/*) nebo ** pro shodu s více segmenty (např. /docs/**/intro)", "ox304v": "Došlo k chybě", "KbGBQH": "Při ukládání došlo k chybě", - "47FYwb": "Zrušit", - "TiR/Hq": "Ukládám...", "/liMUf": "Trychtýř úspěšně smazán", "753yX5": "Popisek", "+SDMR3": "Vlastnost", @@ -298,7 +504,6 @@ "SB3+JE": "Žádná data trychtýře k dispozici", "45gABM": "Opravdu chceš smazat \"{name}\"? Tuto akci nelze vrátit zpět.", "noZdV2": "Mažu...", - "K3r6DQ": "Smazat", "GoxzAN": "Filtrovat trychtýře", "qGN7M9": "Nepodařilo se načíst trychtýře", "5/6deG": "Při načítání trychtýřů nastal problém. Zkus to prosím později.", @@ -328,16 +533,15 @@ "h3ICzV": "Načítám relace...", "KjXPXZ": "{count} relací", "9iSdEj": "{count} relace", - "tFFMkF": "Pozastavit", "J3ca41": "Přehrát", "Ggedt8": "Zobrazeny pouze první {count} relace. K dispozici mohou být další data.", "5WuADX": "Přidat cíl", + "WuHoZ9": "Konverze", + "e/U0Xt": "Konverzní poměr", "+Ior19": "Cíl stránky", "rTE34i": "Cíl události", - "FYBPJU": "Cíl #{goalId}", "pW4lxD": "Vzor", - "WuHoZ9": "Konverze", - "e/U0Xt": "Konverzní poměr", + "99Lkvz": "", "sOXElg": "Upravit cíl", "N/ctXb": "Naklonovat cíl", "F3XA9+": "Smazat cíl", @@ -395,10 +599,10 @@ "zuqMfZ": "Mapa", "jUSc45": "Časová pásma", "NdE4Ps": "Prohlížeče", + "/VnDMl": "Ostatní", "+20FW7": "Zařízení", "aTW7It": "Operační systémy", "3X4r56": "Rozlišení obrazovky", - "/VnDMl": "Ostatní", "Aujn2T": "Počet", "ogKEiU": "Odchozí odkazy", "VLKK35": "Kliknutí", @@ -407,13 +611,14 @@ "pEc/5k": "Kliknutí %", "wU7PzI": "Naposledy kliknuto", "4KEfRY": "Titulky", - "87ZCAe": "Vstupy", - "0ogV14": "Výstupy", - "P6RGqE": "Hostnames", "gvOzOl": "Název stránky", + "87ZCAe": "Vstupy", "vFf5xV": "Vstupní stránky", + "0ogV14": "Výstupy", "KtC97P": "Výstupní stránky", + "P6RGqE": "Hostnames", "iF/x8v": "Odkazující stránky", + "UF6kPm": "Přímý", "LUrJwE": "Kanály", "aH4De2": "Zdroj", "ovJ26C": "Médium", @@ -421,7 +626,6 @@ "qTy5se": "Výraz", "Jq3FDz": "Obsah", "grtbAW": "UTM", - "UF6kPm": "Přímý", "0E9k6Y": "Připoj svůj účet Google Search Console pro zobrazení dat o výkonu ve vyhledávání, včetně nejlepších klíčových slov a stránek.", "jioGL4": "Připojit Google Search Console", "M/h5TN": "Zobrazení", @@ -550,7 +754,6 @@ "uiy9pN": "Události (30d)", "9juexR": "Detail předplatného", "fz0z4c": "Plán", - "tzMNF3": "Stav", "T8qVXf": "Limit událostí", "ekXood": "Neomezený", "5x9Sl1": "Konec období", @@ -563,7 +766,6 @@ "bGIAle": "Členové ({count})", "hQZhn8": "Převzít identitu", "2ZpsMl": "Žádní členové", - "G/yZLu": "", "nJuUfX": "Hledat podle názvu, slugu, domény nebo e-mailu člena...", "RllRQH": "Zobrazit organizace s 0 událostmi (30d)", "7OL11E": "Pouze přes limit", @@ -578,7 +780,6 @@ "uL0dMG": "Využití celé služby – posledních {timePeriod}", "SVwJTM": "Exportovat", "K56Dim": "Organizace", - "ORGv1Q": "Vytvořeno", "JKxOsh": "Měsíční události", "R/6nsx": "Předplatné", "DDhP4z": "Weby", @@ -596,8 +797,6 @@ "viXE32": "Soukromý", "6hdNA5": "Události (24h)", "J4r/Gi": "Události (30d)", - "Zh+5A6": "Zapnuto", - "OvzONl": "Vypnuto", "C2EM7h": "E-mail vlastníka", "sEqhTf": "Nepodařilo se načíst data webů. Zkus to prosím později.", "r9Y1x6": "Hledej podle domény nebo emailu vlastníka...", @@ -626,7 +825,6 @@ "uA0DvF": "Nepodařilo se odebrat uživatele z organizace", "PW+sL4": "N/A", "wittYy": "Vytvořeno", - "wL7VAE": "Akce", "bdcMGy": "Otevřít menu", "6gHGy0": "Odebrat z organizace", "J2wna+": "Odebrat uživatele z organizace?", @@ -744,19 +942,16 @@ "u4673k": "Vygeneruj API klíče pro přístup k analytickým endpointům z tvých aplikací", "1fe3VI": "Klíče API jsou dostupné v plánech Standard a Pro.", "AkVL9j": "Název API klíče", - "mRL9Vh": "Vytvářím...", "jDvHYJ": "Tvé API klíče", "MUaUWe": "Načítám API klíče...", "iX4wwR": "Nepodařilo se načíst API klíče", "62nsdy": "Zkusit znovu", - "EcglP9": "Klíč", "IY105q": "Zatím žádné API klíče", "wPtCEB": "API klíč vytvořen", "qcTCG8": "Ulož si tento API klíč bezpečně. Znovu ho neuvidíš.", "51jo4g": "Tvůj API klíč", "+fICx5": "Důležité", "TsKkxv": "Ulož si tento klíč bezpečně. Znovu nebude zobrazen.", - "JXdbo8": "Hotovo", "LuNBqj": "Heslo by mělo mít alespoň 8 znaků", "UjlqkD": "Silné heslo", "EK3962": "Dobré heslo", @@ -886,7 +1081,6 @@ "S5IFjk": "Vytvořte tým pro seskupení webů a správu přístupu členů.", "StUScz": "{count} členů", "RNCPOG": "Registrace", - "acrOoz": "Pokračovat", "uCk8r+": "Už máš účet?", "odXlk8": "Přihlásit se", "uWRAQk": "Vyberte svůj plán", @@ -996,7 +1190,6 @@ "W5IIP8": "Upgraduj na {planName} pro odemknutí {message}", "4Y+tpi": "Podívej se na ukázku této funkce", "RL7HbL": "Požádej vlastníka organizace o upgrade na Pro pro odemknutí {message}", - "QashlR": "Při načítání dat došlo k chybě", "jsy7pk": "Zkusit znovu", "hyfdry": "Zobrazení stránky", "/kZg9i": "Kliknutí na tlačítko", @@ -1196,7 +1389,6 @@ "jjBvFh": "", "6cBDhe": "", "IP4n+n": "", - "rbrahO": "Zavřít", "scL+IP": "", "8pKlHk": "", "mhmZ+P": "Přehrávání relací", @@ -1243,7 +1435,6 @@ "u/vOPu": "Zaplaceno", "jHfCjd": "Neplatné", "45hFQt": "Nevymahatelné", - "W6nwjo": "Koncept", "6dqYnF": "Faktury", "P7PLVj": "Datum", "/0TOL5": "Částka", diff --git a/client/messages/de.json b/client/messages/de.json index 652aac18e..9aa324f67 100644 --- a/client/messages/de.json +++ b/client/messages/de.json @@ -61,6 +61,7 @@ "mByYl9": "Seitenaufrufe %", "IuFETn": "Dauer", "0eoYsu": "Absprungrate", + "QashlR": "Beim Abrufen der Daten ist ein Fehler aufgetreten", "IxrHg4": "{count} Einträge filtern...", "tL4WC1": "Lade mehr...", "HPx76n": "Alle Einträge geladen", @@ -74,6 +75,8 @@ "XHLYdJ": "Ziele", "9d/EEp": "Produktanalyse", "5yUsUe": "Wiedergabe", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Trichter", "08hqOd": "Pfade", "nL6Jl0": "Bindung", @@ -242,6 +245,212 @@ "BReFYW": "Eingabeänderungen", "NDoUa9": "Alle Event-Typen ausgeblendet", "MJ2jZQ": "Gesamt", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Ziel #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Event-Name", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Entwurf", + "LHF3Za": "", + "47FYwb": "Abbrechen", + "rbrahO": "Schließen", + "cyR7Kh": "", + "TiR/Hq": "Wird gespeichert...", + "mRL9Vh": "Wird erstellt...", + "X0ha1a": "", + "JXdbo8": "Fertig", + "acrOoz": "Weiter", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Pause", + "U78NhE": "", + "wL7VAE": "Aktionen", + "wEQDC6": "", + "K3r6DQ": "Löschen", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "Entfernen", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Status", + "Zh+5A6": "Ein", + "OvzONl": "Aus", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Erstellt", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Schlüssel", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Alle Schritte müssen Werte haben", "jm52QG": "Bitte geben Sie einen Trichternamen ein", "+N7isb": "Trichter erfolgreich gespeichert", @@ -273,7 +482,6 @@ "+U6ozc": "Typ", "m1czzY": "Ereignis", "Y6DkLY": "Pfad (z.B. /pricing)", - "eOj4Bs": "Event-Name", "Hp/0iW": "Geben Sie einen Pfad ein (z.B. /checkout), keine vollständige URL.", "Asi2Jg": "Erweiterte Optionen ausblenden", "lIEejV": "Erweiterte Optionen anzeigen", @@ -287,8 +495,6 @@ "tINfvW": "Verwenden Sie * für ein einzelnes Pfadsegment (z.B. /blog/*) oder ** für mehrere Segmente (z.B. /docs/**/intro)", "ox304v": "Ein Fehler ist aufgetreten", "KbGBQH": "Beim Speichern ist ein Fehler aufgetreten", - "47FYwb": "Abbrechen", - "TiR/Hq": "Wird gespeichert...", "/liMUf": "Trichter erfolgreich gelöscht", "753yX5": "Bezeichnung", "+SDMR3": "Eigenschaft", @@ -298,7 +504,6 @@ "SB3+JE": "Keine Trichterdaten verfügbar", "45gABM": "Sind Sie sicher, dass Sie \"{name}\" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "noZdV2": "Wird gelöscht...", - "K3r6DQ": "Löschen", "GoxzAN": "Trichter filtern", "qGN7M9": "Trichter konnten nicht geladen werden", "5/6deG": "Beim Abrufen der Trichter ist ein Problem aufgetreten. Bitte versuchen Sie es später erneut.", @@ -328,16 +533,15 @@ "h3ICzV": "Sitzungen werden geladen...", "KjXPXZ": "{count} Sitzungen", "9iSdEj": "{count} Sitzung", - "tFFMkF": "Pause", "J3ca41": "Abspielen", "Ggedt8": "Es werden nur die ersten {count} Sitzungen angezeigt. Weitere Daten sind möglicherweise verfügbar.", "5WuADX": "Ziel hinzufügen", + "WuHoZ9": "Konversionen", + "e/U0Xt": "Konversionsrate", "+Ior19": "Seitenziel", "rTE34i": "Event-Ziel", - "FYBPJU": "Ziel #{goalId}", "pW4lxD": "Muster", - "WuHoZ9": "Konversionen", - "e/U0Xt": "Konversionsrate", + "99Lkvz": "", "sOXElg": "Ziel bearbeiten", "N/ctXb": "Ziel duplizieren", "F3XA9+": "Ziel löschen", @@ -395,10 +599,10 @@ "zuqMfZ": "Karte", "jUSc45": "Zeitzonen", "NdE4Ps": "Browser", + "/VnDMl": "Sonstige", "+20FW7": "Geräte", "aTW7It": "Betriebssysteme", "3X4r56": "Bildschirmauflösungen", - "/VnDMl": "Sonstige", "Aujn2T": "Anzahl", "ogKEiU": "Ausgehende Links", "VLKK35": "Klicks", @@ -407,13 +611,14 @@ "pEc/5k": "Klick %", "wU7PzI": "Zuletzt geklickt", "4KEfRY": "Titel", - "87ZCAe": "Einstiege", - "0ogV14": "Ausstiege", - "P6RGqE": "Hostnamen", "gvOzOl": "Seitentitel", + "87ZCAe": "Einstiege", "vFf5xV": "Einstiegsseiten", + "0ogV14": "Ausstiege", "KtC97P": "Ausstiegsseiten", + "P6RGqE": "Hostnamen", "iF/x8v": "Referrer", + "UF6kPm": "Direkt", "LUrJwE": "Kanäle", "aH4De2": "Quelle", "ovJ26C": "Medium", @@ -421,7 +626,6 @@ "qTy5se": "Begriff", "Jq3FDz": "Inhalt", "grtbAW": "UTM", - "UF6kPm": "Direkt", "0E9k6Y": "Verbinden Sie Ihr Google Search Console-Konto, um Suchleistungsdaten einschließlich der besten Keywords und Seiten anzuzeigen.", "jioGL4": "Google Search Console verbinden", "M/h5TN": "Impressionen", @@ -550,7 +754,6 @@ "uiy9pN": "30d-Events", "9juexR": "Abonnementdetails", "fz0z4c": "Plan", - "tzMNF3": "Status", "T8qVXf": "Event-Limit", "ekXood": "Unbegrenzt", "5x9Sl1": "Periodenende", @@ -563,7 +766,6 @@ "bGIAle": "Mitglieder ({count})", "hQZhn8": "Identität annehmen", "2ZpsMl": "Keine Mitglieder", - "G/yZLu": "Entfernen", "nJuUfX": "Nach Name, Slug, Domain oder Mitglieds-E-Mail suchen...", "RllRQH": "Organisationen mit 0 Events (30d) anzeigen", "7OL11E": "Nur über Limit", @@ -578,7 +780,6 @@ "uL0dMG": "Dienstweite Nutzung - Letzte {timePeriod}", "SVwJTM": "Exportieren", "K56Dim": "Organisation", - "ORGv1Q": "Erstellt", "JKxOsh": "Monatliche Events", "R/6nsx": "Abonnement", "DDhP4z": "Websites", @@ -596,8 +797,6 @@ "viXE32": "Privat", "6hdNA5": "Ereignisse (24 Std.)", "J4r/Gi": "Ereignisse (30 Tage)", - "Zh+5A6": "Ein", - "OvzONl": "Aus", "C2EM7h": "Inhaber-E-Mail", "sEqhTf": "Website-Daten konnten nicht geladen werden. Bitte versuchen Sie es später erneut.", "r9Y1x6": "Nach Domain oder Inhaber-E-Mail suchen...", @@ -626,7 +825,6 @@ "uA0DvF": "Benutzer konnte nicht aus Organisation entfernt werden", "PW+sL4": "k.A.", "wittYy": "Erstellt am", - "wL7VAE": "Aktionen", "bdcMGy": "Menü öffnen", "6gHGy0": "Aus Organisation entfernen", "J2wna+": "Benutzer aus Organisation entfernen?", @@ -744,19 +942,16 @@ "u4673k": "Generieren Sie API-Schlüssel für den Zugriff auf Analyse-Endpunkte aus Ihren Anwendungen", "1fe3VI": "API-Schlüssel sind in den Standard- und Pro-Plänen verfügbar.", "AkVL9j": "API-Schlüsselname", - "mRL9Vh": "Wird erstellt...", "jDvHYJ": "Ihre API-Schlüssel", "MUaUWe": "API-Schlüssel werden geladen...", "iX4wwR": "API-Schlüssel konnten nicht geladen werden", "62nsdy": "Erneut versuchen", - "EcglP9": "Schlüssel", "IY105q": "Noch keine API-Schlüssel erstellt", "wPtCEB": "API-Schlüssel erstellt", "qcTCG8": "Bewahren Sie diesen API-Schlüssel sicher auf. Sie können ihn nicht erneut anzeigen.", "51jo4g": "Ihr API-Schlüssel", "+fICx5": "Wichtig", "TsKkxv": "Bewahren Sie diesen Schlüssel sicher auf. Er wird nicht erneut angezeigt.", - "JXdbo8": "Fertig", "LuNBqj": "Passwort sollte mindestens 8 Zeichen lang sein", "UjlqkD": "Starkes Passwort", "EK3962": "Gutes Passwort", @@ -886,7 +1081,6 @@ "S5IFjk": "Erstellen Sie ein Team, um Websites zu gruppieren und den Mitgliederzugriff zu verwalten.", "StUScz": "{count} Mitglieder", "RNCPOG": "Registrierung", - "acrOoz": "Weiter", "uCk8r+": "Haben Sie bereits ein Konto?", "odXlk8": "Anmelden", "uWRAQk": "Wählen Sie Ihren Plan", @@ -996,7 +1190,6 @@ "W5IIP8": "Upgrade auf {planName}, um {message} freizuschalten", "4Y+tpi": "Demo dieser Funktion ansehen", "RL7HbL": "Bitten Sie Ihren Organisationsinhaber, auf Pro upzugraden, um {message} freizuschalten", - "QashlR": "Beim Abrufen der Daten ist ein Fehler aufgetreten", "jsy7pk": "Erneut versuchen", "hyfdry": "Seitenaufruf", "/kZg9i": "Klick auf Schaltfläche", @@ -1196,7 +1389,6 @@ "jjBvFh": "Ausschlüsse", "6cBDhe": "Integrationen", "IP4n+n": "Widget-Einbettungen", - "rbrahO": "Schließen", "scL+IP": "Widget aktiviert", "8pKlHk": "Einbettungs-Widget aktivieren", "mhmZ+P": "Sitzungsaufzeichnung", @@ -1243,7 +1435,6 @@ "u/vOPu": "Bezahlt", "jHfCjd": "Ungültig", "45hFQt": "Uneinbringlich", - "W6nwjo": "Entwurf", "6dqYnF": "Rechnungen", "P7PLVj": "Datum", "/0TOL5": "Betrag", diff --git a/client/messages/en.json b/client/messages/en.json index 1226dd0fe..714adce97 100644 --- a/client/messages/en.json +++ b/client/messages/en.json @@ -61,6 +61,7 @@ "mByYl9": "Pageviews %", "IuFETn": "Duration", "0eoYsu": "Bounce Rate", + "QashlR": "An error occurred while fetching data", "IxrHg4": "Filter {count} items...", "tL4WC1": "Loading more...", "HPx76n": "All items loaded", @@ -74,6 +75,8 @@ "XHLYdJ": "Goals", "9d/EEp": "Product Analytics", "5yUsUe": "Replay", + "mZDrWI": "Feature Flags", + "5qmtY1": "Experiments", "puhcpn": "Funnels", "08hqOd": "Journeys", "nL6Jl0": "Retention", @@ -242,6 +245,212 @@ "BReFYW": "Input Changes", "NDoUa9": "All event types hidden", "MJ2jZQ": "Total", + "jZu+25": "Define the question", + "l31E69": "Start with the behavior you want to change and the metric you expect to move.", + "E/9k/a": "The hypothesis is internal context for your team. It does not change assignment or tracking.", + "yl0JSO": "Changing these notes does not change assignment or tracking.", + "gyIvpP": "New experiments are created as drafts so you can add the implementation before starting traffic.", + "z2PIbo": "Create the assignment", + "zZE+e+": "Experiments use multivariate feature flags to assign each visitor to one stable variant.", + "c6cv5o": "Calling rybbit.flag records the exposure that powers experiment results.", + "U3UQfB": "A full split should add up to 100 percent unless you intentionally want unassigned traffic.", + "f5efCD": "Pick the outcome", + "SDTG4X": "The primary goal is the conversion event or page visit used to compare variants.", + "z0076i": "Path goals work when conversion is a URL, like /thank-you. Event goals work for explicit actions.", + "iKhvJV": "You can skip this for now, but conversion results need a goal later.", + "XocxqF": "Implement and expose", + "dv+Q6J": "Use the generated flag key in your app and branch your UI or behavior by variant.", + "rYzinM": "Read the flag in code before rendering the tested experience.", + "qkaC6i": "For event goals, fire the event when the conversion action happens.", + "Gvxoji": "Name is required", + "C4BsF8": "Choose a multivariate feature flag", + "CZmGBZ": "Flag key is required", + "9VDOG/": "Add at least two variants", + "k/CG+N": "Variant keys are required", + "dSrAoR": "Variant keys must be unique", + "/ZZy+J": "Variant traffic must add up to 100%", + "PqvkpE": "Choose a goal", + "VUiN28": "Path pattern is required", + "VYRbh1": "Event name is required", + "DSOKGF": "Experiment created", + "ERZKPw": "Failed to save experiment", + "4gDkIw": "Experiment updated", + "5CbP3g": "Experiment name", + "ANmBWb": "Checkout CTA test", + "iBImEo": "Hypothesis", + "JfUnvy": "Changing the CTA copy will increase signup conversions.", + "Q8Qw5B": "Description", + "Yx6aRS": "Optional notes for this experiment", + "F4tWun": "Create a new flag", + "rv+WdZ": "Best for a new experiment that needs its own assignment split.", + "8mBWZJ": "Use an existing flag", + "2Rli0c": "Choose a multivariate flag that is not already connected to an experiment.", + "2S4QtW": "Assignment flag", + "6bhRx4": "Select a flag", + "3kwz2Z": "No unused multivariate flags are available. Create a new flag for this experiment.", + "O6zCyZ": "Flag key", + "LICoyV": "Flag description", + "NFTkNB": "Assignment flag for this experiment", + "h5P++h": "Variants", + "1HsqR2": "{rolloutTotal}% assigned", + "JWzoaP": "variant", + "dOQCL8": "Display name", + "MYsZNO": "Remove variant", + "5U2wOH": "Add variant", + "nDvQwt": "Create a new goal", + "dCxCGt": "Define the conversion while creating the experiment.", + "I5k4g/": "Use existing", + "8O/fqy": "Connect this experiment to a goal you already track.", + "WYzHAI": "Skip for now", + "gpx4DX": "Create the experiment now and add a goal later.", + "wIRNFx": "Primary goal", + "UHg01d": "Select a goal", + "FYBPJU": "Goal #{goalId}", + "93jr/b": "Goal name", + "WCs0QZ": "Signup completed", + "VUomb6": "Page goal", + "9E7Zda": "Count sessions that reach a URL path.", + "99HM2b": "Event goal", + "S4zxrU": "Count sessions where your app fires a named event.", + "XQSLMK": "Path pattern", + "eOj4Bs": "Event name", + "sXo0km": "Experiment created as a draft", + "qWzbG9": "Experiment changes saved", + "pH6sDe": "Add this code to your app, then start the experiment from the list when you are ready.", + "TUwf1V": "Variant implementation", + "vmlGzW": "Conversion event", + "Dmxerh": "No conversion event code is needed for this path goal. Rybbit will count sessions that reach {goalLabel}.", + "wzKC2G": "Add a primary goal later to calculate conversions for each variant.", + "itC9lG": "Basics", + "XPX/Qj": "Assignment", + "0VV/sK": "Goal", + "dLj+dT": "Implement", + "Lu6+QS": "Edit experiment", + "qdOqu/": "Create experiment", + "tGuKrF": "New experiment", + "W6nwjo": "Draft", + "LHF3Za": "Existing", + "47FYwb": "Cancel", + "rbrahO": "Close", + "cyR7Kh": "Back", + "TiR/Hq": "Saving...", + "mRL9Vh": "Creating...", + "X0ha1a": "Save changes", + "JXdbo8": "Done", + "acrOoz": "Continue", + "H+vBOj": "Winner", + "1SjAqf": "Leading", + "NZ9+vv": "Control", + "UAVBcs": "{sessions} sessions · {conversions} conv.", + "QFTqtX": "Baseline", + "ytceSa": "No goal connected", + "vGMvPS": "Add a primary goal to measure conversions for each variant.", + "XQ/KBk": "Winner: {variant}", + "jt9BUv": "No conversions yet", + "nW9O3w": "{variant} leading", + "cT4fRl": "No clear winner", + "EHoeo0": "Gathering data", + "ttyUm0": "{sessions} sessions · {conversions} conversions", + "l94vPo": "{confidence}% confidence", + "qQTwNl": "Not yet significant", + "IuPATc": "Showing assigned visitors. Call rybbit.flag(\"{flagKey}\") where the variant renders to measure visitors actually exposed to it.", + "W1QsrY": "No goal", + "UBQJK/": "Untitled goal", + "4IJvOg": "Ended {time}", + "iHip8n": "Started {time}", + "kNp7lL": "Created {time}", + "VK7C0v": "Delete this experiment?", + "G2HskF": "Experiment deleted", + "l6cRsG": "Failed to delete experiment", + "6MkXA0": "Failed to update experiment", + "mOFG3K": "Start", + "tFFMkF": "Pause", + "U78NhE": "Complete", + "wL7VAE": "Actions", + "wEQDC6": "Edit", + "K3r6DQ": "Delete", + "poMLbD": "Filter experiments", + "qzqYO3": "No experiments found", + "4YGHzj": "No experiments match \"{search}\"", + "l2og1o": "No experiments yet", + "wLuWPJ": "Create an experiment from a multivariate feature flag and connect it to a conversion goal.", + "39mVGa": "Targeted configs", + "sL8dAy": "Release conditions", + "U5hCuK": "Each condition returns its own payload. The first match wins.", + "wmdo1a": "Each condition is evaluated in order. The first match wins.", + "fg8dzN": "Add condition", + "Rp+Vr1": "Condition name", + "lKv8ex": "Default", + "wmFdws": "Move up", + "H/r5m6": "Move down", + "G/yZLu": "Remove", + "7/7DdD": "Config payload", + "Cn4/rZ": "Payload", + "Vwukkb": "Add JSON payload", + "d1OgED": "(optional)", + "rdE5Ca": "Rollout", + "CoSEZb": "everyone matched", + "obVxeM": "no one", + "GeY2EU": "{pct}% of matched users", + "9ctGsY": "Feature flag updated", + "Ctj1re": "Feature flag created", + "TFVlrR": "Failed to save feature flag", + "TI5GPL": "Returns true or false", + "5kpx3b": "Split traffic across keys", + "I4Etgx": "Return a JSON payload", + "n5XyC0": "This flag is evaluated server-side. Call the evaluate API from your backend instead of the browser script.", + "+9SBpl": "This flag also evaluates server-side. Your backend can read it from the evaluate API.", + "rHJwM0": "Edit feature flag {key}", + "jTMl6R": "Create feature flag", + "2Nj3gm": "Edit flag", + "bAv8xK": "New flag", + "Dn82AL": "Live", + "C2iTEH": "Paused", + "gnvAJX": "The identifier you'll reference in code", + "IX0C9y": "Feature flag changes saved", + "4QGk64": "Read this flag in your app to control behavior for your visitors.", + "wbsq7O": "Usage", + "WuGkfJ": "Returns", + "E/O9LL": "Optional — describe what this flag controls", + "V52jNn": "Enabled", + "66kGA0": "Runtime", + "vPG+A7": "Create flag", + "+R0VMp": "Delete this feature flag?", + "q2ZLFN": "Feature flag deleted", + "rxCN7M": "Failed to delete feature flag", + "bSCV9J": "Flag", + "tzMNF3": "Status", + "Zh+5A6": "On", + "OvzONl": "Off", + "kAAlGL": "Rules", + "ZDpTud": "Traffic", + "ORGv1Q": "Created", + "xrk6zg": "Updated", + "9qBH5R": "No feature flags found", + "10IQpb": "Targeting rules", + "gzM1em": "Add rule", + "V+QgiY": "Applies to everyone — add a rule to narrow targeting", + "3mvL2Q": "and", + "AbvQFb": "Field", + "EcglP9": "Key", + "gzX6Vt": "key", + "7CyD7e": "value", + "LzfPAG": "Variant key", + "HcAcrp": "variant_key", + "J4E+jp": "Variant name", + "DIZgr3": "Boolean", + "lu/vDB": "Multiple variants", + "9uKBh7": "Remote config", + "JX0502": "Client", + "F/6VqP": "Server", + "oA0ogD": "Both", + "4ZtLoe": "Pathname", + "rWPtv+": "Query parameter", + "VJWJyq": "Device type", + "3tP/PN": "User trait", + "jhVKvF": "Does not equal", + "SBUMrd": "Filter feature flags", + "wsKkfk": "No feature flags yet", "z6IYcX": "All steps must have values", "jm52QG": "Please enter a funnel name", "+N7isb": "Funnel saved successfully", @@ -273,7 +482,6 @@ "+U6ozc": "Type", "m1czzY": "Event", "Y6DkLY": "Path (e.g. /pricing)", - "eOj4Bs": "Event name", "Hp/0iW": "Enter a path (e.g., /checkout), not a full URL.", "Asi2Jg": "Hide advanced options", "lIEejV": "Show advanced options", @@ -287,8 +495,6 @@ "tINfvW": "Use * to match a single path segment (e.g., /blog/*) or ** to match multiple segments (e.g., /docs/**/intro)", "ox304v": "An error occurred", "KbGBQH": "An error occurred while saving", - "47FYwb": "Cancel", - "TiR/Hq": "Saving...", "/liMUf": "Funnel deleted successfully", "753yX5": "Label", "+SDMR3": "Property", @@ -298,7 +504,6 @@ "SB3+JE": "No funnel data available", "45gABM": "Are you sure you want to delete \"{name}\"? This action cannot be undone.", "noZdV2": "Deleting...", - "K3r6DQ": "Delete", "GoxzAN": "Filter funnels", "qGN7M9": "Failed to load funnels", "5/6deG": "There was a problem fetching the funnels. Please try again later.", @@ -328,16 +533,15 @@ "h3ICzV": "Loading sessions...", "KjXPXZ": "{count} sessions", "9iSdEj": "{count} session", - "tFFMkF": "Pause", "J3ca41": "Play", "Ggedt8": "Showing only the first {count} sessions. More data may be available.", "5WuADX": "Add Goal", + "WuHoZ9": "Conversions", + "e/U0Xt": "Conversion Rate", "+Ior19": "Page Goal", "rTE34i": "Event Goal", - "FYBPJU": "Goal #{goalId}", "pW4lxD": "Pattern", - "WuHoZ9": "Conversions", - "e/U0Xt": "Conversion Rate", + "99Lkvz": "Goal actions", "sOXElg": "Edit Goal", "N/ctXb": "Clone Goal", "F3XA9+": "Delete Goal", @@ -395,10 +599,10 @@ "zuqMfZ": "Map", "jUSc45": "Timezones", "NdE4Ps": "Browsers", + "/VnDMl": "Other", "+20FW7": "Devices", "aTW7It": "Operating Systems", "3X4r56": "Screen Dimensions", - "/VnDMl": "Other", "Aujn2T": "Count", "ogKEiU": "Outbound Links", "VLKK35": "Clicks", @@ -407,13 +611,14 @@ "pEc/5k": "Click %", "wU7PzI": "Last Clicked", "4KEfRY": "Titles", - "87ZCAe": "Entries", - "0ogV14": "Exits", - "P6RGqE": "Hostnames", "gvOzOl": "Page Title", + "87ZCAe": "Entries", "vFf5xV": "Entry Pages", + "0ogV14": "Exits", "KtC97P": "Exit Pages", + "P6RGqE": "Hostnames", "iF/x8v": "Referrers", + "UF6kPm": "Direct", "LUrJwE": "Channels", "aH4De2": "Source", "ovJ26C": "Medium", @@ -421,7 +626,6 @@ "qTy5se": "Term", "Jq3FDz": "Content", "grtbAW": "UTM", - "UF6kPm": "Direct", "0E9k6Y": "Connect your Google Search Console account to view search performance data including top keywords and pages.", "jioGL4": "Connect Google Search Console", "M/h5TN": "Impressions", @@ -550,7 +754,6 @@ "uiy9pN": "30d Events", "9juexR": "Subscription Details", "fz0z4c": "Plan", - "tzMNF3": "Status", "T8qVXf": "Event Limit", "ekXood": "Unlimited", "5x9Sl1": "Period End", @@ -563,7 +766,6 @@ "bGIAle": "Members ({count})", "hQZhn8": "Impersonate", "2ZpsMl": "No members", - "G/yZLu": "Remove", "nJuUfX": "Search by name, slug, domain, or member email...", "RllRQH": "Show orgs with 0 events (30d)", "7OL11E": "Only over limit", @@ -578,7 +780,6 @@ "uL0dMG": "Service-wide Usage - Last {timePeriod}", "SVwJTM": "Export", "K56Dim": "Organization", - "ORGv1Q": "Created", "JKxOsh": "Monthly Events", "R/6nsx": "Subscription", "DDhP4z": "Sites", @@ -596,8 +797,6 @@ "viXE32": "Private", "6hdNA5": "Events (24h)", "J4r/Gi": "Events (30d)", - "Zh+5A6": "On", - "OvzONl": "Off", "C2EM7h": "Owner Email", "sEqhTf": "Failed to load sites data. Please try again later.", "r9Y1x6": "Search by domain or owner email...", @@ -626,7 +825,6 @@ "uA0DvF": "Failed to remove user from organization", "PW+sL4": "N/A", "wittYy": "Created At", - "wL7VAE": "Actions", "bdcMGy": "Open menu", "6gHGy0": "Remove from Organization", "J2wna+": "Remove user from organization?", @@ -744,19 +942,16 @@ "u4673k": "Generate API keys to access analytics endpoints from your applications", "1fe3VI": "API keys are available on Standard and Pro plans.", "AkVL9j": "API Key Name", - "mRL9Vh": "Creating...", "jDvHYJ": "Your API Keys", "MUaUWe": "Loading API keys...", "iX4wwR": "Failed to load API keys", "62nsdy": "Retry", - "EcglP9": "Key", "IY105q": "No API keys created yet", "wPtCEB": "API Key Created", "qcTCG8": "Save this API key securely. You won't be able to see it again.", "51jo4g": "Your API Key", "+fICx5": "Important", "TsKkxv": "Store this key securely. It won't be displayed again.", - "JXdbo8": "Done", "LuNBqj": "Password should be at least 8 characters", "UjlqkD": "Strong password", "EK3962": "Good password", @@ -886,7 +1081,6 @@ "S5IFjk": "Create a team to group sites and manage member access.", "StUScz": "{count} members", "RNCPOG": "Signup", - "acrOoz": "Continue", "uCk8r+": "Already have an account?", "odXlk8": "Log in", "uWRAQk": "Choose your plan", @@ -996,7 +1190,6 @@ "W5IIP8": "Upgrade to {planName} to unlock {message}", "4Y+tpi": "See a demo of this feature", "RL7HbL": "Ask your organization owner to upgrade to Pro to unlock {message}", - "QashlR": "An error occurred while fetching data", "jsy7pk": "Try Again", "hyfdry": "Pageview", "/kZg9i": "Button Click", @@ -1196,7 +1389,6 @@ "jjBvFh": "Exclusions", "6cBDhe": "Integrations", "IP4n+n": "Widget Embeds", - "rbrahO": "Close", "scL+IP": "Widget Enabled", "8pKlHk": "Enable Embed Widget", "mhmZ+P": "Session Replay", @@ -1243,7 +1435,6 @@ "u/vOPu": "Paid", "jHfCjd": "Void", "45hFQt": "Uncollectible", - "W6nwjo": "Draft", "6dqYnF": "Invoices", "P7PLVj": "Date", "/0TOL5": "Amount", diff --git a/client/messages/es.json b/client/messages/es.json index abf929c71..cf6551fd0 100644 --- a/client/messages/es.json +++ b/client/messages/es.json @@ -61,6 +61,7 @@ "mByYl9": "% Visitas", "IuFETn": "Duración", "0eoYsu": "Tasa de rebote", + "QashlR": "Ocurrió un error al obtener datos", "IxrHg4": "Filtrar {count} elementos...", "tL4WC1": "Cargando más...", "HPx76n": "Todos los elementos cargados", @@ -74,6 +75,8 @@ "XHLYdJ": "Objetivos", "9d/EEp": "Analíticas de Producto", "5yUsUe": "Repetición", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Embudos", "08hqOd": "Viajes", "nL6Jl0": "Retención", @@ -242,6 +245,212 @@ "BReFYW": "Cambios de entrada", "NDoUa9": "Todos los tipos de eventos ocultos", "MJ2jZQ": "Total", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Objetivo #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Nombre del evento", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Borrador", + "LHF3Za": "", + "47FYwb": "Cancelar", + "rbrahO": "Cerrar", + "cyR7Kh": "", + "TiR/Hq": "Guardando...", + "mRL9Vh": "Creando...", + "X0ha1a": "", + "JXdbo8": "Hecho", + "acrOoz": "Continuar", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Pausa", + "U78NhE": "", + "wL7VAE": "Acciones", + "wEQDC6": "", + "K3r6DQ": "Eliminar", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "Eliminar", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Estado", + "Zh+5A6": "Activado", + "OvzONl": "Desactivado", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Creado", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Clave", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Todos los pasos deben tener valores", "jm52QG": "Por favor, introduce un nombre para el embudo", "+N7isb": "Embudo guardado correctamente", @@ -273,7 +482,6 @@ "+U6ozc": "Tipo", "m1czzY": "Evento", "Y6DkLY": "Ruta (ej. /precios)", - "eOj4Bs": "Nombre del evento", "Hp/0iW": "Introduce una ruta (ej. /pago), no una URL completa.", "Asi2Jg": "Ocultar opciones avanzadas", "lIEejV": "Mostrar opciones avanzadas", @@ -287,8 +495,6 @@ "tINfvW": "Usa * para coincidir con un segmento de ruta (ej. /blog/*) o ** para múltiples segmentos (ej. /docs/**/intro)", "ox304v": "Ocurrió un error", "KbGBQH": "Ocurrió un error al guardar", - "47FYwb": "Cancelar", - "TiR/Hq": "Guardando...", "/liMUf": "Embudo eliminado correctamente", "753yX5": "Etiqueta", "+SDMR3": "Propiedad", @@ -298,7 +504,6 @@ "SB3+JE": "No hay datos de embudo disponibles", "45gABM": "¿Estás seguro de que quieres eliminar \"{name}\"? Esta acción no se puede deshacer.", "noZdV2": "Eliminando...", - "K3r6DQ": "Eliminar", "GoxzAN": "Filtrar embudos", "qGN7M9": "Error al cargar embudos", "5/6deG": "Hubo un problema al obtener los embudos. Inténtalo de nuevo más tarde.", @@ -328,16 +533,15 @@ "h3ICzV": "Cargando sesiones...", "KjXPXZ": "{count} sesiones", "9iSdEj": "{count} sesión", - "tFFMkF": "Pausa", "J3ca41": "Reproducir", "Ggedt8": "Mostrando solo las primeras {count} sesiones. Es posible que haya más datos disponibles.", "5WuADX": "Añadir objetivo", + "WuHoZ9": "Conversiones", + "e/U0Xt": "Tasa de conversión", "+Ior19": "Objetivo de página", "rTE34i": "Objetivo de evento", - "FYBPJU": "Objetivo #{goalId}", "pW4lxD": "Patrón", - "WuHoZ9": "Conversiones", - "e/U0Xt": "Tasa de conversión", + "99Lkvz": "", "sOXElg": "Editar objetivo", "N/ctXb": "Clonar objetivo", "F3XA9+": "Eliminar objetivo", @@ -395,10 +599,10 @@ "zuqMfZ": "Mapa", "jUSc45": "Zonas horarias", "NdE4Ps": "Navegadores", + "/VnDMl": "Otros", "+20FW7": "Dispositivos", "aTW7It": "Sistemas operativos", "3X4r56": "Dimensiones de la pantalla", - "/VnDMl": "Otros", "Aujn2T": "Recuento", "ogKEiU": "Enlaces salientes", "VLKK35": "Clics", @@ -407,13 +611,14 @@ "pEc/5k": "% Clic", "wU7PzI": "Último clic", "4KEfRY": "Títulos", - "87ZCAe": "Entradas", - "0ogV14": "Salidas", - "P6RGqE": "Nombres de host", "gvOzOl": "Título de la página", + "87ZCAe": "Entradas", "vFf5xV": "Páginas de entrada", + "0ogV14": "Salidas", "KtC97P": "Páginas de salida", + "P6RGqE": "Nombres de host", "iF/x8v": "Referidores", + "UF6kPm": "Directo", "LUrJwE": "Canales", "aH4De2": "Fuente", "ovJ26C": "Medio", @@ -421,7 +626,6 @@ "qTy5se": "Término", "Jq3FDz": "Contenido", "grtbAW": "UTM", - "UF6kPm": "Directo", "0E9k6Y": "Conecta tu cuenta de Google Search Console para ver datos de rendimiento de búsqueda incluyendo palabras clave principales y páginas.", "jioGL4": "Conectar Google Search Console", "M/h5TN": "Impresiones", @@ -550,7 +754,6 @@ "uiy9pN": "Eventos 30d", "9juexR": "Detalles de la suscripción", "fz0z4c": "Plan", - "tzMNF3": "Estado", "T8qVXf": "Límite de eventos", "ekXood": "Ilimitado", "5x9Sl1": "Fin del periodo", @@ -563,7 +766,6 @@ "bGIAle": "Miembros ({count})", "hQZhn8": "Suplantar", "2ZpsMl": "No hay miembros", - "G/yZLu": "Eliminar", "nJuUfX": "Buscar por nombre, slug, dominio o correo de miembro...", "RllRQH": "Mostrar organizaciones con 0 eventos (30d)", "7OL11E": "Solo sobre el límite", @@ -578,7 +780,6 @@ "uL0dMG": "Uso de todo el servicio - Últimos {timePeriod}", "SVwJTM": "Exportar", "K56Dim": "Organización", - "ORGv1Q": "Creado", "JKxOsh": "Eventos mensuales", "R/6nsx": "Suscripción", "DDhP4z": "Sitios", @@ -596,8 +797,6 @@ "viXE32": "Privado", "6hdNA5": "Eventos (24h)", "J4r/Gi": "Eventos (30d)", - "Zh+5A6": "Activado", - "OvzONl": "Desactivado", "C2EM7h": "Correo del propietario", "sEqhTf": "Error al cargar los datos de sitios. Inténtalo de nuevo más tarde.", "r9Y1x6": "Buscar por dominio o correo del propietario...", @@ -626,7 +825,6 @@ "uA0DvF": "Error al eliminar usuario de la organización", "PW+sL4": "N/A", "wittYy": "Creado el", - "wL7VAE": "Acciones", "bdcMGy": "Abrir menú", "6gHGy0": "Eliminar de la organización", "J2wna+": "¿Eliminar usuario de la organización?", @@ -744,19 +942,16 @@ "u4673k": "Genera claves de API para acceder a los endpoints de analíticas desde tus aplicaciones", "1fe3VI": "Las claves de API están disponibles en los planes Standard y Pro.", "AkVL9j": "Nombre de la clave de API", - "mRL9Vh": "Creando...", "jDvHYJ": "Tus claves de API", "MUaUWe": "Cargando claves de API...", "iX4wwR": "Error al cargar claves de API", "62nsdy": "Reintentar", - "EcglP9": "Clave", "IY105q": "No se han creado claves de API aún", "wPtCEB": "Clave de API creada", "qcTCG8": "Guarda esta clave de API de forma segura. No podrás volver a verla.", "51jo4g": "Tu clave de API", "+fICx5": "Importante", "TsKkxv": "Guarda esta clave de forma segura. No se mostrará de nuevo.", - "JXdbo8": "Hecho", "LuNBqj": "La contraseña debe tener al menos 8 caracteres", "UjlqkD": "Contraseña fuerte", "EK3962": "Contraseña buena", @@ -886,7 +1081,6 @@ "S5IFjk": "Crea un equipo para agrupar sitios y administrar el acceso de los miembros.", "StUScz": "{count} miembros", "RNCPOG": "Registro", - "acrOoz": "Continuar", "uCk8r+": "¿Ya tienes una cuenta?", "odXlk8": "Iniciar sesión", "uWRAQk": "Elige tu plan", @@ -996,7 +1190,6 @@ "W5IIP8": "Actualiza a {planName} para desbloquear {message}", "4Y+tpi": "Ver una demostración de esta función", "RL7HbL": "Pide al propietario de tu organización que actualice a Pro para desbloquear {message}", - "QashlR": "Ocurrió un error al obtener datos", "jsy7pk": "Intentar de nuevo", "hyfdry": "Vista de página", "/kZg9i": "Clic en botón", @@ -1196,7 +1389,6 @@ "jjBvFh": "Exclusiones", "6cBDhe": "Integraciones", "IP4n+n": "Inserciones de Widget", - "rbrahO": "Cerrar", "scL+IP": "Widget Activado", "8pKlHk": "Habilitar Widget de Inserción", "mhmZ+P": "Repetición de Sesión", @@ -1243,7 +1435,6 @@ "u/vOPu": "Pagada", "jHfCjd": "Anulada", "45hFQt": "Incobrable", - "W6nwjo": "Borrador", "6dqYnF": "Facturas", "P7PLVj": "Fecha", "/0TOL5": "Monto", diff --git a/client/messages/fr.json b/client/messages/fr.json index 24befd5c7..57f2c044e 100644 --- a/client/messages/fr.json +++ b/client/messages/fr.json @@ -61,6 +61,7 @@ "mByYl9": "Pages vues %", "IuFETn": "Durée", "0eoYsu": "Taux de rebond", + "QashlR": "Une erreur est survenue lors de la récupération des données", "IxrHg4": "Filtrer {count} éléments...", "tL4WC1": "Chargement en cours...", "HPx76n": "Tous les éléments chargés", @@ -74,6 +75,8 @@ "XHLYdJ": "Objectifs", "9d/EEp": "Analyse produit", "5yUsUe": "Replay", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Entonnoirs", "08hqOd": "Parcours", "nL6Jl0": "Rétention", @@ -242,6 +245,212 @@ "BReFYW": "Changements de saisie", "NDoUa9": "Tous les types d'événements masqués", "MJ2jZQ": "Total", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Objectif #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Nom de l'événement", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Brouillon", + "LHF3Za": "", + "47FYwb": "Annuler", + "rbrahO": "Fermer", + "cyR7Kh": "", + "TiR/Hq": "Enregistrement en cours...", + "mRL9Vh": "Création en cours...", + "X0ha1a": "", + "JXdbo8": "Terminé", + "acrOoz": "Continuer", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Pause", + "U78NhE": "", + "wL7VAE": "Actions", + "wEQDC6": "", + "K3r6DQ": "Supprimer", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "Supprimer", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Statut", + "Zh+5A6": "Activé", + "OvzONl": "Désactivé", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Créé", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Clé", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Toutes les étapes doivent avoir des valeurs", "jm52QG": "Veuillez saisir un nom d'entonnoir", "+N7isb": "Entonnoir enregistré avec succès", @@ -273,7 +482,6 @@ "+U6ozc": "Type", "m1czzY": "Événement", "Y6DkLY": "Chemin (ex. /pricing)", - "eOj4Bs": "Nom de l'événement", "Hp/0iW": "Saisissez un chemin (ex. /checkout), pas une URL complète.", "Asi2Jg": "Masquer les options avancées", "lIEejV": "Afficher les options avancées", @@ -287,8 +495,6 @@ "tINfvW": "Utilisez * pour un seul segment de chemin (ex. /blog/*) ou ** pour plusieurs segments (ex. /docs/**/intro)", "ox304v": "Une erreur est survenue", "KbGBQH": "Une erreur est survenue lors de l'enregistrement", - "47FYwb": "Annuler", - "TiR/Hq": "Enregistrement en cours...", "/liMUf": "Entonnoir supprimé avec succès", "753yX5": "Libellé", "+SDMR3": "Propriété", @@ -298,7 +504,6 @@ "SB3+JE": "Aucune donnée d'entonnoir disponible", "45gABM": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cette action est irréversible.", "noZdV2": "Suppression en cours...", - "K3r6DQ": "Supprimer", "GoxzAN": "Filtrer les entonnoirs", "qGN7M9": "Échec du chargement des entonnoirs", "5/6deG": "Un problème est survenu lors de la récupération des entonnoirs. Veuillez réessayer plus tard.", @@ -328,16 +533,15 @@ "h3ICzV": "Chargement des sessions...", "KjXPXZ": "{count} sessions", "9iSdEj": "{count} session", - "tFFMkF": "Pause", "J3ca41": "Lecture", "Ggedt8": "Affichage des {count} premières sessions uniquement. D'autres données peuvent être disponibles.", "5WuADX": "Ajouter un objectif", + "WuHoZ9": "Conversions", + "e/U0Xt": "Taux de conversion", "+Ior19": "Objectif de page", "rTE34i": "Objectif d'événement", - "FYBPJU": "Objectif #{goalId}", "pW4lxD": "Modèle", - "WuHoZ9": "Conversions", - "e/U0Xt": "Taux de conversion", + "99Lkvz": "", "sOXElg": "Modifier l'objectif", "N/ctXb": "Dupliquer l'objectif", "F3XA9+": "Supprimer l'objectif", @@ -395,10 +599,10 @@ "zuqMfZ": "Carte", "jUSc45": "Fuseaux horaires", "NdE4Ps": "Navigateurs", + "/VnDMl": "Autre", "+20FW7": "Appareils", "aTW7It": "Systèmes d'exploitation", "3X4r56": "Résolutions d'écran", - "/VnDMl": "Autre", "Aujn2T": "Nombre", "ogKEiU": "Liens sortants", "VLKK35": "Clics", @@ -407,13 +611,14 @@ "pEc/5k": "Clic %", "wU7PzI": "Dernier clic", "4KEfRY": "Titres", - "87ZCAe": "Entrées", - "0ogV14": "Sorties", - "P6RGqE": "Noms d'hôte", "gvOzOl": "Titre de la page", + "87ZCAe": "Entrées", "vFf5xV": "Pages d'entrée", + "0ogV14": "Sorties", "KtC97P": "Pages de sortie", + "P6RGqE": "Noms d'hôte", "iF/x8v": "Référents", + "UF6kPm": "Direct", "LUrJwE": "Canaux", "aH4De2": "Source", "ovJ26C": "Moyen", @@ -421,7 +626,6 @@ "qTy5se": "Terme", "Jq3FDz": "Contenu", "grtbAW": "UTM", - "UF6kPm": "Direct", "0E9k6Y": "Connectez votre compte Google Search Console pour voir les données de performance de recherche, y compris les meilleurs mots-clés et pages.", "jioGL4": "Connecter Google Search Console", "M/h5TN": "Impressions", @@ -550,7 +754,6 @@ "uiy9pN": "Événements 30j", "9juexR": "Détails de l'abonnement", "fz0z4c": "Forfait", - "tzMNF3": "Statut", "T8qVXf": "Limite d'événements", "ekXood": "Illimité", "5x9Sl1": "Fin de période", @@ -563,7 +766,6 @@ "bGIAle": "Membres ({count})", "hQZhn8": "Usurper l'identité", "2ZpsMl": "Aucun membre", - "G/yZLu": "Supprimer", "nJuUfX": "Rechercher par nom, slug, domaine ou e-mail de membre...", "RllRQH": "Afficher les org. avec 0 événement (30j)", "7OL11E": "Uniquement au-dessus de la limite", @@ -578,7 +780,6 @@ "uL0dMG": "Utilisation globale du service - {timePeriod} derniers", "SVwJTM": "Exporter", "K56Dim": "Organisation", - "ORGv1Q": "Créé", "JKxOsh": "Événements mensuels", "R/6nsx": "Abonnement", "DDhP4z": "Sites", @@ -596,8 +797,6 @@ "viXE32": "Privé", "6hdNA5": "Événements (24h)", "J4r/Gi": "Événements (30j)", - "Zh+5A6": "Activé", - "OvzONl": "Désactivé", "C2EM7h": "E-mail du propriétaire", "sEqhTf": "Échec du chargement des données de sites. Veuillez réessayer plus tard.", "r9Y1x6": "Rechercher par domaine ou e-mail du propriétaire...", @@ -626,7 +825,6 @@ "uA0DvF": "Échec du retrait de l'utilisateur de l'organisation", "PW+sL4": "N/A", "wittYy": "Créé le", - "wL7VAE": "Actions", "bdcMGy": "Ouvrir le menu", "6gHGy0": "Retirer de l'organisation", "J2wna+": "Retirer l'utilisateur de l'organisation ?", @@ -744,19 +942,16 @@ "u4673k": "Générez des clés API pour accéder aux points d'accès analytiques depuis vos applications", "1fe3VI": "Les clés API sont disponibles avec les forfaits Standard et Pro.", "AkVL9j": "Nom de la clé API", - "mRL9Vh": "Création en cours...", "jDvHYJ": "Vos clés API", "MUaUWe": "Chargement des clés API...", "iX4wwR": "Échec du chargement des clés API", "62nsdy": "Réessayer", - "EcglP9": "Clé", "IY105q": "Aucune clé API créée pour le moment", "wPtCEB": "Clé API créée", "qcTCG8": "Conservez cette clé API en lieu sûr. Vous ne pourrez plus la revoir.", "51jo4g": "Votre clé API", "+fICx5": "Important", "TsKkxv": "Conservez cette clé en lieu sûr. Elle ne sera plus affichée.", - "JXdbo8": "Terminé", "LuNBqj": "Le mot de passe doit contenir au moins 8 caractères", "UjlqkD": "Mot de passe fort", "EK3962": "Bon mot de passe", @@ -886,7 +1081,6 @@ "S5IFjk": "Créez une équipe pour regrouper les sites et gérer l'accès des membres.", "StUScz": "{count} membres", "RNCPOG": "Inscription", - "acrOoz": "Continuer", "uCk8r+": "Vous avez déjà un compte ?", "odXlk8": "Se connecter", "uWRAQk": "Choisissez votre plan", @@ -996,7 +1190,6 @@ "W5IIP8": "Passez à {planName} pour débloquer {message}", "4Y+tpi": "Voir une démo de cette fonctionnalité", "RL7HbL": "Demandez au propriétaire de votre organisation de passer à Pro pour débloquer {message}", - "QashlR": "Une erreur est survenue lors de la récupération des données", "jsy7pk": "Réessayer", "hyfdry": "Page vue", "/kZg9i": "Clic sur bouton", @@ -1196,7 +1389,6 @@ "jjBvFh": "Exclusions", "6cBDhe": "Intégrations", "IP4n+n": "Intégrations de widgets", - "rbrahO": "Fermer", "scL+IP": "Widget activé", "8pKlHk": "Activer le widget d'intégration", "mhmZ+P": "Enregistrement de session", @@ -1243,7 +1435,6 @@ "u/vOPu": "Payée", "jHfCjd": "Annulée", "45hFQt": "Irrécouvrable", - "W6nwjo": "Brouillon", "6dqYnF": "Factures", "P7PLVj": "Date", "/0TOL5": "Montant", diff --git a/client/messages/it.json b/client/messages/it.json index 5c08f99ff..7c14a03c0 100644 --- a/client/messages/it.json +++ b/client/messages/it.json @@ -61,6 +61,7 @@ "mByYl9": "% Visualizzazioni di pagina", "IuFETn": "Durata", "0eoYsu": "Frequenza di Rimbalzo", + "QashlR": "Si è verificato un errore durante il recupero dei dati", "IxrHg4": "Filtra {count} elementi...", "tL4WC1": "Caricamento in corso...", "HPx76n": "Tutti gli elementi caricati", @@ -74,6 +75,8 @@ "XHLYdJ": "Obiettivi", "9d/EEp": "Analisi del Prodotto", "5yUsUe": "Replay", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Funnel", "08hqOd": "Percorsi", "nL6Jl0": "Fidelizzazione", @@ -242,6 +245,212 @@ "BReFYW": "Modifiche agli input", "NDoUa9": "Tutti i tipi di evento nascosti", "MJ2jZQ": "Totale", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Obiettivo #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Nome evento", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Bozza", + "LHF3Za": "", + "47FYwb": "Annulla", + "rbrahO": "Chiudi", + "cyR7Kh": "", + "TiR/Hq": "Salvataggio in corso...", + "mRL9Vh": "Creazione in corso...", + "X0ha1a": "", + "JXdbo8": "Fatto", + "acrOoz": "Continua", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Pausa", + "U78NhE": "", + "wL7VAE": "Azioni", + "wEQDC6": "", + "K3r6DQ": "Elimina", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "Rimuovi", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Stato", + "Zh+5A6": "Attivo", + "OvzONl": "Disattivo", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Creata", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Chiave", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Tutti i passaggi devono avere dei valori", "jm52QG": "Inserisci il nome di un funnel", "+N7isb": "Funnel salvato con successo", @@ -273,7 +482,6 @@ "+U6ozc": "Tipo", "m1czzY": "Evento", "Y6DkLY": "Percorso (es. /pricing)", - "eOj4Bs": "Nome evento", "Hp/0iW": "Inserisci un percorso (es. /checkout), non un URL completo.", "Asi2Jg": "Nascondi opzioni avanzate", "lIEejV": "Mostra opzioni avanzate", @@ -287,8 +495,6 @@ "tINfvW": "Usa * per corrispondere a un singolo segmento di percorso (es. /blog/*) o ** per corrispondere a più segmenti (es. /docs/**/intro)", "ox304v": "Si è verificato un errore", "KbGBQH": "Si è verificato un errore durante il salvataggio", - "47FYwb": "Annulla", - "TiR/Hq": "Salvataggio in corso...", "/liMUf": "Funnel eliminato con successo", "753yX5": "Etichetta", "+SDMR3": "Proprietà", @@ -298,7 +504,6 @@ "SB3+JE": "Nessun dato del funnel disponibile", "45gABM": "Sei sicuro di voler eliminare \"{name}\"? Questa azione non può essere annullata.", "noZdV2": "Eliminazione in corso...", - "K3r6DQ": "Elimina", "GoxzAN": "Filtra funnel", "qGN7M9": "Impossibile caricare i funnel", "5/6deG": "Si è verificato un problema nel recupero dei funnel. Riprova più tardi.", @@ -328,16 +533,15 @@ "h3ICzV": "Caricamento sessioni...", "KjXPXZ": "{count} sessioni", "9iSdEj": "{count} sessione", - "tFFMkF": "Pausa", "J3ca41": "Riproduci", "Ggedt8": "Mostrando solo le prime {count} sessioni. Potrebbero essere disponibili più dati.", "5WuADX": "Aggiungi Obiettivo", + "WuHoZ9": "Conversioni", + "e/U0Xt": "Tasso di Conversione", "+Ior19": "Obiettivo Pagina", "rTE34i": "Obiettivo Evento", - "FYBPJU": "Obiettivo #{goalId}", "pW4lxD": "Modello", - "WuHoZ9": "Conversioni", - "e/U0Xt": "Tasso di Conversione", + "99Lkvz": "", "sOXElg": "Modifica Obiettivo", "N/ctXb": "Clona Obiettivo", "F3XA9+": "Elimina Obiettivo", @@ -395,10 +599,10 @@ "zuqMfZ": "Mappa", "jUSc45": "Fusi orari", "NdE4Ps": "Browser", + "/VnDMl": "Altro", "+20FW7": "Dispositivi", "aTW7It": "Sistemi Operativi", "3X4r56": "Dimensioni Schermo", - "/VnDMl": "Altro", "Aujn2T": "Conteggio", "ogKEiU": "Link Esterni", "VLKK35": "Clic", @@ -407,13 +611,14 @@ "pEc/5k": "% Clic", "wU7PzI": "Ultimo Clic", "4KEfRY": "Titoli", - "87ZCAe": "Ingressi", - "0ogV14": "Uscite", - "P6RGqE": "Hostname", "gvOzOl": "Titolo Pagina", + "87ZCAe": "Ingressi", "vFf5xV": "Pagine di Ingresso", + "0ogV14": "Uscite", "KtC97P": "Pagine di Uscita", + "P6RGqE": "Hostname", "iF/x8v": "Referrer", + "UF6kPm": "Diretto", "LUrJwE": "Canali", "aH4De2": "Sorgente", "ovJ26C": "Mezzo", @@ -421,7 +626,6 @@ "qTy5se": "Termine", "Jq3FDz": "Contenuto", "grtbAW": "UTM", - "UF6kPm": "Diretto", "0E9k6Y": "Connetti il tuo account Google Search Console per visualizzare i dati sulle prestazioni di ricerca, inclusi i termini e le pagine principali.", "jioGL4": "Connetti Google Search Console", "M/h5TN": "Impressioni", @@ -550,7 +754,6 @@ "uiy9pN": "Eventi 30g", "9juexR": "Dettagli Abbonamento", "fz0z4c": "Piano", - "tzMNF3": "Stato", "T8qVXf": "Limite Eventi", "ekXood": "Illimitato", "5x9Sl1": "Fine Periodo", @@ -563,7 +766,6 @@ "bGIAle": "Membri ({count})", "hQZhn8": "Impersona", "2ZpsMl": "Nessun membro", - "G/yZLu": "Rimuovi", "nJuUfX": "Cerca per nome, slug, dominio o email del membro...", "RllRQH": "Mostra organizzazioni con 0 eventi (30g)", "7OL11E": "Solo oltre il limite", @@ -578,7 +780,6 @@ "uL0dMG": "Utilizzo dell'intero servizio - Ultimi {timePeriod}", "SVwJTM": "Esporta", "K56Dim": "Organizzazione", - "ORGv1Q": "Creata", "JKxOsh": "Eventi Mensili", "R/6nsx": "Abbonamento", "DDhP4z": "Siti", @@ -596,8 +797,6 @@ "viXE32": "Privato", "6hdNA5": "Eventi (24h)", "J4r/Gi": "Eventi (30g)", - "Zh+5A6": "Attivo", - "OvzONl": "Disattivo", "C2EM7h": "Email Proprietario", "sEqhTf": "Impossibile caricare i dati dei siti. Riprova più tardi.", "r9Y1x6": "Cerca per dominio o email proprietario...", @@ -626,7 +825,6 @@ "uA0DvF": "Impossibile rimuovere l'utente dall'organizzazione", "PW+sL4": "N/D", "wittYy": "Creato il", - "wL7VAE": "Azioni", "bdcMGy": "Apri menu", "6gHGy0": "Rimuovi dall'Organizzazione", "J2wna+": "Rimuovere l'utente dall'organizzazione?", @@ -744,19 +942,16 @@ "u4673k": "Genera chiavi API per accedere agli endpoint di analisi dalle tue applicazioni", "1fe3VI": "Le chiavi API sono disponibili nei piani Standard e Pro.", "AkVL9j": "Nome Chiave API", - "mRL9Vh": "Creazione in corso...", "jDvHYJ": "Le tue Chiavi API", "MUaUWe": "Caricamento chiavi API...", "iX4wwR": "Impossibile caricare le chiavi API", "62nsdy": "Riprova", - "EcglP9": "Chiave", "IY105q": "Nessuna chiave API creata ancora", "wPtCEB": "Chiave API Creata", "qcTCG8": "Salva questa chiave API in modo sicuro. Non potrai più vederla.", "51jo4g": "La tua Chiave API", "+fICx5": "Importante", "TsKkxv": "Conserva questa chiave in modo sicuro. Non verrà mostrata di nuovo.", - "JXdbo8": "Fatto", "LuNBqj": "La password dovrebbe essere lunga almeno 8 caratteri", "UjlqkD": "Password forte", "EK3962": "Password buona", @@ -886,7 +1081,6 @@ "S5IFjk": "Crea un team per raggruppare i siti e gestire l'accesso dei membri.", "StUScz": "{count} membri", "RNCPOG": "Registrazione", - "acrOoz": "Continua", "uCk8r+": "Hai già un account?", "odXlk8": "Accedi", "uWRAQk": "Scegli il tuo piano", @@ -996,7 +1190,6 @@ "W5IIP8": "Passa a {planName} per sbloccare {message}", "4Y+tpi": "Guarda una demo di questa funzionalità", "RL7HbL": "Chiedi al proprietario della tua organizzazione di passare a Pro per sbloccare {message}", - "QashlR": "Si è verificato un errore durante il recupero dei dati", "jsy7pk": "Riprova", "hyfdry": "Visualizzazione pagina", "/kZg9i": "Clic su pulsante", @@ -1196,7 +1389,6 @@ "jjBvFh": "Esclusioni", "6cBDhe": "Integrazioni", "IP4n+n": "Incorporamenti Widget", - "rbrahO": "Chiudi", "scL+IP": "Widget Abilitato", "8pKlHk": "Abilita Widget di Incorporamento", "mhmZ+P": "Riproduzione Sessione", @@ -1243,7 +1435,6 @@ "u/vOPu": "Pagata", "jHfCjd": "Annullata", "45hFQt": "Inesigibile", - "W6nwjo": "Bozza", "6dqYnF": "Fatture", "P7PLVj": "Data", "/0TOL5": "Importo", diff --git a/client/messages/ja.json b/client/messages/ja.json index 6ba728b46..2e5e21922 100644 --- a/client/messages/ja.json +++ b/client/messages/ja.json @@ -61,6 +61,7 @@ "mByYl9": "ページビュー %", "IuFETn": "滞在時間", "0eoYsu": "直帰率", + "QashlR": "データの取得中にエラーが発生しました", "IxrHg4": "{count}件を検索...", "tL4WC1": "さらに読み込み中...", "HPx76n": "すべて読み込み済み", @@ -74,6 +75,8 @@ "XHLYdJ": "目標", "9d/EEp": "プロダクトアナリティクス", "5yUsUe": "リプレイ", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "ファネル", "08hqOd": "ジャーニー", "nL6Jl0": "リテンション", @@ -242,6 +245,212 @@ "BReFYW": "入力変更", "NDoUa9": "すべてのイベントタイプが非表示です", "MJ2jZQ": "合計", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "ゴール #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "イベント名", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "下書き", + "LHF3Za": "", + "47FYwb": "キャンセル", + "rbrahO": "閉じる", + "cyR7Kh": "", + "TiR/Hq": "保存中...", + "mRL9Vh": "作成中...", + "X0ha1a": "", + "JXdbo8": "完了", + "acrOoz": "続行", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "一時停止", + "U78NhE": "", + "wL7VAE": "操作", + "wEQDC6": "", + "K3r6DQ": "削除", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "削除", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "ステータス", + "Zh+5A6": "オン", + "OvzONl": "オフ", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "作成日", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "キー", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "すべてのステップに値を入力してください", "jm52QG": "ファネル名を入力してください", "+N7isb": "ファネルを保存しました", @@ -273,7 +482,6 @@ "+U6ozc": "タイプ", "m1czzY": "イベント", "Y6DkLY": "パス(例:/pricing)", - "eOj4Bs": "イベント名", "Hp/0iW": "パスを入力してください(例:/checkout)。完全なURLではありません。", "Asi2Jg": "詳細オプションを非表示", "lIEejV": "詳細オプションを表示", @@ -287,8 +495,6 @@ "tINfvW": "*で単一のパスセグメントに一致(例:/blog/*)、**で複数セグメントに一致(例:/docs/**/intro)", "ox304v": "エラーが発生しました", "KbGBQH": "保存中にエラーが発生しました", - "47FYwb": "キャンセル", - "TiR/Hq": "保存中...", "/liMUf": "ファネルを削除しました", "753yX5": "ラベル", "+SDMR3": "プロパティ", @@ -298,7 +504,6 @@ "SB3+JE": "ファネルデータがありません", "45gABM": "「{name}」を削除してもよろしいですか?この操作は元に戻せません。", "noZdV2": "削除中...", - "K3r6DQ": "削除", "GoxzAN": "ファネルをフィルター", "qGN7M9": "ファネルの読み込みに失敗しました", "5/6deG": "ファネルの取得中に問題が発生しました。後でもう一度お試しください。", @@ -328,16 +533,15 @@ "h3ICzV": "セッションを読み込み中...", "KjXPXZ": "{count}セッション", "9iSdEj": "{count}セッション", - "tFFMkF": "一時停止", "J3ca41": "再生", "Ggedt8": "最初の{count}セッションのみ表示しています。より多くのデータがある場合があります。", "5WuADX": "ゴールを追加", + "WuHoZ9": "コンバージョン", + "e/U0Xt": "コンバージョン率", "+Ior19": "ページゴール", "rTE34i": "イベントゴール", - "FYBPJU": "ゴール #{goalId}", "pW4lxD": "パターン", - "WuHoZ9": "コンバージョン", - "e/U0Xt": "コンバージョン率", + "99Lkvz": "", "sOXElg": "ゴールを編集", "N/ctXb": "ゴールを複製", "F3XA9+": "ゴールを削除", @@ -395,10 +599,10 @@ "zuqMfZ": "マップ", "jUSc45": "タイムゾーン", "NdE4Ps": "ブラウザ", + "/VnDMl": "その他", "+20FW7": "デバイス", "aTW7It": "オペレーティングシステム", "3X4r56": "画面サイズ", - "/VnDMl": "その他", "Aujn2T": "カウント", "ogKEiU": "外部リンク", "VLKK35": "クリック", @@ -407,13 +611,14 @@ "pEc/5k": "クリック率", "wU7PzI": "最終クリック", "4KEfRY": "タイトル", - "87ZCAe": "入口", - "0ogV14": "出口", - "P6RGqE": "ホスト名", "gvOzOl": "ページタイトル", + "87ZCAe": "入口", "vFf5xV": "入口ページ", + "0ogV14": "出口", "KtC97P": "出口ページ", + "P6RGqE": "ホスト名", "iF/x8v": "リファラー", + "UF6kPm": "ダイレクト", "LUrJwE": "チャネル", "aH4De2": "ソース", "ovJ26C": "メディア", @@ -421,7 +626,6 @@ "qTy5se": "キーワード", "Jq3FDz": "コンテンツ", "grtbAW": "UTM", - "UF6kPm": "ダイレクト", "0E9k6Y": "Google Search Consoleアカウントを接続して、上位キーワードやページを含む検索パフォーマンスデータを表示します。", "jioGL4": "Google Search Consoleを接続", "M/h5TN": "インプレッション", @@ -550,7 +754,6 @@ "uiy9pN": "30日間イベント", "9juexR": "サブスクリプション詳細", "fz0z4c": "プラン", - "tzMNF3": "ステータス", "T8qVXf": "イベント上限", "ekXood": "無制限", "5x9Sl1": "期間終了", @@ -563,7 +766,6 @@ "bGIAle": "メンバー({count})", "hQZhn8": "なりすまし", "2ZpsMl": "メンバーなし", - "G/yZLu": "削除", "nJuUfX": "名前、スラッグ、ドメイン、またはメンバーメールで検索...", "RllRQH": "30日間イベント0の組織を表示", "7OL11E": "上限超過のみ", @@ -578,7 +780,6 @@ "uL0dMG": "サービス全体の使用量 - 過去{timePeriod}", "SVwJTM": "エクスポート", "K56Dim": "組織", - "ORGv1Q": "作成日", "JKxOsh": "月間イベント", "R/6nsx": "サブスクリプション", "DDhP4z": "サイト", @@ -596,8 +797,6 @@ "viXE32": "非公開", "6hdNA5": "イベント(24時間)", "J4r/Gi": "イベント(30日間)", - "Zh+5A6": "オン", - "OvzONl": "オフ", "C2EM7h": "オーナーメール", "sEqhTf": "サイトデータの読み込みに失敗しました。後でもう一度お試しください。", "r9Y1x6": "ドメインまたはオーナーメールで検索...", @@ -626,7 +825,6 @@ "uA0DvF": "ユーザーの組織からの削除に失敗しました", "PW+sL4": "N/A", "wittYy": "作成日時", - "wL7VAE": "操作", "bdcMGy": "メニューを開く", "6gHGy0": "組織から削除", "J2wna+": "ユーザーを組織から削除しますか?", @@ -744,19 +942,16 @@ "u4673k": "アプリケーションからアナリティクスエンドポイントにアクセスするためのAPIキーを生成", "1fe3VI": "API キーはスタンダードプランおよびプロプランでご利用いただけます。", "AkVL9j": "APIキー名", - "mRL9Vh": "作成中...", "jDvHYJ": "あなたのAPIキー", "MUaUWe": "APIキーを読み込み中...", "iX4wwR": "APIキーの読み込みに失敗しました", "62nsdy": "再試行", - "EcglP9": "キー", "IY105q": "APIキーがまだ作成されていません", "wPtCEB": "APIキーを作成しました", "qcTCG8": "このAPIキーを安全に保存してください。再度表示することはできません。", "51jo4g": "あなたのAPIキー", "+fICx5": "重要", "TsKkxv": "このキーを安全に保管してください。再度表示されません。", - "JXdbo8": "完了", "LuNBqj": "パスワードは8文字以上である必要があります", "UjlqkD": "強いパスワード", "EK3962": "良いパスワード", @@ -886,7 +1081,6 @@ "S5IFjk": "サイトをグループ化してメンバーアクセスを管理するチームを作成します。", "StUScz": "{count} 名のメンバー", "RNCPOG": "サインアップ", - "acrOoz": "続行", "uCk8r+": "すでにアカウントをお持ちですか?", "odXlk8": "ログイン", "uWRAQk": "プランを選択", @@ -996,7 +1190,6 @@ "W5IIP8": "{planName}にアップグレードして{message}をアンロック", "4Y+tpi": "この機能のデモを見る", "RL7HbL": "組織オーナーにProへのアップグレードを依頼して{message}をアンロック", - "QashlR": "データの取得中にエラーが発生しました", "jsy7pk": "再試行", "hyfdry": "ページビュー", "/kZg9i": "ボタンクリック", @@ -1196,7 +1389,6 @@ "jjBvFh": "除外", "6cBDhe": "インテグレーション", "IP4n+n": "ウィジェット埋め込み", - "rbrahO": "閉じる", "scL+IP": "ウィジェット有効", "8pKlHk": "埋め込みウィジェットを有効にする", "mhmZ+P": "セッションリプレイ", @@ -1243,7 +1435,6 @@ "u/vOPu": "支払済み", "jHfCjd": "無効", "45hFQt": "回収不能", - "W6nwjo": "下書き", "6dqYnF": "請求書", "P7PLVj": "日付", "/0TOL5": "金額", diff --git a/client/messages/ko.json b/client/messages/ko.json index d2e37bd0c..731d7fca4 100644 --- a/client/messages/ko.json +++ b/client/messages/ko.json @@ -61,6 +61,7 @@ "mByYl9": "페이지뷰 %", "IuFETn": "기간", "0eoYsu": "이탈률", + "QashlR": "데이터를 가져오는 중 오류가 발생했습니다", "IxrHg4": "{count}개 항목 필터...", "tL4WC1": "더 불러오는 중...", "HPx76n": "모든 항목 로드됨", @@ -74,6 +75,8 @@ "XHLYdJ": "목표", "9d/EEp": "제품 분석", "5yUsUe": "리플레이", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "퍼널", "08hqOd": "여정", "nL6Jl0": "리텐션", @@ -242,6 +245,212 @@ "BReFYW": "입력 변경", "NDoUa9": "모든 이벤트 유형 숨김", "MJ2jZQ": "합계", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "목표 #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "이벤트 이름", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "초안", + "LHF3Za": "", + "47FYwb": "취소", + "rbrahO": "닫기", + "cyR7Kh": "", + "TiR/Hq": "저장 중...", + "mRL9Vh": "생성 중...", + "X0ha1a": "", + "JXdbo8": "완료", + "acrOoz": "계속", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "일시정지", + "U78NhE": "", + "wL7VAE": "작업", + "wEQDC6": "", + "K3r6DQ": "삭제", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "제거", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "상태", + "Zh+5A6": "켜짐", + "OvzONl": "꺼짐", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "생성일", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "키", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "모든 단계에 값이 있어야 합니다", "jm52QG": "퍼널 이름을 입력하세요", "+N7isb": "퍼널이 성공적으로 저장되었습니다", @@ -273,7 +482,6 @@ "+U6ozc": "유형", "m1czzY": "이벤트", "Y6DkLY": "경로 (예: /pricing)", - "eOj4Bs": "이벤트 이름", "Hp/0iW": "경로를 입력하세요 (예: /checkout), 전체 URL이 아닙니다.", "Asi2Jg": "고급 옵션 숨기기", "lIEejV": "고급 옵션 표시", @@ -287,8 +495,6 @@ "tINfvW": "*를 사용하여 단일 경로 세그먼트를 일치시키거나 (예: /blog/*) **를 사용하여 여러 세그먼트를 일치시킵니다 (예: /docs/**/intro)", "ox304v": "오류가 발생했습니다", "KbGBQH": "저장 중 오류가 발생했습니다", - "47FYwb": "취소", - "TiR/Hq": "저장 중...", "/liMUf": "퍼널이 성공적으로 삭제되었습니다", "753yX5": "라벨", "+SDMR3": "속성", @@ -298,7 +504,6 @@ "SB3+JE": "사용 가능한 퍼널 데이터 없음", "45gABM": "\"{name}\"을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", "noZdV2": "삭제 중...", - "K3r6DQ": "삭제", "GoxzAN": "퍼널 필터", "qGN7M9": "퍼널 로드 실패", "5/6deG": "퍼널을 가져오는 중 문제가 발생했습니다. 나중에 다시 시도해 주세요.", @@ -328,16 +533,15 @@ "h3ICzV": "세션 로딩 중...", "KjXPXZ": "{count}개 세션", "9iSdEj": "{count}개 세션", - "tFFMkF": "일시정지", "J3ca41": "재생", "Ggedt8": "처음 {count}개 세션만 표시됩니다. 더 많은 데이터가 있을 수 있습니다.", "5WuADX": "목표 추가", + "WuHoZ9": "전환", + "e/U0Xt": "전환율", "+Ior19": "페이지 목표", "rTE34i": "이벤트 목표", - "FYBPJU": "목표 #{goalId}", "pW4lxD": "패턴", - "WuHoZ9": "전환", - "e/U0Xt": "전환율", + "99Lkvz": "", "sOXElg": "목표 편집", "N/ctXb": "목표 복제", "F3XA9+": "목표 삭제", @@ -395,10 +599,10 @@ "zuqMfZ": "지도", "jUSc45": "시간대", "NdE4Ps": "브라우저", + "/VnDMl": "기타", "+20FW7": "기기", "aTW7It": "운영 체제", "3X4r56": "화면 크기", - "/VnDMl": "기타", "Aujn2T": "수", "ogKEiU": "외부 링크", "VLKK35": "클릭", @@ -407,13 +611,14 @@ "pEc/5k": "클릭 %", "wU7PzI": "마지막 클릭", "4KEfRY": "제목", - "87ZCAe": "진입", - "0ogV14": "이탈", - "P6RGqE": "호스트명", "gvOzOl": "페이지 제목", + "87ZCAe": "진입", "vFf5xV": "진입 페이지", + "0ogV14": "이탈", "KtC97P": "이탈 페이지", + "P6RGqE": "호스트명", "iF/x8v": "리퍼러", + "UF6kPm": "직접", "LUrJwE": "채널", "aH4De2": "소스", "ovJ26C": "매체", @@ -421,7 +626,6 @@ "qTy5se": "용어", "Jq3FDz": "콘텐츠", "grtbAW": "UTM", - "UF6kPm": "직접", "0E9k6Y": "검색 성과 데이터 및 상위 키워드와 페이지를 보려면 Google Search Console 계정을 연결하세요.", "jioGL4": "Google Search Console 연결", "M/h5TN": "노출수", @@ -550,7 +754,6 @@ "uiy9pN": "30일 이벤트", "9juexR": "구독 상세", "fz0z4c": "플랜", - "tzMNF3": "상태", "T8qVXf": "이벤트 한도", "ekXood": "무제한", "5x9Sl1": "기간 종료", @@ -563,7 +766,6 @@ "bGIAle": "멤버 ({count})", "hQZhn8": "대리 로그인", "2ZpsMl": "멤버 없음", - "G/yZLu": "제거", "nJuUfX": "이름, 슬러그, 도메인 또는 멤버 이메일로 검색...", "RllRQH": "이벤트 0인 조직 표시 (30일)", "7OL11E": "한도 초과만", @@ -578,7 +780,6 @@ "uL0dMG": "서비스 전체 사용량 - 최근 {timePeriod}", "SVwJTM": "내보내기", "K56Dim": "조직", - "ORGv1Q": "생성일", "JKxOsh": "월별 이벤트", "R/6nsx": "구독", "DDhP4z": "사이트", @@ -596,8 +797,6 @@ "viXE32": "비공개", "6hdNA5": "이벤트 (24시간)", "J4r/Gi": "이벤트 (30일)", - "Zh+5A6": "켜짐", - "OvzONl": "꺼짐", "C2EM7h": "소유자 이메일", "sEqhTf": "사이트 데이터를 로드하지 못했습니다. 나중에 다시 시도해 주세요.", "r9Y1x6": "도메인 또는 소유자 이메일로 검색...", @@ -626,7 +825,6 @@ "uA0DvF": "사용자를 조직에서 제거하는 데 실패했습니다", "PW+sL4": "해당 없음", "wittYy": "생성일", - "wL7VAE": "작업", "bdcMGy": "메뉴 열기", "6gHGy0": "조직에서 제거", "J2wna+": "사용자를 조직에서 제거하시겠습니까?", @@ -744,19 +942,16 @@ "u4673k": "애플리케이션에서 분석 엔드포인트에 접근하기 위한 API 키 생성", "1fe3VI": "API 키는 스탠다드 및 프로 플랜에서 사용할 수 있습니다.", "AkVL9j": "API 키 이름", - "mRL9Vh": "생성 중...", "jDvHYJ": "내 API 키", "MUaUWe": "API 키 로딩 중...", "iX4wwR": "API 키 로드에 실패했습니다", "62nsdy": "재시도", - "EcglP9": "키", "IY105q": "아직 생성된 API 키가 없습니다", "wPtCEB": "API 키 생성됨", "qcTCG8": "이 API 키를 안전하게 저장하세요. 다시 볼 수 없습니다.", "51jo4g": "내 API 키", "+fICx5": "중요", "TsKkxv": "이 키를 안전하게 저장하세요. 다시 표시되지 않습니다.", - "JXdbo8": "완료", "LuNBqj": "비밀번호는 최소 8자 이상이어야 합니다", "UjlqkD": "강력한 비밀번호", "EK3962": "좋은 비밀번호", @@ -886,7 +1081,6 @@ "S5IFjk": "사이트를 그룹화하고 멤버 액세스를 관리하는 팀을 만듭니다.", "StUScz": "멤버 {count}명", "RNCPOG": "가입", - "acrOoz": "계속", "uCk8r+": "이미 계정이 있으신가요?", "odXlk8": "로그인", "uWRAQk": "플랜 선택", @@ -996,7 +1190,6 @@ "W5IIP8": "{message}을(를) 잠금 해제하려면 {planName}으로 업그레이드하세요", "4Y+tpi": "이 기능의 데모 보기", "RL7HbL": "{message}을(를) 잠금 해제하려면 조직 소유자에게 Pro 업그레이드를 요청하세요", - "QashlR": "데이터를 가져오는 중 오류가 발생했습니다", "jsy7pk": "다시 시도", "hyfdry": "페이지뷰", "/kZg9i": "버튼 클릭", @@ -1196,7 +1389,6 @@ "jjBvFh": "제외", "6cBDhe": "통합", "IP4n+n": "위젯 임베드", - "rbrahO": "닫기", "scL+IP": "위젯 활성화됨", "8pKlHk": "임베드 위젯 활성화", "mhmZ+P": "세션 리플레이", @@ -1243,7 +1435,6 @@ "u/vOPu": "결제됨", "jHfCjd": "무효", "45hFQt": "회수 불가", - "W6nwjo": "초안", "6dqYnF": "청구서", "P7PLVj": "날짜", "/0TOL5": "금액", diff --git a/client/messages/pl.json b/client/messages/pl.json index def729b5a..356972cfa 100644 --- a/client/messages/pl.json +++ b/client/messages/pl.json @@ -61,6 +61,7 @@ "mByYl9": "% odsłon", "IuFETn": "Czas trwania", "0eoYsu": "Współczynnik odrzuceń", + "QashlR": "Wystąpił błąd podczas pobierania danych", "IxrHg4": "Filtruj {count} elementów...", "tL4WC1": "Ładowanie kolejnych...", "HPx76n": "Wszystkie elementy załadowane", @@ -74,6 +75,8 @@ "XHLYdJ": "Cele", "9d/EEp": "Analityka produktowa", "5yUsUe": "Odtwarzanie", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Lejki", "08hqOd": "Ścieżki", "nL6Jl0": "Retencja", @@ -242,6 +245,212 @@ "BReFYW": "Zmiany wejść", "NDoUa9": "Wszystkie typy zdarzeń ukryte", "MJ2jZQ": "Razem", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Cel #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Nazwa zdarzenia", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Szkic", + "LHF3Za": "", + "47FYwb": "Anuluj", + "rbrahO": "Zamknij", + "cyR7Kh": "", + "TiR/Hq": "Zapisywanie...", + "mRL9Vh": "Tworzenie...", + "X0ha1a": "", + "JXdbo8": "Gotowe", + "acrOoz": "Kontynuuj", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Pauza", + "U78NhE": "", + "wL7VAE": "Akcje", + "wEQDC6": "", + "K3r6DQ": "Usuń", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "Usuń", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Status", + "Zh+5A6": "Włączone", + "OvzONl": "Wyłączone", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Utworzono", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Klucz", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Wszystkie kroki muszą mieć wartości", "jm52QG": "Wprowadź nazwę lejka", "+N7isb": "Lejek zapisany pomyślnie", @@ -273,7 +482,6 @@ "+U6ozc": "Typ", "m1czzY": "Zdarzenie", "Y6DkLY": "Ścieżka (np. /pricing)", - "eOj4Bs": "Nazwa zdarzenia", "Hp/0iW": "Wprowadź ścieżkę (np. /checkout), nie pełny URL.", "Asi2Jg": "Ukryj zaawansowane opcje", "lIEejV": "Pokaż zaawansowane opcje", @@ -287,8 +495,6 @@ "tINfvW": "Użyj * aby dopasować pojedynczy segment ścieżki (np. /blog/*) lub ** aby dopasować wiele segmentów (np. /docs/**/intro)", "ox304v": "Wystąpił błąd", "KbGBQH": "Wystąpił błąd podczas zapisywania", - "47FYwb": "Anuluj", - "TiR/Hq": "Zapisywanie...", "/liMUf": "Lejek usunięty pomyślnie", "753yX5": "Etykieta", "+SDMR3": "Właściwość", @@ -298,7 +504,6 @@ "SB3+JE": "Brak dostępnych danych lejka", "45gABM": "Czy na pewno chcesz usunąć \"{name}\"? Tej czynności nie można cofnąć.", "noZdV2": "Usuwanie...", - "K3r6DQ": "Usuń", "GoxzAN": "Filtruj lejki", "qGN7M9": "Nie udało się załadować lejków", "5/6deG": "Wystąpił problem z pobieraniem lejków. Spróbuj ponownie później.", @@ -328,16 +533,15 @@ "h3ICzV": "Ładowanie sesji...", "KjXPXZ": "{count} sesji", "9iSdEj": "{count} sesja", - "tFFMkF": "Pauza", "J3ca41": "Odtwarzaj", "Ggedt8": "Wyświetlanie tylko pierwszych {count} sesji. Więcej danych może być dostępnych.", "5WuADX": "Dodaj cel", + "WuHoZ9": "Konwersje", + "e/U0Xt": "Współczynnik konwersji", "+Ior19": "Cel strony", "rTE34i": "Cel zdarzenia", - "FYBPJU": "Cel #{goalId}", "pW4lxD": "Wzorzec", - "WuHoZ9": "Konwersje", - "e/U0Xt": "Współczynnik konwersji", + "99Lkvz": "", "sOXElg": "Edytuj cel", "N/ctXb": "Klonuj cel", "F3XA9+": "Usuń cel", @@ -395,10 +599,10 @@ "zuqMfZ": "Mapa", "jUSc45": "Strefy czasowe", "NdE4Ps": "Przeglądarki", + "/VnDMl": "Inne", "+20FW7": "Urządzenia", "aTW7It": "Systemy operacyjne", "3X4r56": "Wymiary ekranu", - "/VnDMl": "Inne", "Aujn2T": "Liczba", "ogKEiU": "Linki wychodzące", "VLKK35": "Kliknięcia", @@ -407,13 +611,14 @@ "pEc/5k": "% kliknięć", "wU7PzI": "Ostatnio kliknięto", "4KEfRY": "Tytuły", - "87ZCAe": "Wejścia", - "0ogV14": "Wyjścia", - "P6RGqE": "Nazwy hostów", "gvOzOl": "Tytuł strony", + "87ZCAe": "Wejścia", "vFf5xV": "Strony wejściowe", + "0ogV14": "Wyjścia", "KtC97P": "Strony wyjściowe", + "P6RGqE": "Nazwy hostów", "iF/x8v": "Źródła odesłań", + "UF6kPm": "Bezpośrednie", "LUrJwE": "Kanały", "aH4De2": "Źródło", "ovJ26C": "Medium", @@ -421,7 +626,6 @@ "qTy5se": "Termin", "Jq3FDz": "Treść", "grtbAW": "UTM", - "UF6kPm": "Bezpośrednie", "0E9k6Y": "Połącz swoje konto Google Search Console, aby wyświetlić dane o wydajności wyszukiwania, w tym najważniejsze słowa kluczowe i strony.", "jioGL4": "Połącz Google Search Console", "M/h5TN": "Wyświetlenia", @@ -550,7 +754,6 @@ "uiy9pN": "Zdarzenia 30d", "9juexR": "Szczegóły subskrypcji", "fz0z4c": "Plan", - "tzMNF3": "Status", "T8qVXf": "Limit zdarzeń", "ekXood": "Bez limitu", "5x9Sl1": "Koniec okresu", @@ -563,7 +766,6 @@ "bGIAle": "Członkowie ({count})", "hQZhn8": "Podszywaj się", "2ZpsMl": "Brak członków", - "G/yZLu": "Usuń", "nJuUfX": "Szukaj po nazwie, identyfikatorze, domenie lub e-mailu członka...", "RllRQH": "Pokaż organizacje z 0 zdarzeniami (30d)", "7OL11E": "Tylko powyżej limitu", @@ -578,7 +780,6 @@ "uL0dMG": "Wykorzystanie usługi - ostatnie {timePeriod}", "SVwJTM": "Eksport", "K56Dim": "Organizacja", - "ORGv1Q": "Utworzono", "JKxOsh": "Miesięczne zdarzenia", "R/6nsx": "Subskrypcja", "DDhP4z": "Strony", @@ -596,8 +797,6 @@ "viXE32": "Prywatna", "6hdNA5": "Zdarzenia (24h)", "J4r/Gi": "Zdarzenia (30d)", - "Zh+5A6": "Włączone", - "OvzONl": "Wyłączone", "C2EM7h": "E-mail właściciela", "sEqhTf": "Nie udało się załadować danych stron. Spróbuj ponownie później.", "r9Y1x6": "Szukaj po domenie lub e-mailu właściciela...", @@ -626,7 +825,6 @@ "uA0DvF": "Nie udało się usunąć użytkownika z organizacji", "PW+sL4": "Nie dotyczy", "wittYy": "Data utworzenia", - "wL7VAE": "Akcje", "bdcMGy": "Otwórz menu", "6gHGy0": "Usuń z organizacji", "J2wna+": "Usunąć użytkownika z organizacji?", @@ -744,19 +942,16 @@ "u4673k": "Generuj klucze API, aby uzyskać dostęp do endpointów analitycznych z Twoich aplikacji", "1fe3VI": "Klucze API są dostępne w planach Standard i Pro.", "AkVL9j": "Nazwa klucza API", - "mRL9Vh": "Tworzenie...", "jDvHYJ": "Twoje klucze API", "MUaUWe": "Ładowanie kluczy API...", "iX4wwR": "Nie udało się załadować kluczy API", "62nsdy": "Ponów", - "EcglP9": "Klucz", "IY105q": "Nie utworzono jeszcze kluczy API", "wPtCEB": "Klucz API utworzony", "qcTCG8": "Zapisz ten klucz API w bezpiecznym miejscu. Nie będziesz mógł go ponownie zobaczyć.", "51jo4g": "Twój klucz API", "+fICx5": "Ważne", "TsKkxv": "Przechowuj ten klucz w bezpiecznym miejscu. Nie zostanie wyświetlony ponownie.", - "JXdbo8": "Gotowe", "LuNBqj": "Hasło powinno mieć co najmniej 8 znaków", "UjlqkD": "Silne hasło", "EK3962": "Dobre hasło", @@ -886,7 +1081,6 @@ "S5IFjk": "Utwórz zespół, aby grupować witryny i zarządzać dostępem członków.", "StUScz": "{count} członków", "RNCPOG": "Rejestracja", - "acrOoz": "Kontynuuj", "uCk8r+": "Masz już konto?", "odXlk8": "Zaloguj się", "uWRAQk": "Wybierz plan", @@ -996,7 +1190,6 @@ "W5IIP8": "Ulepsz do {planName}, aby odblokować {message}", "4Y+tpi": "Zobacz demo tej funkcji", "RL7HbL": "Poproś właściciela organizacji o ulepszenie do Pro, aby odblokować {message}", - "QashlR": "Wystąpił błąd podczas pobierania danych", "jsy7pk": "Spróbuj ponownie", "hyfdry": "Odsłona", "/kZg9i": "Kliknięcie przycisku", @@ -1196,7 +1389,6 @@ "jjBvFh": "Wykluczenia", "6cBDhe": "Integracje", "IP4n+n": "Osadzenia widgetu", - "rbrahO": "Zamknij", "scL+IP": "Widget włączony", "8pKlHk": "Włącz widget osadzenia", "mhmZ+P": "Odtwarzanie sesji", @@ -1243,7 +1435,6 @@ "u/vOPu": "Opłacona", "jHfCjd": "Unieważniona", "45hFQt": "Nieściągalna", - "W6nwjo": "Szkic", "6dqYnF": "Faktury", "P7PLVj": "Data", "/0TOL5": "Kwota", diff --git a/client/messages/pt.json b/client/messages/pt.json index 869046d96..d8cdb7751 100644 --- a/client/messages/pt.json +++ b/client/messages/pt.json @@ -61,6 +61,7 @@ "mByYl9": "Visualizações %", "IuFETn": "Duração", "0eoYsu": "Taxa de Rejeição", + "QashlR": "Ocorreu um erro ao buscar dados", "IxrHg4": "Filtrar {count} itens...", "tL4WC1": "Carregando mais...", "HPx76n": "Todos os itens carregados", @@ -74,6 +75,8 @@ "XHLYdJ": "Metas", "9d/EEp": "Análise de Produto", "5yUsUe": "Replay", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Funis", "08hqOd": "Jornadas", "nL6Jl0": "Retenção", @@ -242,6 +245,212 @@ "BReFYW": "Mudanças de entrada", "NDoUa9": "Todos os tipos de evento ocultos", "MJ2jZQ": "Total", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Meta #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Nome do evento", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Rascunho", + "LHF3Za": "", + "47FYwb": "Cancelar", + "rbrahO": "Fechar", + "cyR7Kh": "", + "TiR/Hq": "Salvando...", + "mRL9Vh": "Criando...", + "X0ha1a": "", + "JXdbo8": "Concluído", + "acrOoz": "Continuar", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Pausar", + "U78NhE": "", + "wL7VAE": "Ações", + "wEQDC6": "", + "K3r6DQ": "Excluir", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "Remover", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Status", + "Zh+5A6": "Ligado", + "OvzONl": "Desligado", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Criado", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Chave", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Todas as etapas devem ter valores", "jm52QG": "Por favor, insira um nome para o funil", "+N7isb": "Funil salvo com sucesso", @@ -273,7 +482,6 @@ "+U6ozc": "Tipo", "m1czzY": "Evento", "Y6DkLY": "Caminho (ex. /pricing)", - "eOj4Bs": "Nome do evento", "Hp/0iW": "Digite um caminho (ex., /checkout), não uma URL completa.", "Asi2Jg": "Ocultar opções avançadas", "lIEejV": "Mostrar opções avançadas", @@ -287,8 +495,6 @@ "tINfvW": "Use * para corresponder a um único segmento de caminho (ex., /blog/*) ou ** para corresponder a múltiplos segmentos (ex., /docs/**/intro)", "ox304v": "Ocorreu um erro", "KbGBQH": "Ocorreu um erro ao salvar", - "47FYwb": "Cancelar", - "TiR/Hq": "Salvando...", "/liMUf": "Funil excluído com sucesso", "753yX5": "Rótulo", "+SDMR3": "Propriedade", @@ -298,7 +504,6 @@ "SB3+JE": "Nenhum dado de funil disponível", "45gABM": "Tem certeza de que deseja excluir \"{name}\"? Esta ação não pode ser desfeita.", "noZdV2": "Excluindo...", - "K3r6DQ": "Excluir", "GoxzAN": "Filtrar funis", "qGN7M9": "Falha ao carregar funis", "5/6deG": "Houve um problema ao buscar os funis. Por favor, tente novamente mais tarde.", @@ -328,16 +533,15 @@ "h3ICzV": "Carregando sessões...", "KjXPXZ": "{count} sessões", "9iSdEj": "{count} sessão", - "tFFMkF": "Pausar", "J3ca41": "Reproduzir", "Ggedt8": "Mostrando apenas as primeiras {count} sessões. Mais dados podem estar disponíveis.", "5WuADX": "Adicionar Meta", + "WuHoZ9": "Conversões", + "e/U0Xt": "Taxa de Conversão", "+Ior19": "Meta de Página", "rTE34i": "Meta de Evento", - "FYBPJU": "Meta #{goalId}", "pW4lxD": "Padrão", - "WuHoZ9": "Conversões", - "e/U0Xt": "Taxa de Conversão", + "99Lkvz": "", "sOXElg": "Editar Meta", "N/ctXb": "Clonar Meta", "F3XA9+": "Excluir Meta", @@ -395,10 +599,10 @@ "zuqMfZ": "Mapa", "jUSc45": "Fusos Horários", "NdE4Ps": "Navegadores", + "/VnDMl": "Outro", "+20FW7": "Dispositivos", "aTW7It": "Sistemas Operacionais", "3X4r56": "Dimensões da Tela", - "/VnDMl": "Outro", "Aujn2T": "Contagem", "ogKEiU": "Links Externos", "VLKK35": "Cliques", @@ -407,13 +611,14 @@ "pEc/5k": "Clique %", "wU7PzI": "Último Clique", "4KEfRY": "Títulos", - "87ZCAe": "Entradas", - "0ogV14": "Saídas", - "P6RGqE": "Nomes de host", "gvOzOl": "Título da Página", + "87ZCAe": "Entradas", "vFf5xV": "Páginas de Entrada", + "0ogV14": "Saídas", "KtC97P": "Páginas de Saída", + "P6RGqE": "Nomes de host", "iF/x8v": "Referenciadores", + "UF6kPm": "Direto", "LUrJwE": "Canais", "aH4De2": "Fonte", "ovJ26C": "Meio", @@ -421,7 +626,6 @@ "qTy5se": "Termo", "Jq3FDz": "Conteúdo", "grtbAW": "UTM", - "UF6kPm": "Direto", "0E9k6Y": "Conecte sua conta do Google Search Console para visualizar dados de desempenho de busca, incluindo principais palavras-chave e páginas.", "jioGL4": "Conectar Google Search Console", "M/h5TN": "Impressões", @@ -550,7 +754,6 @@ "uiy9pN": "Eventos 30d", "9juexR": "Detalhes da Assinatura", "fz0z4c": "Plano", - "tzMNF3": "Status", "T8qVXf": "Limite de Eventos", "ekXood": "Ilimitado", "5x9Sl1": "Fim do Período", @@ -563,7 +766,6 @@ "bGIAle": "Membros ({count})", "hQZhn8": "Personificar", "2ZpsMl": "Sem membros", - "G/yZLu": "Remover", "nJuUfX": "Pesquisar por nome, slug, domínio ou email do membro...", "RllRQH": "Mostrar orgs com 0 eventos (30d)", "7OL11E": "Apenas acima do limite", @@ -578,7 +780,6 @@ "uL0dMG": "Uso do Serviço - Últimos {timePeriod}", "SVwJTM": "Exportar", "K56Dim": "Organização", - "ORGv1Q": "Criado", "JKxOsh": "Eventos Mensais", "R/6nsx": "Assinatura", "DDhP4z": "Sites", @@ -596,8 +797,6 @@ "viXE32": "Privado", "6hdNA5": "Eventos (24h)", "J4r/Gi": "Eventos (30d)", - "Zh+5A6": "Ligado", - "OvzONl": "Desligado", "C2EM7h": "Email do Proprietário", "sEqhTf": "Falha ao carregar dados de sites. Por favor, tente novamente mais tarde.", "r9Y1x6": "Pesquisar por domínio ou email do proprietário...", @@ -626,7 +825,6 @@ "uA0DvF": "Falha ao remover usuário da organização", "PW+sL4": "N/D", "wittYy": "Criado Em", - "wL7VAE": "Ações", "bdcMGy": "Abrir menu", "6gHGy0": "Remover da Organização", "J2wna+": "Remover usuário da organização?", @@ -744,19 +942,16 @@ "u4673k": "Gere chaves de API para acessar endpoints de análise das suas aplicações", "1fe3VI": "As chaves de API estão disponíveis nos planos Standard e Pro.", "AkVL9j": "Nome da Chave de API", - "mRL9Vh": "Criando...", "jDvHYJ": "Suas Chaves de API", "MUaUWe": "Carregando chaves de API...", "iX4wwR": "Falha ao carregar chaves de API", "62nsdy": "Tentar Novamente", - "EcglP9": "Chave", "IY105q": "Nenhuma chave de API criada ainda", "wPtCEB": "Chave de API Criada", "qcTCG8": "Salve esta chave de API com segurança. Você não poderá vê-la novamente.", "51jo4g": "Sua Chave de API", "+fICx5": "Importante", "TsKkxv": "Armazene esta chave com segurança. Ela não será exibida novamente.", - "JXdbo8": "Concluído", "LuNBqj": "A senha deve ter pelo menos 8 caracteres", "UjlqkD": "Senha forte", "EK3962": "Boa senha", @@ -886,7 +1081,6 @@ "S5IFjk": "Crie um time para agrupar sites e gerenciar o acesso dos membros.", "StUScz": "{count} membros", "RNCPOG": "Cadastro", - "acrOoz": "Continuar", "uCk8r+": "Já tem uma conta?", "odXlk8": "Entrar", "uWRAQk": "Escolha seu plano", @@ -996,7 +1190,6 @@ "W5IIP8": "Atualize para {planName} para desbloquear {message}", "4Y+tpi": "Veja uma demo desta funcionalidade", "RL7HbL": "Peça ao proprietário da sua organização para atualizar para Pro para desbloquear {message}", - "QashlR": "Ocorreu um erro ao buscar dados", "jsy7pk": "Tentar Novamente", "hyfdry": "Visualização de página", "/kZg9i": "Clique no botão", @@ -1196,7 +1389,6 @@ "jjBvFh": "Exclusões", "6cBDhe": "Integrações", "IP4n+n": "Incorporações de Widget", - "rbrahO": "Fechar", "scL+IP": "Widget Ativado", "8pKlHk": "Ativar Widget de Incorporação", "mhmZ+P": "Replay de Sessão", @@ -1243,7 +1435,6 @@ "u/vOPu": "Pago", "jHfCjd": "Anulada", "45hFQt": "Incobrável", - "W6nwjo": "Rascunho", "6dqYnF": "Faturas", "P7PLVj": "Data", "/0TOL5": "Valor", diff --git a/client/messages/uk.json b/client/messages/uk.json index a301bf61f..12e2ffc3f 100644 --- a/client/messages/uk.json +++ b/client/messages/uk.json @@ -61,6 +61,7 @@ "mByYl9": "% переглядів сторінок", "IuFETn": "Тривалість", "0eoYsu": "Показник відмов", + "QashlR": "Під час отримання даних сталася помилка", "IxrHg4": "Фільтрувати {count} елементів...", "tL4WC1": "Завантаження...", "HPx76n": "Всі елементи завантажено", @@ -74,6 +75,8 @@ "XHLYdJ": "Цілі", "9d/EEp": "Продуктова аналітика", "5yUsUe": "Відтворення", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "Воронки", "08hqOd": "Шляхи", "nL6Jl0": "Утримання", @@ -242,6 +245,212 @@ "BReFYW": "Зміни полів вводу", "NDoUa9": "Усі типи подій приховано", "MJ2jZQ": "Усього", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "Ціль #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "Назва події", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "Чернетка", + "LHF3Za": "", + "47FYwb": "Скасувати", + "rbrahO": "Закрити", + "cyR7Kh": "", + "TiR/Hq": "Збереження...", + "mRL9Vh": "Створення...", + "X0ha1a": "", + "JXdbo8": "Готово", + "acrOoz": "Продовжити", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "Пауза", + "U78NhE": "", + "wL7VAE": "Дії", + "wEQDC6": "", + "K3r6DQ": "Видалити", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "Статус", + "Zh+5A6": "Увімк.", + "OvzONl": "Вимк.", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "Створено", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "Ключ", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "Усі кроки повинні мати значення", "jm52QG": "Будь ласка, введіть назву воронки", "+N7isb": "Воронку успішно збережено", @@ -273,7 +482,6 @@ "+U6ozc": "Тип", "m1czzY": "Подія", "Y6DkLY": "Шлях (наприклад, /pricing)", - "eOj4Bs": "Назва події", "Hp/0iW": "Введіть шлях (наприклад, /checkout), а не повну URL-адресу.", "Asi2Jg": "Приховати розширені опції", "lIEejV": "Показати розширені опції", @@ -287,8 +495,6 @@ "tINfvW": "Використовуйте * для збігу з одним сегментом шляху (напр., /blog/*) або ** для збігу з кількома сегментами (напр., /docs/**/intro)", "ox304v": "Сталася помилка", "KbGBQH": "Сталася помилка під час збереження", - "47FYwb": "Скасувати", - "TiR/Hq": "Збереження...", "/liMUf": "Воронку успішно видалено", "753yX5": "Мітка", "+SDMR3": "Властивість", @@ -298,7 +504,6 @@ "SB3+JE": "Дані воронки недоступні", "45gABM": "Ви впевнені, що хочете видалити \"{name}\"? Цю дію неможливо скасувати.", "noZdV2": "Видалення...", - "K3r6DQ": "Видалити", "GoxzAN": "Фільтрувати воронки", "qGN7M9": "Не вдалося завантажити воронки", "5/6deG": "Виникла проблема під час отримання воронок. Будь ласка, спробуйте пізніше.", @@ -328,16 +533,15 @@ "h3ICzV": "Завантаження сеансів...", "KjXPXZ": "{count} сеансів", "9iSdEj": "{count} сеанс", - "tFFMkF": "Пауза", "J3ca41": "Відтворити", "Ggedt8": "Показано лише перші {count} сеансів. Можуть бути доступні додаткові дані.", "5WuADX": "Додати ціль", + "WuHoZ9": "Конверсії", + "e/U0Xt": "Коефіцієнт конверсії", "+Ior19": "Цільова сторінка", "rTE34i": "Цільова подія", - "FYBPJU": "Ціль #{goalId}", "pW4lxD": "Шаблон", - "WuHoZ9": "Конверсії", - "e/U0Xt": "Коефіцієнт конверсії", + "99Lkvz": "", "sOXElg": "Редагувати ціль", "N/ctXb": "Клонувати ціль", "F3XA9+": "Видалити ціль", @@ -395,10 +599,10 @@ "zuqMfZ": "Карта", "jUSc45": "Часові пояси", "NdE4Ps": "Браузери", + "/VnDMl": "Інше", "+20FW7": "Пристрої", "aTW7It": "Операційні системи", "3X4r56": "Роздільна здатність екрана", - "/VnDMl": "Інше", "Aujn2T": "Кількість", "ogKEiU": "Вихідні посилання", "VLKK35": "Кліки", @@ -407,13 +611,14 @@ "pEc/5k": "% кліків", "wU7PzI": "Останній клік", "4KEfRY": "Заголовки", - "87ZCAe": "Входи", - "0ogV14": "Виходи", - "P6RGqE": "Імена хостів", "gvOzOl": "Заголовок сторінки", + "87ZCAe": "Входи", "vFf5xV": "Сторінки входу", + "0ogV14": "Виходи", "KtC97P": "Сторінки виходу", + "P6RGqE": "Імена хостів", "iF/x8v": "Джерела переходу", + "UF6kPm": "Прямий (Direct)", "LUrJwE": "Канали", "aH4De2": "Джерело", "ovJ26C": "Канал (Medium)", @@ -421,7 +626,6 @@ "qTy5se": "Термін", "Jq3FDz": "Контент", "grtbAW": "UTM", - "UF6kPm": "Прямий (Direct)", "0E9k6Y": "Підключіть акаунт Google Search Console, щоб переглядати дані про ефективність пошуку, включно з топовими ключовими словами та сторінками.", "jioGL4": "Підключити Google Search Console", "M/h5TN": "Покази", @@ -550,7 +754,6 @@ "uiy9pN": "Події (30 днів)", "9juexR": "Деталі підписки", "fz0z4c": "План", - "tzMNF3": "Статус", "T8qVXf": "Ліміт подій", "ekXood": "Безліміт", "5x9Sl1": "Кінець періоду", @@ -563,7 +766,6 @@ "bGIAle": "Учасники ({count})", "hQZhn8": "Імперсонація", "2ZpsMl": "Немає учасників", - "G/yZLu": "", "nJuUfX": "Пошук за назвою, slug, доменом або email учасника...", "RllRQH": "Показати організації з 0 подій (30 днів)", "7OL11E": "Лише ті, що перевищили ліміт", @@ -578,7 +780,6 @@ "uL0dMG": "Використання всього сервісу - Останні {timePeriod}", "SVwJTM": "Експорт", "K56Dim": "Організація", - "ORGv1Q": "Створено", "JKxOsh": "Щомісячні події", "R/6nsx": "Підписка", "DDhP4z": "Сайти", @@ -596,8 +797,6 @@ "viXE32": "Приватний", "6hdNA5": "Події (24 год)", "J4r/Gi": "Події (30 днів)", - "Zh+5A6": "Увімк.", - "OvzONl": "Вимк.", "C2EM7h": "Email власника", "sEqhTf": "Не вдалося завантажити дані сайтів. Будь ласка, спробуйте пізніше.", "r9Y1x6": "Шукати за доменом або email власника...", @@ -626,7 +825,6 @@ "uA0DvF": "Не вдалося видалити користувача з організації", "PW+sL4": "Н/Д", "wittYy": "Створено", - "wL7VAE": "Дії", "bdcMGy": "Відкрити меню", "6gHGy0": "Видалити з організації", "J2wna+": "Видалити користувача з організації?", @@ -744,19 +942,16 @@ "u4673k": "Створюйте API-ключі для доступу до ендпоінтів аналітики з ваших застосунків", "1fe3VI": "Ключі API доступні в планах Standard та Pro.", "AkVL9j": "Назва API-ключа", - "mRL9Vh": "Створення...", "jDvHYJ": "Ваші API-ключі", "MUaUWe": "Завантаження API-ключів...", "iX4wwR": "Не вдалося завантажити API-ключі", "62nsdy": "Повторити спробу", - "EcglP9": "Ключ", "IY105q": "Ще не створено жодного API-ключа", "wPtCEB": "API-ключ створено", "qcTCG8": "Збережіть цей API-ключ у надійному місці. Ви більше не зможете його побачити.", "51jo4g": "Ваш API-ключ", "+fICx5": "Важливо", "TsKkxv": "Зберігайте цей ключ у безпечному місці. Він більше не відображатиметься.", - "JXdbo8": "Готово", "LuNBqj": "Пароль має містити щонайменше 8 символів", "UjlqkD": "Надійний пароль", "EK3962": "Хороший пароль", @@ -886,7 +1081,6 @@ "S5IFjk": "Створіть команду, щоб групувати сайти та керувати доступом.", "StUScz": "{count} учасників", "RNCPOG": "Реєстрація", - "acrOoz": "Продовжити", "uCk8r+": "Вже є акаунт?", "odXlk8": "Увійти", "uWRAQk": "Виберіть ваш тарифний план", @@ -996,7 +1190,6 @@ "W5IIP8": "Перейдіть на {planName}, щоб розблокувати {message}", "4Y+tpi": "Подивитися демо цієї функції", "RL7HbL": "Попросіть власника організації перейти на план Pro, щоб розблокувати {message}", - "QashlR": "Під час отримання даних сталася помилка", "jsy7pk": "Спробувати ще раз", "hyfdry": "Перегляд сторінки", "/kZg9i": "Клік по кнопці", @@ -1196,7 +1389,6 @@ "jjBvFh": "", "6cBDhe": "", "IP4n+n": "", - "rbrahO": "Закрити", "scL+IP": "", "8pKlHk": "", "mhmZ+P": "Відтворення сеансів", @@ -1243,7 +1435,6 @@ "u/vOPu": "Оплачено", "jHfCjd": "Анульовано", "45hFQt": "Безнадійний", - "W6nwjo": "Чернетка", "6dqYnF": "Рахунки", "P7PLVj": "Дата", "/0TOL5": "Сума", diff --git a/client/messages/zh.json b/client/messages/zh.json index b39cc4ce8..9d6c58526 100644 --- a/client/messages/zh.json +++ b/client/messages/zh.json @@ -61,6 +61,7 @@ "mByYl9": "页面浏览量 %", "IuFETn": "时长", "0eoYsu": "跳出率", + "QashlR": "获取数据时出错", "IxrHg4": "过滤 {count} 个项目...", "tL4WC1": "正在加载更多...", "HPx76n": "所有项目已加载", @@ -74,6 +75,8 @@ "XHLYdJ": "目标", "9d/EEp": "产品分析", "5yUsUe": "会话回放", + "mZDrWI": "", + "5qmtY1": "", "puhcpn": "漏斗", "08hqOd": "旅程", "nL6Jl0": "留存", @@ -242,6 +245,212 @@ "BReFYW": "输入变更", "NDoUa9": "所有事件类型已隐藏", "MJ2jZQ": "总计", + "jZu+25": "", + "l31E69": "", + "E/9k/a": "", + "yl0JSO": "", + "gyIvpP": "", + "z2PIbo": "", + "zZE+e+": "", + "c6cv5o": "", + "U3UQfB": "", + "f5efCD": "", + "SDTG4X": "", + "z0076i": "", + "iKhvJV": "", + "XocxqF": "", + "dv+Q6J": "", + "rYzinM": "", + "qkaC6i": "", + "Gvxoji": "", + "C4BsF8": "", + "CZmGBZ": "", + "9VDOG/": "", + "k/CG+N": "", + "dSrAoR": "", + "/ZZy+J": "", + "PqvkpE": "", + "VUiN28": "", + "VYRbh1": "", + "DSOKGF": "", + "ERZKPw": "", + "4gDkIw": "", + "5CbP3g": "", + "ANmBWb": "", + "iBImEo": "", + "JfUnvy": "", + "Q8Qw5B": "", + "Yx6aRS": "", + "F4tWun": "", + "rv+WdZ": "", + "8mBWZJ": "", + "2Rli0c": "", + "2S4QtW": "", + "6bhRx4": "", + "3kwz2Z": "", + "O6zCyZ": "", + "LICoyV": "", + "NFTkNB": "", + "h5P++h": "", + "1HsqR2": "", + "JWzoaP": "", + "dOQCL8": "", + "MYsZNO": "", + "5U2wOH": "", + "nDvQwt": "", + "dCxCGt": "", + "I5k4g/": "", + "8O/fqy": "", + "WYzHAI": "", + "gpx4DX": "", + "wIRNFx": "", + "UHg01d": "", + "FYBPJU": "目标 #{goalId}", + "93jr/b": "", + "WCs0QZ": "", + "VUomb6": "", + "9E7Zda": "", + "99HM2b": "", + "S4zxrU": "", + "XQSLMK": "", + "eOj4Bs": "事件名称", + "sXo0km": "", + "qWzbG9": "", + "pH6sDe": "", + "TUwf1V": "", + "vmlGzW": "", + "Dmxerh": "", + "wzKC2G": "", + "itC9lG": "", + "XPX/Qj": "", + "0VV/sK": "", + "dLj+dT": "", + "Lu6+QS": "", + "qdOqu/": "", + "tGuKrF": "", + "W6nwjo": "草稿", + "LHF3Za": "", + "47FYwb": "取消", + "rbrahO": "关闭", + "cyR7Kh": "", + "TiR/Hq": "正在保存...", + "mRL9Vh": "正在创建...", + "X0ha1a": "", + "JXdbo8": "完成", + "acrOoz": "继续", + "H+vBOj": "", + "1SjAqf": "", + "NZ9+vv": "", + "UAVBcs": "", + "QFTqtX": "", + "ytceSa": "", + "vGMvPS": "", + "XQ/KBk": "", + "jt9BUv": "", + "nW9O3w": "", + "cT4fRl": "", + "EHoeo0": "", + "ttyUm0": "", + "l94vPo": "", + "qQTwNl": "", + "IuPATc": "", + "W1QsrY": "", + "UBQJK/": "", + "4IJvOg": "", + "iHip8n": "", + "kNp7lL": "", + "VK7C0v": "", + "G2HskF": "", + "l6cRsG": "", + "6MkXA0": "", + "mOFG3K": "", + "tFFMkF": "暂停", + "U78NhE": "", + "wL7VAE": "操作", + "wEQDC6": "", + "K3r6DQ": "删除", + "poMLbD": "", + "qzqYO3": "", + "4YGHzj": "", + "l2og1o": "", + "wLuWPJ": "", + "39mVGa": "", + "sL8dAy": "", + "U5hCuK": "", + "wmdo1a": "", + "fg8dzN": "", + "Rp+Vr1": "", + "lKv8ex": "", + "wmFdws": "", + "H/r5m6": "", + "G/yZLu": "删除", + "7/7DdD": "", + "Cn4/rZ": "", + "Vwukkb": "", + "d1OgED": "", + "rdE5Ca": "", + "CoSEZb": "", + "obVxeM": "", + "GeY2EU": "", + "9ctGsY": "", + "Ctj1re": "", + "TFVlrR": "", + "TI5GPL": "", + "5kpx3b": "", + "I4Etgx": "", + "n5XyC0": "", + "+9SBpl": "", + "rHJwM0": "", + "jTMl6R": "", + "2Nj3gm": "", + "bAv8xK": "", + "Dn82AL": "", + "C2iTEH": "", + "gnvAJX": "", + "IX0C9y": "", + "4QGk64": "", + "wbsq7O": "", + "WuGkfJ": "", + "E/O9LL": "", + "V52jNn": "", + "66kGA0": "", + "vPG+A7": "", + "+R0VMp": "", + "q2ZLFN": "", + "rxCN7M": "", + "bSCV9J": "", + "tzMNF3": "状态", + "Zh+5A6": "开启", + "OvzONl": "关闭", + "kAAlGL": "", + "ZDpTud": "", + "ORGv1Q": "已创建", + "xrk6zg": "", + "9qBH5R": "", + "10IQpb": "", + "gzM1em": "", + "V+QgiY": "", + "3mvL2Q": "", + "AbvQFb": "", + "EcglP9": "密钥", + "gzX6Vt": "", + "7CyD7e": "", + "LzfPAG": "", + "HcAcrp": "", + "J4E+jp": "", + "DIZgr3": "", + "lu/vDB": "", + "9uKBh7": "", + "JX0502": "", + "F/6VqP": "", + "oA0ogD": "", + "4ZtLoe": "", + "rWPtv+": "", + "VJWJyq": "", + "3tP/PN": "", + "jhVKvF": "", + "SBUMrd": "", + "wsKkfk": "", "z6IYcX": "所有步骤都必须有值", "jm52QG": "请输入漏斗名称", "+N7isb": "漏斗保存成功", @@ -273,7 +482,6 @@ "+U6ozc": "类型", "m1czzY": "事件", "Y6DkLY": "路径(例如 /pricing)", - "eOj4Bs": "事件名称", "Hp/0iW": "输入一个路径(例如 /checkout),而不是完整的 URL。", "Asi2Jg": "隐藏高级选项", "lIEejV": "显示高级选项", @@ -287,8 +495,6 @@ "tINfvW": "使用 * 匹配单个路径段(例如 /blog/*)或使用 ** 匹配多个段(例如 /docs/**/intro)", "ox304v": "发生错误", "KbGBQH": "保存时发生错误", - "47FYwb": "取消", - "TiR/Hq": "正在保存...", "/liMUf": "漏斗删除成功", "753yX5": "标签", "+SDMR3": "属性", @@ -298,7 +504,6 @@ "SB3+JE": "没有可用的漏斗数据", "45gABM": "您确定要删除“{name}”吗?此操作无法撤销。", "noZdV2": "正在删除...", - "K3r6DQ": "删除", "GoxzAN": "过滤漏斗", "qGN7M9": "加载漏斗失败", "5/6deG": "获取漏斗时出现问题。请稍后重试。", @@ -328,16 +533,15 @@ "h3ICzV": "正在加载会话...", "KjXPXZ": "{count} 个会话", "9iSdEj": "{count} 个会话", - "tFFMkF": "暂停", "J3ca41": "播放", "Ggedt8": "仅显示前 {count} 个会话。可能有更多数据可用。", "5WuADX": "添加目标", + "WuHoZ9": "转化次数", + "e/U0Xt": "转化率", "+Ior19": "页面目标", "rTE34i": "事件目标", - "FYBPJU": "目标 #{goalId}", "pW4lxD": "模式", - "WuHoZ9": "转化次数", - "e/U0Xt": "转化率", + "99Lkvz": "", "sOXElg": "编辑目标", "N/ctXb": "克隆目标", "F3XA9+": "删除目标", @@ -395,10 +599,10 @@ "zuqMfZ": "地图", "jUSc45": "时区", "NdE4Ps": "浏览器", + "/VnDMl": "其他", "+20FW7": "设备", "aTW7It": "操作系统", "3X4r56": "屏幕尺寸", - "/VnDMl": "其他", "Aujn2T": "计数", "ogKEiU": "出站链接", "VLKK35": "点击次数", @@ -407,13 +611,14 @@ "pEc/5k": "点击 %", "wU7PzI": "最后点击时间", "4KEfRY": "标题", - "87ZCAe": "入口", - "0ogV14": "出口", - "P6RGqE": "主机名", "gvOzOl": "页面标题", + "87ZCAe": "入口", "vFf5xV": "入口页面", + "0ogV14": "出口", "KtC97P": "退出页面", + "P6RGqE": "主机名", "iF/x8v": "来源网站", + "UF6kPm": "直接访问", "LUrJwE": "渠道", "aH4De2": "来源", "ovJ26C": "媒介", @@ -421,7 +626,6 @@ "qTy5se": "关键词", "Jq3FDz": "内容", "grtbAW": "UTM", - "UF6kPm": "直接访问", "0E9k6Y": "连接您的 Google Search Console 账户以查看搜索性能数据,包括热门关键词和页面。", "jioGL4": "连接 Google Search Console", "M/h5TN": "展示次数", @@ -550,7 +754,6 @@ "uiy9pN": "30天事件", "9juexR": "订阅详情", "fz0z4c": "计划", - "tzMNF3": "状态", "T8qVXf": "事件限制", "ekXood": "无限制", "5x9Sl1": "计费周期结束", @@ -563,7 +766,6 @@ "bGIAle": "成员 ({count})", "hQZhn8": "模拟身份", "2ZpsMl": "无成员", - "G/yZLu": "删除", "nJuUfX": "按名称、标识符、域名或成员邮箱搜索...", "RllRQH": "显示 0 个事件的组织 (30天)", "7OL11E": "仅超额", @@ -578,7 +780,6 @@ "uL0dMG": "全服务使用情况 - 过去 {timePeriod}", "SVwJTM": "导出", "K56Dim": "组织", - "ORGv1Q": "已创建", "JKxOsh": "每月事件", "R/6nsx": "订阅", "DDhP4z": "网站", @@ -596,8 +797,6 @@ "viXE32": "私有", "6hdNA5": "事件 (24小时)", "J4r/Gi": "事件 (30天)", - "Zh+5A6": "开启", - "OvzONl": "关闭", "C2EM7h": "所有者电子邮件", "sEqhTf": "加载网站数据失败。请稍后重试。", "r9Y1x6": "按域名或所有者电子邮件搜索...", @@ -626,7 +825,6 @@ "uA0DvF": "从组织中移除用户失败", "PW+sL4": "不适用", "wittYy": "创建时间", - "wL7VAE": "操作", "bdcMGy": "打开菜单", "6gHGy0": "从组织中移除", "J2wna+": "从组织中移除用户?", @@ -744,19 +942,16 @@ "u4673k": "生成 API 密钥以便从您的应用程序访问分析端点", "1fe3VI": "API 密钥在标准版和专业版计划中可用。", "AkVL9j": "API 密钥名称", - "mRL9Vh": "正在创建...", "jDvHYJ": "您的 API 密钥", "MUaUWe": "正在加载 API 密钥...", "iX4wwR": "加载 API 密钥失败", "62nsdy": "重试", - "EcglP9": "密钥", "IY105q": "尚未创建任何 API 密钥", "wPtCEB": "API 密钥已创建", "qcTCG8": "请安全保存此 API 密钥。您将无法再次查看它。", "51jo4g": "您的 API 密钥", "+fICx5": "重要", "TsKkxv": "请安全地存储此密钥。它将不会再次显示。", - "JXdbo8": "完成", "LuNBqj": "密码至少应为 8 个字符", "UjlqkD": "强密码", "EK3962": "好密码", @@ -886,7 +1081,6 @@ "S5IFjk": "创建团队以对站点进行分组并管理成员访问权限。", "StUScz": "{count} 名成员", "RNCPOG": "注册", - "acrOoz": "继续", "uCk8r+": "已经有账户了?", "odXlk8": "登录", "uWRAQk": "选择您的计划", @@ -996,7 +1190,6 @@ "W5IIP8": "升级到 {planName} 即可解锁 {message}", "4Y+tpi": "查看此功能的演示", "RL7HbL": "请求您的组织所有者升级到 Pro 即可解锁 {message}", - "QashlR": "获取数据时出错", "jsy7pk": "再试一次", "hyfdry": "页面浏览", "/kZg9i": "按钮点击", @@ -1196,7 +1389,6 @@ "jjBvFh": "排除项", "6cBDhe": "集成", "IP4n+n": "小部件嵌入", - "rbrahO": "关闭", "scL+IP": "小部件已启用", "8pKlHk": "启用嵌入小部件", "mhmZ+P": "会话回放", @@ -1243,7 +1435,6 @@ "u/vOPu": "已付款", "jHfCjd": "已作废", "45hFQt": "无法收回", - "W6nwjo": "草稿", "6dqYnF": "发票", "P7PLVj": "日期", "/0TOL5": "金额", diff --git a/client/package-lock.json b/client/package-lock.json index f0399fd44..38130b5d1 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -14,6 +14,7 @@ "@hookform/resolvers": "5.0.1", "@icons-pack/react-simple-icons": "^13.6.0", "@marsidev/react-turnstile": "^1.3.1", + "@monaco-editor/react": "^4.7.0", "@nivo/bar": "0.96.0", "@nivo/calendar": "0.96.0", "@nivo/line": "0.96.0", @@ -1376,6 +1377,29 @@ "react-dom": "^17.0.2 || ^18.0.0 || ^19.0" } }, + "node_modules/@monaco-editor/loader": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.7.0.tgz", + "integrity": "sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", + "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.5.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.0.tgz", @@ -12283,6 +12307,12 @@ "dev": true, "license": "MIT" }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", diff --git a/client/package.json b/client/package.json index f9f37df64..1d51b8519 100644 --- a/client/package.json +++ b/client/package.json @@ -19,6 +19,7 @@ "@hookform/resolvers": "5.0.1", "@icons-pack/react-simple-icons": "^13.6.0", "@marsidev/react-turnstile": "^1.3.1", + "@monaco-editor/react": "^4.7.0", "@nivo/bar": "0.96.0", "@nivo/calendar": "0.96.0", "@nivo/line": "0.96.0", diff --git a/client/src/api/analytics/endpoints/experiments.ts b/client/src/api/analytics/endpoints/experiments.ts new file mode 100644 index 000000000..3557d3679 --- /dev/null +++ b/client/src/api/analytics/endpoints/experiments.ts @@ -0,0 +1,139 @@ +import { authedFetch } from "../../utils"; +import type { + FeatureFlagConditionSet, + FeatureFlagPayloadValue, + FeatureFlagRuntime, + FeatureFlagType, + FeatureFlagVariant, +} from "./featureFlags"; +import { CommonApiParams, toQueryParams } from "./types"; + +export type ExperimentStatus = "draft" | "running" | "paused" | "completed"; + +export type ExperimentFeatureFlag = { + flagId: number; + siteId: number; + key: string; + description: string | null; + enabled: boolean; + runtime: FeatureFlagRuntime; + flagType: FeatureFlagType; + payload?: FeatureFlagPayloadValue | null; + variants: FeatureFlagVariant[]; + rolloutPercentage: number; + conditionSets: FeatureFlagConditionSet[]; + version: number; + createdAt: string; + updatedAt: string; +}; + +export type ExperimentGoal = { + goalId: number; + siteId: number; + name: string | null; + goalType: "path" | "event"; + config: { + pathPattern?: string; + eventName?: string; + eventPropertyKey?: string; + eventPropertyValue?: string | number | boolean; + propertyFilters?: Array<{ + key: string; + value: string | number | boolean; + }>; + }; + createdAt: string; +}; + +export type Experiment = { + experimentId: number; + siteId: number; + featureFlagId: number; + primaryGoalId: number | null; + name: string; + description: string | null; + hypothesis: string | null; + status: ExperimentStatus; + winningVariant: string | null; + startedAt: string | null; + endedAt: string | null; + createdAt: string; + updatedAt: string; + featureFlag: ExperimentFeatureFlag; + primaryGoal: ExperimentGoal | null; +}; + +export type ExperimentPayload = { + name: string; + description?: string | null; + hypothesis?: string | null; + featureFlagId: number; + primaryGoalId?: number | null; + status: ExperimentStatus; + winningVariant?: string | null; +}; + +export type ExperimentUpdatePayload = Partial; + +export type ExperimentVariantResult = { + variant: string; + sessions: number; + exposures: number; + conversions: number; + conversionRate: number; + lift: number | null; + isControl: boolean; +}; + +export type ExperimentResults = { + experiment: Experiment; + variants: ExperimentVariantResult[]; + totalExposureSessions: number; + totalConversions: number; + hasGoal: boolean; + measurement: "exposure" | "assignment"; +}; + +export async function fetchExperiments(site: string | number): Promise { + const response = await authedFetch<{ data: Experiment[] }>(`/sites/${site}/experiments`); + return response.data; +} + +export async function createExperiment( + site: string | number, + payload: ExperimentPayload +): Promise<{ success: boolean; data: Experiment }> { + return authedFetch(`/sites/${site}/experiments`, undefined, { + method: "POST", + data: payload, + }); +} + +export async function updateExperiment( + site: string | number, + experimentId: number, + payload: ExperimentUpdatePayload +): Promise<{ success: boolean; data: Experiment }> { + return authedFetch(`/sites/${site}/experiments/${experimentId}`, undefined, { + method: "PUT", + data: payload, + }); +} + +export async function deleteExperiment(site: string | number, experimentId: number): Promise<{ success: boolean }> { + return authedFetch(`/sites/${site}/experiments/${experimentId}`, undefined, { + method: "DELETE", + }); +} + +export async function fetchExperimentResults( + site: string | number, + experimentId: number, + params: CommonApiParams +): Promise { + const response = await authedFetch<{ data: ExperimentResults }>( + `/sites/${site}/experiments/${experimentId}/results`, + toQueryParams(params) + ); + return response.data; +} diff --git a/client/src/api/analytics/endpoints/featureFlags.ts b/client/src/api/analytics/endpoints/featureFlags.ts new file mode 100644 index 000000000..fcf2fee65 --- /dev/null +++ b/client/src/api/analytics/endpoints/featureFlags.ts @@ -0,0 +1,118 @@ +import { authedFetch } from "../../utils"; + +export type FeatureFlagType = "boolean" | "multivariate" | "remote_config"; +export type FeatureFlagRuntime = "client" | "server" | "both"; +export type FeatureFlagPayloadValue = + | string + | number + | boolean + | null + | FeatureFlagPayloadValue[] + | { [key: string]: FeatureFlagPayloadValue }; + +export type FeatureFlagRule = { + field: + | "hostname" + | "pathname" + | "query" + | "referrer" + | "language" + | "country" + | "region" + | "city" + | "device_type" + | "user_id" + | "trait"; + key?: string; + operator: "equals" | "not_equals" | "contains" | "starts_with" | "ends_with" | "regex"; + value: string | number | boolean | Array; +}; + +export type FeatureFlagVariant = { + key: string; + name?: string; + rolloutPercentage: number; + payload?: FeatureFlagPayloadValue; +}; + +export type FeatureFlagConditionSet = { + name?: string; + rules: FeatureFlagRule[]; + rolloutPercentage?: number; + variants?: FeatureFlagVariant[]; + payload?: FeatureFlagPayloadValue | null; +}; + +export type FeatureFlagStats = { + flag_key: string; + flag_value: string; + sessions: number; + events: number; + exposures: number; +}; + +export type FeatureFlag = { + flagId: number; + siteId: number; + key: string; + description: string | null; + enabled: boolean; + runtime: FeatureFlagRuntime; + flagType: FeatureFlagType; + payload?: FeatureFlagPayloadValue | null; + variants: FeatureFlagVariant[]; + rolloutPercentage: number; + rules: FeatureFlagRule[]; + conditionSets: FeatureFlagConditionSet[]; + version: number; + createdAt: string; + updatedAt: string; + stats: FeatureFlagStats[]; +}; + +export type FeatureFlagPayload = { + key: string; + description?: string | null; + enabled: boolean; + runtime: FeatureFlagRuntime; + flagType: FeatureFlagType; + payload?: FeatureFlagPayloadValue | null; + variants: FeatureFlagVariant[]; + rolloutPercentage: number; + rules: FeatureFlagRule[]; + conditionSets: FeatureFlagConditionSet[]; +}; + +export type FeatureFlagUpdatePayload = Partial; + +export async function fetchFeatureFlags(site: string | number): Promise { + const response = await authedFetch<{ data: FeatureFlag[] }>(`/sites/${site}/feature-flags`); + return response.data; +} + +export async function createFeatureFlag( + site: string | number, + payload: FeatureFlagPayload +): Promise<{ success: boolean; data: FeatureFlag }> { + return authedFetch(`/sites/${site}/feature-flags`, undefined, { + method: "POST", + data: payload, + }); +} + +export async function updateFeatureFlag( + site: string | number, + flagId: number, + payload: FeatureFlagUpdatePayload +): Promise<{ success: boolean; data: FeatureFlag }> { + return authedFetch(`/sites/${site}/feature-flags/${flagId}`, undefined, { + method: "PUT", + data: payload, + }); +} + +export async function deleteFeatureFlag(site: string | number, flagId: number): Promise<{ success: boolean }> { + return authedFetch(`/sites/${site}/feature-flags/${flagId}`, undefined, { + method: "DELETE", + }); +} diff --git a/client/src/api/analytics/endpoints/index.ts b/client/src/api/analytics/endpoints/index.ts index f3965ceb5..7bf4b41cf 100644 --- a/client/src/api/analytics/endpoints/index.ts +++ b/client/src/api/analytics/endpoints/index.ts @@ -63,6 +63,40 @@ export type { UpdateGoalParams, } from "./goals"; +// Feature flag endpoints +export { fetchFeatureFlags, createFeatureFlag, updateFeatureFlag, deleteFeatureFlag } from "./featureFlags"; +export type { + FeatureFlag, + FeatureFlagConditionSet, + FeatureFlagPayload, + FeatureFlagPayloadValue, + FeatureFlagRule, + FeatureFlagRuntime, + FeatureFlagStats, + FeatureFlagType, + FeatureFlagUpdatePayload, + FeatureFlagVariant, +} from "./featureFlags"; + +// Experiment endpoints +export { + createExperiment, + deleteExperiment, + fetchExperimentResults, + fetchExperiments, + updateExperiment, +} from "./experiments"; +export type { + Experiment, + ExperimentFeatureFlag, + ExperimentGoal, + ExperimentPayload, + ExperimentResults, + ExperimentStatus, + ExperimentUpdatePayload, + ExperimentVariantResult, +} from "./experiments"; + // Funnels endpoints export { fetchFunnels, analyzeFunnel, fetchFunnelStepSessions, saveFunnel, deleteFunnel } from "./funnels"; export type { diff --git a/client/src/api/analytics/hooks/experiments/useExperiments.ts b/client/src/api/analytics/hooks/experiments/useExperiments.ts new file mode 100644 index 000000000..84175c16e --- /dev/null +++ b/client/src/api/analytics/hooks/experiments/useExperiments.ts @@ -0,0 +1,73 @@ +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { + createExperiment, + deleteExperiment, + ExperimentPayload, + ExperimentUpdatePayload, + fetchExperimentResults, + fetchExperiments, + updateExperiment, +} from "../../endpoints"; +import { buildApiParams } from "../../../utils"; +import { GOALS_PAGE_FILTERS } from "../../../../lib/filterGroups"; +import { getFilteredFilters, useStore } from "../../../../lib/store"; + +export function useExperiments() { + const { site } = useStore(); + + return useQuery({ + queryKey: ["experiments", site], + queryFn: () => fetchExperiments(site), + enabled: !!site, + }); +} + +export function useExperimentResults(experimentId: number, enabled = true) { + const { site, time, timezone } = useStore(); + const filteredFilters = getFilteredFilters(GOALS_PAGE_FILTERS); + const params = buildApiParams(time, { filters: filteredFilters }); + + return useQuery({ + queryKey: ["experiment-results", site, experimentId, time, filteredFilters, timezone], + queryFn: () => fetchExperimentResults(site, experimentId, params), + enabled: !!site && !!experimentId && enabled, + }); +} + +export function useCreateExperiment() { + const queryClient = useQueryClient(); + const { site } = useStore(); + + return useMutation({ + mutationFn: (payload: ExperimentPayload) => createExperiment(site, payload), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["experiments", site] }); + }, + }); +} + +export function useUpdateExperiment() { + const queryClient = useQueryClient(); + const { site } = useStore(); + + return useMutation({ + mutationFn: ({ experimentId, payload }: { experimentId: number; payload: ExperimentUpdatePayload }) => + updateExperiment(site, experimentId, payload), + onSuccess: (_data, variables) => { + queryClient.invalidateQueries({ queryKey: ["experiments", site] }); + queryClient.invalidateQueries({ queryKey: ["experiment-results", site, variables.experimentId] }); + }, + }); +} + +export function useDeleteExperiment() { + const queryClient = useQueryClient(); + const { site } = useStore(); + + return useMutation({ + mutationFn: (experimentId: number) => deleteExperiment(site, experimentId), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["experiments", site] }); + }, + }); +} diff --git a/client/src/api/analytics/hooks/featureFlags/useFeatureFlags.ts b/client/src/api/analytics/hooks/featureFlags/useFeatureFlags.ts new file mode 100644 index 000000000..ed5ac1481 --- /dev/null +++ b/client/src/api/analytics/hooks/featureFlags/useFeatureFlags.ts @@ -0,0 +1,57 @@ +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { + createFeatureFlag, + deleteFeatureFlag, + fetchFeatureFlags, + FeatureFlagPayload, + FeatureFlagUpdatePayload, + updateFeatureFlag, +} from "../../endpoints"; +import { useStore } from "../../../../lib/store"; + +export function useFeatureFlags() { + const { site } = useStore(); + + return useQuery({ + queryKey: ["feature-flags", site], + queryFn: () => fetchFeatureFlags(site), + enabled: !!site, + }); +} + +export function useCreateFeatureFlag() { + const queryClient = useQueryClient(); + const { site } = useStore(); + + return useMutation({ + mutationFn: (payload: FeatureFlagPayload) => createFeatureFlag(site, payload), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["feature-flags", site] }); + }, + }); +} + +export function useUpdateFeatureFlag() { + const queryClient = useQueryClient(); + const { site } = useStore(); + + return useMutation({ + mutationFn: ({ flagId, payload }: { flagId: number; payload: FeatureFlagUpdatePayload }) => + updateFeatureFlag(site, flagId, payload), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["feature-flags", site] }); + }, + }); +} + +export function useDeleteFeatureFlag() { + const queryClient = useQueryClient(); + const { site } = useStore(); + + return useMutation({ + mutationFn: (flagId: number) => deleteFeatureFlag(site, flagId), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["feature-flags", site] }); + }, + }); +} diff --git a/client/src/app/[site]/components/Sidebar/Sidebar.tsx b/client/src/app/[site]/components/Sidebar/Sidebar.tsx index 33657afb4..7a9ece4bf 100644 --- a/client/src/app/[site]/components/Sidebar/Sidebar.tsx +++ b/client/src/app/[site]/components/Sidebar/Sidebar.tsx @@ -5,6 +5,8 @@ import { ChartColumnDecreasing, Code, File, + Flag, + FlaskConical, Funnel, Gauge, Globe2, @@ -40,6 +42,8 @@ function SidebarContent() { if (hideSidebar) return null; + const { privateKey } = getSiteRouteContext(pathname); + // Check which tab is active based on the current path const getTabPath = (tabName: string) => { const { siteId, privateKey } = getSiteRouteContext(pathname); @@ -128,6 +132,22 @@ function SidebarContent() { /> )} + {!privateKey && ( + } + /> + )} + {!privateKey && ( + } + /> + )} ; + }>; + variants?: Array<{ + key: string; + name?: string; + rolloutPercentage: number; + }>; +}; + +type ImplementationState = { + mode: "created" | "updated"; + experiment: Experiment; + flagKey: string; + variants: string[]; + goalMode: GoalMode; + goalType?: GoalType; + goalLabel?: string; +}; + +type WizardForm = { + name: string; + description: string; + hypothesis: string; + assignmentMode: AssignmentMode; + existingFlagId: string; + flagKey: string; + flagDescription: string; + variants: VariantDraft[]; + goalMode: GoalMode; + existingGoalId: string; + goalName: string; + goalType: GoalType; + pathPattern: string; + eventName: string; +}; + +const STEPS: WizardStep[] = ["basics", "assignment", "goal", "implementation"]; + +const VARIANT_SEGMENT_COLORS = ["bg-accent-500", "bg-accent-400", "bg-accent-600", "bg-accent-300", "bg-accent-700"]; + +function createId() { + return typeof crypto !== "undefined" && "randomUUID" in crypto + ? crypto.randomUUID() + : `${Date.now()}-${Math.random().toString(36).slice(2)}`; +} + +function slugify(value: string) { + return value + .trim() + .toLowerCase() + .replace(/[^a-z0-9]+/g, "_") + .replace(/^_+|_+$/g, ""); +} + +function getVariantDraftsFromFlag(flag: VariantSourceFlag): VariantDraft[] { + const variants = [ + ...(flag.conditionSets || []).flatMap(conditionSet => conditionSet.variants || []), + ...(flag.variants || []), + ]; + + if (variants.length >= 2) { + return variants.map(variant => ({ + id: createId(), + key: variant.key, + name: variant.name || "", + rolloutPercentage: variant.rolloutPercentage, + })); + } + + return [ + { id: createId(), key: "control", name: "Control", rolloutPercentage: 50 }, + { id: createId(), key: "variant_a", name: "Variant A", rolloutPercentage: 50 }, + ]; +} + +function initialForm(experiment?: Experiment): WizardForm { + if (experiment) { + const primaryGoal = experiment.primaryGoal; + + return { + name: experiment.name, + description: experiment.description || "", + hypothesis: experiment.hypothesis || "", + assignmentMode: "existing", + existingFlagId: String(experiment.featureFlagId), + flagKey: experiment.featureFlag.key, + flagDescription: experiment.featureFlag.description || "", + variants: getVariantDraftsFromFlag(experiment.featureFlag), + goalMode: experiment.primaryGoalId ? "existing" : "none", + existingGoalId: experiment.primaryGoalId ? String(experiment.primaryGoalId) : "", + goalName: primaryGoal?.name || "", + goalType: primaryGoal?.goalType || "path", + pathPattern: primaryGoal?.config.pathPattern || "", + eventName: primaryGoal?.config.eventName || "", + }; + } + + return { + name: "", + description: "", + hypothesis: "", + assignmentMode: "new", + existingFlagId: "", + flagKey: "", + flagDescription: "", + variants: [ + { id: createId(), key: "control", name: "Control", rolloutPercentage: 50 }, + { id: createId(), key: "variant_a", name: "Variant A", rolloutPercentage: 50 }, + ], + goalMode: "new", + existingGoalId: "", + goalName: "", + goalType: "path", + pathPattern: "", + eventName: "", + }; +} + +function getVariantKeys(flag: VariantSourceFlag) { + return [ + ...new Set([ + ...(flag.conditionSets || []).flatMap(conditionSet => conditionSet.variants?.map(variant => variant.key) || []), + ...(flag.variants || []).map(variant => variant.key), + ]), + ]; +} + +function CodeTabs({ jsCode, tsCode }: { jsCode: string; tsCode: string }) { + const [language, setLanguage] = useState<"js" | "ts">("js"); + + return ( +
+
+ + +
+ +
+ ); +} + +function WizardChoice({ + selected, + icon, + title, + description, + onClick, +}: { + selected: boolean; + icon: ReactNode; + title: string; + description: string; + onClick: () => void; +}) { + return ( + + ); +} + +function WizardHelp({ step, isEditing }: { step: WizardStep; isEditing: boolean }) { + const t = useExtracted(); + + const content: Record = { + basics: { + title: t("Define the question"), + body: [ + t("Start with the behavior you want to change and the metric you expect to move."), + t("The hypothesis is internal context for your team. It does not change assignment or tracking."), + isEditing + ? t("Changing these notes does not change assignment or tracking.") + : t("New experiments are created as drafts so you can add the implementation before starting traffic."), + ], + }, + assignment: { + title: t("Create the assignment"), + body: [ + t("Experiments use multivariate feature flags to assign each visitor to one stable variant."), + t("Calling rybbit.flag records the exposure that powers experiment results."), + t("A full split should add up to 100 percent unless you intentionally want unassigned traffic."), + ], + }, + goal: { + title: t("Pick the outcome"), + body: [ + t("The primary goal is the conversion event or page visit used to compare variants."), + t("Path goals work when conversion is a URL, like /thank-you. Event goals work for explicit actions."), + t("You can skip this for now, but conversion results need a goal later."), + ], + }, + implementation: { + title: t("Implement and expose"), + body: [ + t("Use the generated flag key in your app and branch your UI or behavior by variant."), + t("Read the flag in code before rendering the tested experience."), + t("For event goals, fire the event when the conversion action happens."), + ], + }, + }; + + return ( + + ); +} + +export function CreateExperimentWizard({ + experiment, + experiments, + trigger, + open: openProp, + onOpenChange, +}: { + experiment?: Experiment; + experiments: Experiment[]; + trigger?: ReactNode; + open?: boolean; + onOpenChange?: (open: boolean) => void; +}) { + const t = useExtracted(); + const { site } = useStore(); + const { data: flags } = useFeatureFlags(); + const { data: goalsData } = useGetGoals({ pageSize: 100 }); + const { data: pathsData } = useMetric({ parameter: "pathname", limit: 1000, useFilters: false }); + const { data: eventsData } = useMetric({ parameter: "event_name", limit: 1000, useFilters: false }); + const createFeatureFlagMutation = useCreateFeatureFlag(); + const createGoalMutation = useCreateGoal(); + const createExperimentMutation = useCreateExperiment(); + const updateExperimentMutation = useUpdateExperiment(); + const [internalOpen, setInternalOpen] = useState(false); + const open = openProp ?? internalOpen; + const [step, setStep] = useState("basics"); + const [form, setForm] = useState(() => initialForm(experiment)); + const [savedImplementationState, setSavedImplementationState] = useState(null); + const [flagKeyTouched, setFlagKeyTouched] = useState(false); + const [goalNameTouched, setGoalNameTouched] = useState(false); + const isEditing = !!experiment; + + const usedFlagIds = useMemo( + () => + new Set( + experiments.filter(item => item.experimentId !== experiment?.experimentId).map(item => item.featureFlagId) + ), + [experiment?.experimentId, experiments] + ); + const availableFlags = useMemo( + () => (flags || []).filter(flag => flag.flagType === "multivariate" && !usedFlagIds.has(flag.flagId)), + [flags, usedFlagIds] + ); + const selectedFlag = + availableFlags.find(flag => String(flag.flagId) === form.existingFlagId) || + (experiment?.featureFlagId === Number(form.existingFlagId) ? experiment.featureFlag : undefined); + const goals = goalsData?.data || []; + const pathSuggestions: SuggestionOption[] = (pathsData?.data || []).map(item => ({ + value: item.value, + label: item.value, + })); + const eventSuggestions: SuggestionOption[] = (eventsData?.data || []).map(item => ({ + value: item.value, + label: item.value, + })); + const selectedGoal = + goals.find(goal => String(goal.goalId) === form.existingGoalId) || + (experiment?.primaryGoalId === Number(form.existingGoalId) ? experiment.primaryGoal : undefined); + const activeStepIndex = STEPS.indexOf(step); + const isSaving = + createFeatureFlagMutation.isPending || + createGoalMutation.isPending || + createExperimentMutation.isPending || + updateExperimentMutation.isPending; + + useEffect(() => { + if (!open) return; + setStep("basics"); + setForm(initialForm(experiment)); + setSavedImplementationState(null); + setFlagKeyTouched(!!experiment); + setGoalNameTouched(!!experiment); + }, [experiment?.experimentId, open]); + + useEffect(() => { + if (form.existingFlagId || availableFlags.length === 0) return; + setForm(current => ({ ...current, existingFlagId: String(availableFlags[0].flagId) })); + }, [availableFlags, form.existingFlagId]); + + useEffect(() => { + if (form.existingGoalId || goals.length === 0) return; + setForm(current => ({ ...current, existingGoalId: String(goals[0].goalId) })); + }, [goals, form.existingGoalId]); + + const setOpen = (next: boolean) => { + if (openProp === undefined) setInternalOpen(next); + onOpenChange?.(next); + }; + + const updateForm = (key: K, value: WizardForm[K]) => { + setForm(current => ({ ...current, [key]: value })); + }; + + const updateName = (name: string) => { + setForm(current => ({ + ...current, + name, + flagKey: flagKeyTouched ? current.flagKey : slugify(name), + goalName: goalNameTouched ? current.goalName : name ? `${name} conversion` : "", + })); + }; + + const updateVariant = (id: string, key: K, value: VariantDraft[K]) => { + setForm(current => ({ + ...current, + variants: current.variants.map(variant => (variant.id === id ? { ...variant, [key]: value } : variant)), + })); + }; + + const addVariant = () => { + setForm(current => ({ + ...current, + variants: [ + ...current.variants, + { + id: createId(), + key: `variant_${current.variants.length}`, + name: `Variant ${String.fromCharCode(64 + current.variants.length)}`, + rolloutPercentage: 0, + }, + ], + })); + }; + + const removeVariant = (id: string) => { + setForm(current => ({ ...current, variants: current.variants.filter(variant => variant.id !== id) })); + }; + + const validateStep = (stepToValidate: WizardStep) => { + if (stepToValidate === "basics") { + if (!form.name.trim()) return t("Name is required"); + } + + if (stepToValidate === "assignment") { + if (form.assignmentMode === "existing" && !form.existingFlagId) { + return t("Choose a multivariate feature flag"); + } + + if (form.assignmentMode === "new") { + const keys = form.variants.map(variant => variant.key.trim()).filter(Boolean); + const totalRollout = form.variants.reduce((sum, variant) => sum + Number(variant.rolloutPercentage || 0), 0); + + if (!form.flagKey.trim()) return t("Flag key is required"); + if (form.variants.length < 2) return t("Add at least two variants"); + if (keys.length !== form.variants.length) return t("Variant keys are required"); + if (new Set(keys).size !== keys.length) return t("Variant keys must be unique"); + if (totalRollout !== 100) return t("Variant traffic must add up to 100%"); + } + } + + if (stepToValidate === "goal") { + if (form.goalMode === "existing" && !form.existingGoalId) return t("Choose a goal"); + if (form.goalMode === "new" && form.goalType === "path" && !form.pathPattern.trim()) { + return t("Path pattern is required"); + } + if (form.goalMode === "new" && form.goalType === "event" && !form.eventName.trim()) { + return t("Event name is required"); + } + } + + return null; + }; + + const validateCurrentStep = () => validateStep(step); + + const validateExperimentConfiguration = () => { + for (const stepToValidate of ["basics", "assignment", "goal"] as const) { + const validationError = validateStep(stepToValidate); + if (validationError) return validationError; + } + + return null; + }; + + const goNext = () => { + const validationError = validateCurrentStep(); + if (validationError) { + toast.error(validationError); + return; + } + + const nextStep = STEPS[Math.min(activeStepIndex + 1, STEPS.length - 1)]; + setStep(nextStep); + }; + + const buildImplementationState = (mode: ImplementationState["mode"]): ImplementationState | null => { + const flagKey = + form.assignmentMode === "existing" ? selectedFlag?.key || experiment?.featureFlag.key : form.flagKey.trim(); + const variants = + form.assignmentMode === "existing" && selectedFlag + ? getVariantKeys(selectedFlag) + : form.variants.map(variant => variant.key.trim()).filter(Boolean); + const goalType = + form.goalMode === "existing" ? selectedGoal?.goalType : form.goalMode === "new" ? form.goalType : undefined; + const goalLabel = + form.goalMode === "existing" + ? selectedGoal?.goalType === "path" + ? selectedGoal.config.pathPattern + : selectedGoal?.config.eventName + : form.goalMode === "new" + ? form.goalType === "path" + ? form.pathPattern.trim() + : form.eventName.trim() + : undefined; + + if (!flagKey || !experiment) return null; + + return { + mode, + experiment, + flagKey, + variants, + goalMode: form.goalMode, + goalType, + goalLabel, + }; + }; + + const implementationState = savedImplementationState || (isEditing ? buildImplementationState("updated") : null); + + const submitExperiment = async () => { + const validationError = validateExperimentConfiguration(); + if (validationError) { + toast.error(validationError); + return; + } + + try { + let featureFlagId = Number(form.existingFlagId); + let flagKey = selectedFlag?.key || form.flagKey.trim(); + let variantKeys = selectedFlag ? getVariantKeys(selectedFlag) : form.variants.map(variant => variant.key.trim()); + + if (form.assignmentMode === "new") { + const variants: FeatureFlagVariant[] = form.variants.map(variant => ({ + key: variant.key.trim(), + name: variant.name.trim() || undefined, + rolloutPercentage: Number(variant.rolloutPercentage), + })); + + const createdFlag = await createFeatureFlagMutation.mutateAsync({ + key: form.flagKey.trim(), + description: form.flagDescription.trim() || `Assignment flag for ${form.name.trim()}`, + enabled: true, + runtime: "client", + flagType: "multivariate", + payload: null, + variants: [], + rolloutPercentage: 100, + rules: [], + conditionSets: [ + { + name: "Default", + rules: [], + variants, + }, + ], + }); + + featureFlagId = createdFlag.data.flagId; + flagKey = createdFlag.data.key; + variantKeys = getVariantKeys(createdFlag.data); + } + + let primaryGoalId: number | null = form.goalMode === "existing" ? Number(form.existingGoalId) : null; + let goalType: GoalType | undefined = selectedGoal?.goalType; + let goalLabel = + selectedGoal?.goalType === "path" + ? selectedGoal.config.pathPattern + : selectedGoal?.goalType === "event" + ? selectedGoal.config.eventName + : form.goalMode === "none" + ? undefined + : form.goalName.trim(); + + if (form.goalMode === "new") { + const createdGoal = await createGoalMutation.mutateAsync({ + siteId: Number(site), + name: form.goalName.trim() || `${form.name.trim()} conversion`, + goalType: form.goalType, + config: + form.goalType === "path" ? { pathPattern: form.pathPattern.trim() } : { eventName: form.eventName.trim() }, + }); + + primaryGoalId = createdGoal.goalId; + goalType = form.goalType; + goalLabel = form.goalType === "path" ? form.pathPattern.trim() : form.eventName.trim(); + } + + const createdExperiment = await createExperimentMutation.mutateAsync({ + name: form.name.trim(), + description: form.description.trim() || null, + hypothesis: form.hypothesis.trim() || null, + featureFlagId, + primaryGoalId, + status: "draft", + }); + + setSavedImplementationState({ + mode: "created", + experiment: createdExperiment.data, + flagKey, + variants: variantKeys, + goalMode: form.goalMode, + goalType, + goalLabel, + }); + setStep("implementation"); + toast.success(t("Experiment created")); + } catch (error) { + toast.error(error instanceof Error ? error.message : t("Failed to save experiment")); + } + }; + + const saveExperiment = async () => { + const validationError = validateExperimentConfiguration(); + if (validationError) { + toast.error(validationError); + return; + } + + if (!experiment) return; + + try { + let featureFlagId = Number(form.existingFlagId); + let flagKey = selectedFlag?.key || form.flagKey.trim(); + let variantKeys = selectedFlag ? getVariantKeys(selectedFlag) : form.variants.map(variant => variant.key.trim()); + + if (form.assignmentMode === "new") { + const variants: FeatureFlagVariant[] = form.variants.map(variant => ({ + key: variant.key.trim(), + name: variant.name.trim() || undefined, + rolloutPercentage: Number(variant.rolloutPercentage), + })); + + const createdFlag = await createFeatureFlagMutation.mutateAsync({ + key: form.flagKey.trim(), + description: form.flagDescription.trim() || `Assignment flag for ${form.name.trim()}`, + enabled: true, + runtime: "client", + flagType: "multivariate", + payload: null, + variants: [], + rolloutPercentage: 100, + rules: [], + conditionSets: [ + { + name: "Default", + rules: [], + variants, + }, + ], + }); + + featureFlagId = createdFlag.data.flagId; + flagKey = createdFlag.data.key; + variantKeys = getVariantKeys(createdFlag.data); + } + + let primaryGoalId: number | null = form.goalMode === "existing" ? Number(form.existingGoalId) : null; + let goalType: GoalType | undefined = selectedGoal?.goalType; + let goalLabel = + selectedGoal?.goalType === "path" + ? selectedGoal.config.pathPattern + : selectedGoal?.goalType === "event" + ? selectedGoal.config.eventName + : form.goalMode === "none" + ? undefined + : form.goalName.trim(); + + if (form.goalMode === "new") { + const createdGoal = await createGoalMutation.mutateAsync({ + siteId: Number(site), + name: form.goalName.trim() || `${form.name.trim()} conversion`, + goalType: form.goalType, + config: + form.goalType === "path" ? { pathPattern: form.pathPattern.trim() } : { eventName: form.eventName.trim() }, + }); + + primaryGoalId = createdGoal.goalId; + goalType = form.goalType; + goalLabel = form.goalType === "path" ? form.pathPattern.trim() : form.eventName.trim(); + } + + const updatedExperiment = await updateExperimentMutation.mutateAsync({ + experimentId: experiment.experimentId, + payload: { + name: form.name.trim(), + description: form.description.trim() || null, + hypothesis: form.hypothesis.trim() || null, + featureFlagId, + primaryGoalId, + }, + }); + + setSavedImplementationState({ + mode: "updated", + experiment: updatedExperiment.data, + flagKey, + variants: variantKeys, + goalMode: form.goalMode, + goalType, + goalLabel, + }); + setStep("implementation"); + toast.success(t("Experiment updated")); + } catch (error) { + toast.error(error instanceof Error ? error.message : t("Failed to save experiment")); + } + }; + + const renderStep = () => { + if (step === "basics") { + return ( +
+
+ + updateName(event.target.value)} + placeholder={t("Checkout CTA test")} + /> +
+
+ +