Merge branch 'dev' into patch-6

This commit is contained in:
Mike Cao 2024-07-08 23:19:16 -07:00 committed by GitHub
commit 9f0d2b1e32
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
155 changed files with 1334 additions and 1034 deletions

View File

@ -64,9 +64,9 @@
".next/cache"
],
"dependencies": {
"@clickhouse/client": "^1.0.2",
"@clickhouse/client": "^1.2.0",
"@fontsource/inter": "^4.5.15",
"@prisma/client": "5.14.0",
"@prisma/client": "5.16.1",
"@prisma/extension-read-replicas": "^0.3.0",
"@react-spring/web": "^9.7.3",
"@tanstack/react-query": "^5.28.6",
@ -98,11 +98,11 @@
"maxmind": "^4.3.6",
"md5": "^2.3.0",
"moment-timezone": "^0.5.35",
"next": "14.2.3",
"next": "14.2.4",
"next-basics": "^0.39.0",
"node-fetch": "^3.2.8",
"npm-run-all": "^4.1.5",
"prisma": "5.14.0",
"prisma": "5.16.1",
"react": "^18.2.0",
"react-basics": "^0.123.0",
"react-beautiful-dnd": "^13.1.0",
@ -175,6 +175,6 @@
"tar": "^6.1.2",
"ts-jest": "^29.1.2",
"ts-node": "^10.9.1",
"typescript": "^5.4.3"
"typescript": "^5.5.3"
}
}

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -152,7 +152,7 @@
"label.compare": [
{
"type": 0,
"value": "Compare"
"value": "Comparar"
}
],
"label.confirm": [
@ -182,7 +182,7 @@
"label.count": [
{
"type": 0,
"value": "Count"
"value": "Recompte"
}
],
"label.countries": [
@ -236,7 +236,7 @@
"label.current": [
{
"type": 0,
"value": "Current"
"value": "Actual"
}
],
"label.current-password": [
@ -398,13 +398,13 @@
"label.end-step": [
{
"type": 0,
"value": "End Step"
"value": "Pas Final"
}
],
"label.entry": [
{
"type": 0,
"value": "Entry URL"
"value": "URL d'entrada"
}
],
"label.event": [
@ -428,7 +428,7 @@
"label.exit": [
{
"type": 0,
"value": "Exit URL"
"value": "URL de sortida"
}
],
"label.false": [
@ -488,19 +488,19 @@
"label.goal": [
{
"type": 0,
"value": "Goal"
"value": "Meta"
}
],
"label.goals": [
{
"type": 0,
"value": "Goals"
"value": "Metes"
}
],
"label.goals-description": [
{
"type": 0,
"value": "Track your goals for pageviews and events."
"value": "Feu un seguiment de les seves metes per a pàgines vistes i esdeveniments."
}
],
"label.greater-than": [
@ -518,13 +518,13 @@
"label.host": [
{
"type": 0,
"value": "Host"
"value": "Amfitrió"
}
],
"label.hosts": [
{
"type": 0,
"value": "Hosts"
"value": "Amfitrions"
}
],
"label.insights": [
@ -578,13 +578,13 @@
"label.journey": [
{
"type": 0,
"value": "Journey"
"value": "Trajecte"
}
],
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Entengui com naveguen els usuaris pel seu lloc web."
}
],
"label.language": [
@ -777,7 +777,7 @@
"value": [
{
"type": 0,
"value": "record"
"value": "registre"
}
]
},
@ -785,7 +785,7 @@
"value": [
{
"type": 0,
"value": "records"
"value": "registres"
}
]
}
@ -874,19 +874,19 @@
"label.previous": [
{
"type": 0,
"value": "Previous"
"value": "Anterior"
}
],
"label.previous-period": [
{
"type": 0,
"value": "Previous period"
"value": "Període anterior"
}
],
"label.previous-year": [
{
"type": 0,
"value": "Previous year"
"value": "Any anterior"
}
],
"label.profile": [
@ -898,7 +898,7 @@
"label.property": [
{
"type": 0,
"value": "Property"
"value": "Propietat"
}
],
"label.queries": [
@ -1090,7 +1090,7 @@
"label.start-step": [
{
"type": 0,
"value": "Start Step"
"value": "Pas inicial"
}
],
"label.steps": [
@ -1360,7 +1360,7 @@
"label.views-per-visit": [
{
"type": 0,
"value": "Views per visit"
"value": "Vistes per visita"
}
],
"label.visit-duration": [
@ -1462,7 +1462,7 @@
"message.collected-data": [
{
"type": 0,
"value": "Collected data"
"value": "Dades recol·lectades"
}
],
"message.confirm-delete": [
@ -1790,7 +1790,7 @@
"message.visitors-dropped-off": [
{
"type": 0,
"value": "Els visitants han sortit"
"value": "Visitants han sortit"
}
]
}

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

File diff suppressed because it is too large Load Diff

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -566,7 +566,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -152,7 +152,7 @@
"label.compare": [
{
"type": 0,
"value": "Compare"
"value": "对比"
}
],
"label.confirm": [
@ -182,7 +182,7 @@
"label.count": [
{
"type": 0,
"value": "Count"
"value": "数量"
}
],
"label.countries": [
@ -236,7 +236,7 @@
"label.current": [
{
"type": 0,
"value": "Current"
"value": "当前"
}
],
"label.current-password": [
@ -398,13 +398,13 @@
"label.end-step": [
{
"type": 0,
"value": "End Step"
"value": "最后一步"
}
],
"label.entry": [
{
"type": 0,
"value": "Entry URL"
"value": "首次访问 URL"
}
],
"label.event": [
@ -428,7 +428,7 @@
"label.exit": [
{
"type": 0,
"value": "Exit URL"
"value": "退出 URL"
}
],
"label.false": [
@ -488,19 +488,19 @@
"label.goal": [
{
"type": 0,
"value": "Goal"
"value": "目标"
}
],
"label.goals": [
{
"type": 0,
"value": "Goals"
"value": "目标"
}
],
"label.goals-description": [
{
"type": 0,
"value": "Track your goals for pageviews and events."
"value": "追踪您的页面浏览量和事件目标。"
}
],
"label.greater-than": [
@ -518,13 +518,13 @@
"label.host": [
{
"type": 0,
"value": "Host"
"value": "主机"
}
],
"label.hosts": [
{
"type": 0,
"value": "Hosts"
"value": "主机"
}
],
"label.insights": [
@ -578,13 +578,13 @@
"label.journey": [
{
"type": 0,
"value": "Journey"
"value": "轨迹"
}
],
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "了解用户如何浏览您网站的哪些页面。"
}
],
"label.language": [
@ -692,7 +692,7 @@
"label.manager": [
{
"type": 0,
"value": "Manager"
"value": "管理者"
}
],
"label.max": [
@ -798,7 +798,7 @@
"label.ok": [
{
"type": 0,
"value": "OK"
"value": "好的"
}
],
"label.os": [
@ -882,19 +882,19 @@
"label.previous": [
{
"type": 0,
"value": "Previous"
"value": "之前"
}
],
"label.previous-period": [
{
"type": 0,
"value": "Previous period"
"value": "前一周期"
}
],
"label.previous-year": [
{
"type": 0,
"value": "Previous year"
"value": "前一年"
}
],
"label.profile": [
@ -906,7 +906,7 @@
"label.property": [
{
"type": 0,
"value": "Property"
"value": "属性"
}
],
"label.queries": [
@ -1098,7 +1098,7 @@
"label.start-step": [
{
"type": 0,
"value": "Start Step"
"value": "第一步"
}
],
"label.steps": [
@ -1134,7 +1134,7 @@
"label.team-manager": [
{
"type": 0,
"value": "Team manager"
"value": "团队管理"
}
],
"label.team-member": [
@ -1450,7 +1450,7 @@
"message.collected-data": [
{
"type": 0,
"value": "Collected data"
"value": "收集数据"
}
],
"message.confirm-delete": [

View File

@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
"value": "Understand how users nagivate through your website."
"value": "Understand how users navigate through your website."
}
],
"label.language": [

View File

@ -44,7 +44,7 @@ async function checkConnection() {
success('Database connection successful.');
} catch (e) {
throw new Error('Unable to connect to the database.');
throw new Error('Unable to connect to the database: ' + e.message);
}
}

View File

@ -2,7 +2,6 @@ require('dotenv').config();
const cli = require('next/dist/cli/next-start');
cli.nextStart({
'--port': process.env.PORT || 3000,
'--hostname': process.env.HOSTNAME || '0.0.0.0',
_: [],
'port': process.env.PORT || 3000,
'hostname': process.env.HOSTNAME || '0.0.0.0'
});

View File

@ -21,8 +21,12 @@ export function TestConsole({ websiteId }: { websiteId: string }) {
router.push(`/console/${value}`);
}
function handleClick() {
window['umami'].track({ url: '/page-view', referrer: 'https://www.google.com' });
function handleRunScript() {
window['umami'].track(props => ({
...props,
url: '/page-view',
referrer: 'https://www.google.com',
}));
window['umami'].track('track-event-no-data');
window['umami'].track('track-event-with-data', {
test: 'test-data',
@ -44,7 +48,7 @@ export function TestConsole({ websiteId }: { websiteId: string }) {
});
}
function handleIdentifyClick() {
function handleRunIdentify() {
window['umami'].identify({
userId: 123,
name: 'brian',
@ -145,10 +149,10 @@ export function TestConsole({ websiteId }: { websiteId: string }) {
</div>
<div className={styles.group}>
<div className={styles.header}>Javascript events</div>
<Button id="manual-button" variant="primary" onClick={handleClick}>
<Button id="manual-button" variant="primary" onClick={handleRunScript}>
Run script
</Button>
<Button id="manual-button" variant="primary" onClick={handleIdentifyClick}>
<Button id="manual-button" variant="primary" onClick={handleRunIdentify}>
Run identify
</Button>
</div>

View File

@ -46,9 +46,14 @@ export function WebsiteHeader({
path: '/reports',
},
{
label: formatMessage(labels.eventData),
label: formatMessage(labels.sessions),
icon: <Icons.User />,
path: '/sessions',
},
{
label: formatMessage(labels.events),
icon: <Icons.Nodes />,
path: '/event-data',
path: '/events',
},
];

View File

@ -144,7 +144,10 @@ export function RealtimeLog({ data }: { data: RealtimeData }) {
const { events, visitors } = data;
let logs = [
...events.map(e => ({ __type: e.eventName ? TYPE_EVENT : TYPE_PAGEVIEW, ...e })),
...events.map(e => ({
__type: e.eventName ? TYPE_EVENT : TYPE_PAGEVIEW,
...e,
})),
...visitors.map(v => ({ __type: TYPE_SESSION, ...v })),
].sort(thenby.firstBy('timestamp', -1));

View File

@ -0,0 +1,25 @@
import { useSessions } from 'components/hooks';
import SessionsTable from './SessionsTable';
import DataTable from 'components/common/DataTable';
import { ReactNode } from 'react';
export default function SessionsDataTable({
websiteId,
children,
}: {
websiteId?: string;
teamId?: string;
children?: ReactNode;
}) {
const queryResult = useSessions(websiteId);
if (queryResult?.result?.data?.length === 0) {
return children;
}
return (
<DataTable queryResult={queryResult} allowSearch={false}>
{({ data }) => <SessionsTable data={data} showDomain={!websiteId} />}
</DataTable>
);
}

View File

@ -0,0 +1,14 @@
'use client';
import WebsiteHeader from '../WebsiteHeader';
import SessionsDataTable from './SessionsDataTable';
export function SessionsPage({ websiteId }) {
return (
<>
<WebsiteHeader websiteId={websiteId} />
<SessionsDataTable websiteId={websiteId} />
</>
);
}
export default SessionsPage;

View File

@ -0,0 +1,21 @@
import { GridColumn, GridTable, useBreakpoint } from 'react-basics';
import { useMessages } from 'components/hooks';
export function SessionsTable({ data = [] }: { data: any[]; showDomain?: boolean }) {
const { formatMessage, labels } = useMessages();
const breakpoint = useBreakpoint();
return (
<GridTable data={data} cardMode={['xs', 'sm', 'md'].includes(breakpoint)}>
<GridColumn name="id" label="ID" />
<GridColumn name="country" label={formatMessage(labels.country)} />
<GridColumn name="city" label={formatMessage(labels.city)} />
<GridColumn name="browser" label={formatMessage(labels.browser)} />
<GridColumn name="os" label={formatMessage(labels.os)} />
<GridColumn name="device" label={formatMessage(labels.device)} />
<GridColumn name="createdAt" label={formatMessage(labels.created)} />
</GridTable>
);
}
export default SessionsTable;

View File

@ -0,0 +1,10 @@
import SessionsPage from './SessionsPage';
import { Metadata } from 'next';
export default function ({ params: { websiteId } }) {
return <SessionsPage websiteId={websiteId} />;
}
export const metadata: Metadata = {
title: 'Sessions',
};

View File

@ -0,0 +1,28 @@
import { CURRENT_VERSION, TELEMETRY_PIXEL } from 'lib/constants';
export async function GET() {
if (
process.env.NODE_ENV !== 'production' &&
process.env.DISABLE_TELEMETRY &&
process.env.PRIVATE_MODE
) {
const script = `
(()=>{const i=document.createElement('img');
i.setAttribute('src','${TELEMETRY_PIXEL}?v=${CURRENT_VERSION}');
i.setAttribute('style','width:0;height:0;position:absolute;pointer-events:none;');
document.body.appendChild(i);})();
`;
return new Response(script.replace(/\s\s+/g, ''), {
headers: {
'content-type': 'text/javascript',
},
});
}
return new Response('/* telemetry disabled */', {
headers: {
'content-type': 'text/javascript',
},
});
}

View File

@ -5,6 +5,7 @@ export * from './queries/useLogin';
export * from './queries/useRealtime';
export * from './queries/useReport';
export * from './queries/useReports';
export * from './queries/useSessions';
export * from './queries/useShareToken';
export * from './queries/useTeam';
export * from './queries/useTeams';

View File

@ -0,0 +1,20 @@
import { useApi } from './useApi';
import { useFilterQuery } from './useFilterQuery';
import useModified from '../useModified';
export function useSessions(websiteId: string, params?: { [key: string]: string | number }) {
const { get } = useApi();
const { modified } = useModified(`websites`);
return useFilterQuery({
queryKey: ['sessions', { websiteId, modified, ...params }],
queryFn: (data: any) => {
return get(`/websites/${websiteId}/sessions`, {
...data,
...params,
});
},
});
}
export default useSessions;

View File

@ -265,7 +265,7 @@ export const labels = defineMessages({
journey: { id: 'label.journey', defaultMessage: 'Journey' },
journeyDescription: {
id: 'label.journey-description',
defaultMessage: 'Understand how users nagivate through your website.',
defaultMessage: 'Understand how users navigate through your website.',
},
compare: { id: 'label.compare', defaultMessage: 'Compare' },
current: { id: 'label.current', defaultMessage: 'Current' },

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",

View File

@ -96,7 +96,7 @@
"label.join": "انضم",
"label.join-team": "انضم للفريق",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "اللغة",
"label.languages": "اللغات",
"label.laptop": "لابتوب",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Мова",
"label.languages": "Мовы",
"label.laptop": "Ноўтбук",

View File

@ -96,7 +96,7 @@
"label.join": "Присъедини се",
"label.join-team": "Присъедини се към екип",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Език",
"label.languages": "Езици",
"label.laptop": "Лаптоп",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "ভাষা",
"label.languages": "ভাষা",
"label.laptop": "ল্যাপটপ",

View File

@ -96,7 +96,7 @@
"label.join": "Učlani se",
"label.join-team": "Učlani se u tim",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Jezik",
"label.languages": "Jezici",
"label.laptop": "Laptop",

View File

@ -24,12 +24,12 @@
"label.cities": "Ciutats",
"label.city": "Ciutat",
"label.clear-all": "Netejar tot",
"label.compare": "Compare",
"label.compare": "Comparar",
"label.confirm": "Confirmar",
"label.confirm-password": "Confirma la contrasenya",
"label.contains": "Conté",
"label.continue": "Continuar",
"label.count": "Count",
"label.count": "Recompte",
"label.countries": "Països",
"label.country": "País",
"label.create": "Crear",
@ -38,7 +38,7 @@
"label.create-user": "Crear usuari",
"label.created": "Creat",
"label.created-by": "Creat Per",
"label.current": "Current",
"label.current": "Actual",
"label.current-password": "Contrasenya actual",
"label.custom-range": "Rang personalitzat",
"label.dashboard": "Panell",
@ -65,12 +65,12 @@
"label.edit-dashboard": "Edita panell",
"label.edit-member": "Edita membre",
"label.enable-share-url": "Activa l'enllaç per compartir",
"label.end-step": "End Step",
"label.entry": "Entry URL",
"label.end-step": "Pas Final",
"label.entry": "URL d'entrada",
"label.event": "Esdeveniment",
"label.event-data": "Dades de l'esdeveniment",
"label.events": "Esdeveniments",
"label.exit": "Exit URL",
"label.exit": "URL de sortida",
"label.false": "Fals",
"label.field": "Camp",
"label.fields": "Camps",
@ -80,13 +80,13 @@
"label.filters": "Filtres",
"label.funnel": "Embut",
"label.funnel-description": "Entengui la taxa de conversió i abandonament dels usuaris.",
"label.goal": "Goal",
"label.goals": "Goals",
"label.goals-description": "Track your goals for pageviews and events.",
"label.goal": "Meta",
"label.goals": "Metes",
"label.goals-description": "Feu un seguiment de les seves metes per a pàgines vistes i esdeveniments.",
"label.greater-than": "Més gran que",
"label.greater-than-equals": "Més gran que o igual a",
"label.host": "Host",
"label.hosts": "Hosts",
"label.host": "Amfitrió",
"label.hosts": "Amfitrions",
"label.insights": "Insights",
"label.insights-description": "Aprofundeixi en les seves dades mitjançant l'ús de segments i filtres.",
"label.is": "És igual a",
@ -95,8 +95,8 @@
"label.is-set": "Està establert",
"label.join": "Unir",
"label.join-team": "Unir-se al equip",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey": "Trajecte",
"label.journey-description": "Entengui com naveguen els usuaris pel seu lloc web.",
"label.language": "Idioma",
"label.languages": "Idiomes",
"label.laptop": "Portàtil",
@ -122,7 +122,7 @@
"label.name": "Nom",
"label.new-password": "Contrasenya nova",
"label.none": "Cap",
"label.number-of-records": "{x} {x, plural, one {record} other {records}}",
"label.number-of-records": "{x} {x, plural, one {registre} other {registres}}",
"label.ok": "OK",
"label.os": "SO",
"label.overview": "Resum",
@ -133,11 +133,11 @@
"label.pages": "Pàgines",
"label.password": "Contrasenya",
"label.powered-by": "Funciona amb {name}",
"label.previous": "Previous",
"label.previous-period": "Previous period",
"label.previous-year": "Previous year",
"label.previous": "Anterior",
"label.previous-period": "Període anterior",
"label.previous-year": "Any anterior",
"label.profile": "Perfil",
"label.property": "Property",
"label.property": "Propietat",
"label.queries": "Consultes",
"label.query": "Consulta",
"label.query-parameters": "Paràmetres de consulta",
@ -169,7 +169,7 @@
"label.settings": "Configuració",
"label.share-url": "Enllaç per compartir",
"label.single-day": "Un sol dia",
"label.start-step": "Start Step",
"label.start-step": "Pas inicial",
"label.steps": "Pasos",
"label.sum": "Suma",
"label.tablet": "Tauleta",
@ -214,7 +214,7 @@
"label.view-details": "Veure els detalls",
"label.view-only": "Només veure",
"label.views": "Vistes",
"label.views-per-visit": "Views per visit",
"label.views-per-visit": "Vistes per visita",
"label.visit-duration": "Temps mitjà de visita",
"label.visitors": "Visitants",
"label.visits": "Visites",
@ -225,7 +225,7 @@
"label.yesterday": "Ahir",
"message.action-confirmation": "Escrigui {confirmation} al cuadre inferior per confirmar.",
"message.active-users": "{x} {x, plural, one {visitant actual} other {visitants actuals}}",
"message.collected-data": "Collected data",
"message.collected-data": "Dades recol·lectades",
"message.confirm-delete": "Segur que vol esborrar {target}?",
"message.confirm-leave": "Segur que vol abandonar {target}?",
"message.confirm-remove": "Segur que vol eliminar {target}?",
@ -263,5 +263,5 @@
"message.user-deleted": "Usuari eliminat.",
"message.viewed-page": "Pàgina vista",
"message.visitor-log": "Visitant de {country} usant {browser} a {os} {device}",
"message.visitors-dropped-off": "Els visitants han sortit"
"message.visitors-dropped-off": "Visitants han sortit"
}

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Přenosný počítač",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Sprog",
"label.languages": "Sprog",
"label.laptop": "Laptop",

View File

@ -96,7 +96,7 @@
"label.join": "Biträte",
"label.join-team": "Team biträte",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Sprach",
"label.languages": "Sprache",
"label.laptop": "Laptop",

View File

@ -4,8 +4,8 @@
"label.activity-log": "Aktivitätsverlauf",
"label.add": "Hinzufügen",
"label.add-description": "Beschreibung hinzufügen",
"label.add-member": "Add member",
"label.add-step": "Add step",
"label.add-member": "Mitglied hinzufügen",
"label.add-step": "Schritt hinzufügen",
"label.add-website": "Website hinzufügen",
"label.admin": "Administrator",
"label.after": "Nach",
@ -16,7 +16,7 @@
"label.back": "Zurück",
"label.before": "Vor",
"label.bounce-rate": "Absprungrate",
"label.breakdown": "Breakdown",
"label.breakdown": "Aufschlüsselung",
"label.browser": "Browser",
"label.browsers": "Browser",
"label.cancel": "Abbrechen",
@ -24,21 +24,21 @@
"label.cities": "Städte",
"label.city": "Stadt",
"label.clear-all": "Alles löschen",
"label.compare": "Compare",
"label.compare": "Vergleich",
"label.confirm": "Bestätigen",
"label.confirm-password": "Passwort wiederholen",
"label.contains": "Enthält",
"label.continue": "Weiter",
"label.count": "Count",
"label.count": "Anzahl",
"label.countries": "Länder",
"label.country": "Land",
"label.create": "Create",
"label.create": "Erstellen",
"label.create-report": "Bericht erstellen",
"label.create-team": "Team erstellen",
"label.create-user": "Benutzer erstellen",
"label.created": "Erstellt",
"label.created-by": "Created By",
"label.current": "Current",
"label.created-by": "Erstellt von",
"label.current": "Aktuell",
"label.current-password": "Derzeitiges Passwort",
"label.custom-range": "Benutzerdefinierter Bereich",
"label.dashboard": "Übersicht",
@ -48,7 +48,7 @@
"label.day": "Tag",
"label.default-date-range": "Voreingestellter Datumsbereich",
"label.delete": "Löschen",
"label.delete-report": "Delete report",
"label.delete-report": "Bericht löschen",
"label.delete-team": "Team löschen",
"label.delete-user": "Benutzer löschen",
"label.delete-website": "Website löschen",
@ -63,9 +63,9 @@
"label.dropoff": "Dropoff",
"label.edit": "Bearbeiten",
"label.edit-dashboard": "Dashboard bearbeiten",
"label.edit-member": "Edit member",
"label.edit-member": "Mitglied bearbeiten",
"label.enable-share-url": "Freigabe-URL aktivieren",
"label.end-step": "End Step",
"label.end-step": "Schritt beenden",
"label.entry": "Entry URL",
"label.event": "Event",
"label.event-data": "Eventdaten",
@ -79,16 +79,16 @@
"label.filter-raw": "Rohdaten",
"label.filters": "Filter",
"label.funnel": "Funnel",
"label.funnel-description": "Understand the conversion and drop-off rate of users.",
"label.goal": "Goal",
"label.goals": "Goals",
"label.goals-description": "Track your goals for pageviews and events.",
"label.funnel-description": "Verstehe die Konversions- und Dropoffrate von Nutzern.",
"label.goal": "Ziel",
"label.goals": "Ziele",
"label.goals-description": "Verfolgen Sie Ihre Ziele für Aufrufe und Events.",
"label.greater-than": "Größer als",
"label.greater-than-equals": "Größer oder gleich",
"label.host": "Host",
"label.hosts": "Hosts",
"label.insights": "Insights",
"label.insights-description": "Dive deeper into your data by using segments and filters.",
"label.insights-description": "Tauchen Sie tiefer in Ihre Daten mit Filtern und Segmenten ein.",
"label.is": "Ist",
"label.is-not": "Ist nicht",
"label.is-not-set": "Ist nicht gesetzt",
@ -96,7 +96,7 @@
"label.join": "Beitreten",
"label.join-team": "Team beitreten",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Verstehen Sie, wie Nutzer Ihre Website navigieren.",
"label.language": "Sprache",
"label.languages": "Sprachen",
"label.laptop": "Laptop",
@ -109,15 +109,15 @@
"label.less-than-equals": "Kleiner oder gleich",
"label.login": "Anmelden",
"label.logout": "Abmelden",
"label.manage": "Manage",
"label.manage": "Verwalten",
"label.manager": "Manager",
"label.max": "Max",
"label.member": "Member",
"label.member": "Mitglied",
"label.members": "Mitglieder",
"label.min": "Min",
"label.mobile": "Handy",
"label.more": "Mehr",
"label.my-account": "My account",
"label.my-account": "Mein Konto",
"label.my-websites": "Meine Websites",
"label.name": "Name",
"label.new-password": "Neues Passwort",
@ -133,11 +133,11 @@
"label.pages": "Seiten",
"label.password": "Passwort",
"label.powered-by": "Betrieben durch {name}",
"label.previous": "Previous",
"label.previous-period": "Previous period",
"label.previous-year": "Previous year",
"label.previous": "Vorherige",
"label.previous-period": "Vorheriger Zeitraum",
"label.previous-year": "Vorheriges Jahr",
"label.profile": "Profil",
"label.property": "Property",
"label.property": "Besitz",
"label.queries": "Abfragen",
"label.query": "Abfrage",
"label.query-parameters": "Abfrageparameter",
@ -149,33 +149,33 @@
"label.region": "Region",
"label.regions": "Regionen",
"label.remove": "Entfernen",
"label.remove-member": "Remove member",
"label.remove-member": "Mitglied entfernen",
"label.reports": "Berichte",
"label.required": "Erforderlich",
"label.reset": "Zurücksetzen",
"label.reset-website": "Statistik zurücksetzen",
"label.retention": "Retention",
"label.retention-description": "Measure your website stickiness by tracking how often users return.",
"label.retention-description": "Messen Sie die Presenz Ihrer Website, indem Sie tracken wie oft Nutzer zurückkehren.",
"label.role": "Rolle",
"label.run-query": "Abfrage starten",
"label.save": "Speichern",
"label.screens": "Bildschirmauflösungen",
"label.search": "Search",
"label.select": "Select",
"label.search": "Suche",
"label.select": "Auswählen",
"label.select-date": "Datum auswählen",
"label.select-role": "Select role",
"label.select-role": "Rolle auswählen",
"label.select-website": "Website auswählen",
"label.sessions": "Sitzungen",
"label.settings": "Einstellungen",
"label.share-url": "Freigabe-URL",
"label.single-day": "Ein Tag",
"label.start-step": "Start Step",
"label.steps": "Steps",
"label.start-step": "Schritt starten",
"label.steps": "Schritte",
"label.sum": "Summe",
"label.tablet": "Tablet",
"label.team": "Team",
"label.team-id": "Team-ID",
"label.team-manager": "Team manager",
"label.team-manager": "Team-Manager",
"label.team-member": "Team-Mitglied",
"label.team-name": "Name des Teams",
"label.team-owner": "Team-Eigentümer",
@ -193,8 +193,8 @@
"label.total": "Gesamt",
"label.total-records": "Datensätze insgesamt",
"label.tracking-code": "Tracking Code",
"label.transfer": "Transfer",
"label.transfer-website": "Transfer website",
"label.transfer": "Übertragung",
"label.transfer-website": "Website übertragen",
"label.true": "Wahr",
"label.type": "Typ",
"label.unique": "Eindeutig",
@ -208,29 +208,29 @@
"label.username": "Benutzername",
"label.users": "Benutzer",
"label.utm": "UTM",
"label.utm-description": "Track your campaigns through UTM parameters.",
"label.utm-description": "Tracken Sie Ihre Kampagnen mit Hilfe von UTM Parametern.",
"label.value": "Wert",
"label.view": "Anzeigen",
"label.view-details": "Details anzeigen",
"label.view-only": "Nur ansehen",
"label.views": "Aufrufe",
"label.views-per-visit": "Views per visit",
"label.views-per-visit": "Aufrufe pro Besuch",
"label.visit-duration": "Durchschn. Besuchszeit",
"label.visitors": "Besucher",
"label.visits": "Visits",
"label.visits": "Besuche",
"label.website": "Website",
"label.website-id": "Website ID",
"label.websites": "Websites",
"label.window": "Fenster",
"label.yesterday": "Gestern",
"message.action-confirmation": "Type {confirmation} in the box below to confirm.",
"message.action-confirmation": "Tippen Sie {confirmation} in das untenliegende Feld, um zu bestätigen.",
"message.active-users": "{x} {x, plural, one {aktiver Besucher} other {aktive Besucher}}",
"message.collected-data": "Collected data",
"message.collected-data": "Gesammelte Daten",
"message.confirm-delete": "Sind Sie sich sicher, {target} zu löschen?",
"message.confirm-leave": "Sind Sie sicher, dass die {target} verlassen möchten?",
"message.confirm-remove": "Are you sure you want to remove {target}?",
"message.confirm-remove": "Sind Sie sicher, dass Sie {target} entfernen möchten?",
"message.confirm-reset": "Sind Sie sicher, dass Sie die Statistiken von {target} zurücksetzen wollen?",
"message.delete-team-warning": "Deleting a team will also delete all team websites.",
"message.delete-team-warning": "Alle zugehörigen Websiten werden ebenfalls gelöscht.",
"message.delete-website-warning": "Alle zugehörigen Daten werden ebenfalls gelöscht.",
"message.error": "Es ist ein Fehler aufgetreten.",
"message.event-log": "{event} auf {url}",
@ -256,12 +256,12 @@
"message.team-not-found": "Team nicht gefunden.",
"message.team-websites-info": "Websites können von jedem im Team eingesehen werden.",
"message.tracking-code": "Tracking Code",
"message.transfer-team-website-to-user": "Transfer this website to your account?",
"message.transfer-user-website-to-team": "Select the team to transfer this website to.",
"message.transfer-website": "Transfer website ownership to your account or another team.",
"message.triggered-event": "Triggered event",
"message.transfer-team-website-to-user": "Möchten Sie diese Website auf Ihr Konto übertragen?",
"message.transfer-user-website-to-team": "Wählen Sie das Team, auf das die Website übertragen wird.",
"message.transfer-website": "Übertragen Sie den Besitz der Website auf Ihren Account oder ein anderes Team.",
"message.triggered-event": "Event ausgelöst",
"message.user-deleted": "Benutzer gelöscht.",
"message.viewed-page": "Viewed page",
"message.viewed-page": "Seite besucht",
"message.visitor-log": "Besucher aus {country} benutzt {browser} auf {os} {device}",
"message.visitors-dropped-off": "Visitors dropped off"
"message.visitors-dropped-off": "Besucher haben die Seite verlassen"
}

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Λάπτοπ",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",

View File

@ -96,7 +96,7 @@
"label.join": "Unir",
"label.join-team": "Unirse al equipo",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Idioma",
"label.languages": "Idiomas",
"label.laptop": "Portátil",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "زبان",
"label.languages": "زبان‌ها",
"label.laptop": "لپ‌تاپ",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Kieli",
"label.languages": "Kielet",
"label.laptop": "Kannettava tietokone",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Fartelda",

View File

@ -96,7 +96,7 @@
"label.join": "Rejoindre",
"label.join-team": "Rejoindre une équipe",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Langue",
"label.languages": "Langues",
"label.laptop": "Portable",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Idioma",
"label.languages": "Idiomas",
"label.laptop": "Portátil",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "לפטופ",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "लैपटॉप",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Jezik",
"label.languages": "Languages",
"label.laptop": "Laptop",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Bahasa",
"label.languages": "Bahasa",
"label.laptop": "Laptop",

View File

@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
"label.journey-description": "Understand how users nagivate through your website.",
"label.journey-description": "Understand how users navigate through your website.",
"label.language": "Lingua",
"label.languages": "Lingue",
"label.laptop": "Portatile",

Some files were not shown because too many files have changed in this diff Show More