Merge branch 'dev' into analytics

This commit is contained in:
Mike Cao 2023-08-17 17:43:30 -07:00
commit b603ae294f
272 changed files with 19629 additions and 11276 deletions

View File

@ -50,7 +50,8 @@
"@next/next/no-img-element": "off", "@next/next/no-img-element": "off",
"@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-var-requires": "off" "@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/no-empty-interface": "off"
}, },
"globals": { "globals": {
"React": "writable" "React": "writable"

View File

@ -19,4 +19,6 @@ jobs:
close-issue-message: 'This issue was closed because it has been inactive for 7 days since being marked as stale.' close-issue-message: 'This issue was closed because it has been inactive for 7 days since being marked as stale.'
days-before-pr-stale: -1 days-before-pr-stale: -1
days-before-pr-close: -1 days-before-pr-close: -1
operations-per-run: 200
ascending: true
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

1
assets/magnet.svg Normal file
View File

@ -0,0 +1 @@
<svg height="512" viewBox="0 0 508.467 508.467" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m426.815 239.006c-11.722-11.724-30.702-11.729-42.427-.001-65.928 65.929 49.291-49.292-116.718 116.718-53.811 53.809-142.478 19.197-140.68-54.511.547-22.415 9.826-43.738 26.129-60.041l116.717-116.717c11.724-11.722 11.728-30.702 0-42.427l-46.668-46.669c-11.725-11.725-30.702-11.726-42.427 0-16.642 16.643-102.078 102.078-120.112 120.112-39.05 39.05-60.582 90.97-60.629 146.195-.093 110.827 88.182 206.288 206.244 206.394 56.778 0 109.204-21.924 148.29-61.01l118.948-118.948c11.724-11.722 11.728-30.702 0-42.427zm-224.861-182.434 46.669 46.669-58.455 58.456-46.669-46.669zm131.367 369.264c-69.043 69.043-182.868 70.02-251.708.933-68.763-69.009-68.66-181.196.229-250.086l40.443-40.443 46.669 46.669-37.049 37.049c-45.115 45.112-46.916 116.85-3.395 160.371 43.279 43.279 115.221 41.756 160.372-3.394l37.049-37.049 46.669 46.669zm60.494-60.493-46.669-46.669 58.456-58.456 46.669 46.669z"/><path d="m379.357 95.099c15.199 3.839 30.418 19.07 34.336 34.192 2.089 8.058 10.303 12.828 18.283 10.758 8.02-2.078 12.836-10.264 10.758-18.283-6.651-25.662-30.176-49.223-56.03-55.753-8.032-2.027-16.188 2.838-18.217 10.869-2.029 8.032 2.837 16.189 10.87 18.217z"/><path d="m507.984 102.124c-12.016-46.375-55.215-89.504-101.745-101.256-8.032-2.027-16.188 2.838-18.217 10.869-2.029 8.032 2.838 16.188 10.87 18.217 35.882 9.063 70.769 43.871 80.051 79.695 2.088 8.058 10.304 12.828 18.283 10.758 8.02-2.078 12.836-10.263 10.758-18.283z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,45 @@
import styles from './Pager.module.css';
import { Button, Flexbox, Icon, Icons } from 'react-basics';
import useMessages from 'hooks/useMessages';
export function Pager({ page, pageSize, count, onPageChange }) {
const { formatMessage, labels } = useMessages();
const maxPage = Math.ceil(count / pageSize);
const lastPage = page === maxPage;
const firstPage = page === 1;
if (count === 0) {
return null;
}
const handlePageChange = value => {
const nextPage = page + value;
if (nextPage > 0 && nextPage <= maxPage) {
onPageChange(nextPage);
}
};
if (maxPage === 1) {
return null;
}
return (
<Flexbox justifyContent="center" className={styles.container}>
<Button onClick={() => handlePageChange(-1)} disabled={firstPage}>
<Icon rotate={90}>
<Icons.ChevronDown />
</Icon>
</Button>
<Flexbox alignItems="center" className={styles.text}>
{formatMessage(labels.pageOf, { current: page, total: maxPage })}
</Flexbox>
<Button onClick={() => handlePageChange(1)} disabled={lastPage}>
<Icon rotate={270}>
<Icons.ChevronDown />
</Icon>
</Button>
</Flexbox>
);
}
export default Pager;

View File

@ -0,0 +1,7 @@
.container {
margin-top: 20px;
}
.text {
margin: 0 16px;
}

View File

@ -1,37 +1,99 @@
import { Table, TableHeader, TableBody, TableRow, TableCell, TableColumn } from 'react-basics'; import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
import useMessages from 'hooks/useMessages';
import { useState } from 'react';
import {
SearchField,
Table,
TableBody,
TableCell,
TableColumn,
TableHeader,
TableRow,
} from 'react-basics';
import styles from './SettingsTable.module.css'; import styles from './SettingsTable.module.css';
import Pager from 'components/common/Pager';
export function SettingsTable({
columns = [],
data,
children,
cellRender,
showSearch,
showPaging,
onFilterChange,
onPageChange,
onPageSizeChange,
filterValue,
}) {
const { formatMessage, messages } = useMessages();
const [filter, setFilter] = useState(filterValue);
const { data: value, page, count, pageSize } = data;
const handleFilterChange = value => {
setFilter(value);
onFilterChange(value);
};
export function SettingsTable({ columns = [], data = [], children, cellRender }) {
return ( return (
<Table columns={columns} rows={data}> <>
<TableHeader className={styles.header}> {showSearch && (
{(column, index) => { <SearchField
return ( onChange={handleFilterChange}
<TableColumn key={index} className={styles.cell} style={columns[index].style}> delay={1000}
{column.label} value={filter}
</TableColumn> autoFocus={true}
); placeholder="Search"
}} style={{ maxWidth: '300px', marginBottom: '10px' }}
</TableHeader> />
<TableBody className={styles.body}> )}
{(row, keys, rowIndex) => { {value.length === 0 && filterValue && (
row.action = children(row, keys, rowIndex); <EmptyPlaceholder message={formatMessage(messages.noResultsFound)}></EmptyPlaceholder>
)}
{value.length > 0 && (
<Table columns={columns} rows={value}>
<TableHeader className={styles.header}>
{(column, index) => {
return (
<TableColumn key={index} className={styles.cell} style={columns[index].style}>
{column.label}
</TableColumn>
);
}}
</TableHeader>
<TableBody className={styles.body}>
{(row, keys, rowIndex) => {
row.action = children(row, keys, rowIndex);
return ( return (
<TableRow key={rowIndex} data={row} keys={keys} className={styles.row}> <TableRow key={rowIndex} data={row} keys={keys} className={styles.row}>
{(data, key, colIndex) => { {(data, key, colIndex) => {
return ( return (
<TableCell key={colIndex} className={styles.cell} style={columns[colIndex].style}> <TableCell
<label className={styles.label}>{columns[colIndex].label}</label> key={colIndex}
{cellRender ? cellRender(row, data, key, colIndex) : data[key]} className={styles.cell}
</TableCell> style={columns[colIndex].style}
); >
}} <label className={styles.label}>{columns[colIndex].label}</label>
</TableRow> {cellRender ? cellRender(row, data, key, colIndex) : data[key]}
); </TableCell>
}} );
</TableBody> }}
</Table> </TableRow>
);
}}
</TableBody>
{showPaging && (
<Pager
page={page}
pageSize={pageSize}
count={count}
onPageChange={onPageChange}
onPageSizeChange={onPageSizeChange}
/>
)}
</Table>
)}
</>
); );
} }

View File

@ -11,6 +11,7 @@ import Gear from 'assets/gear.svg';
import Globe from 'assets/globe.svg'; import Globe from 'assets/globe.svg';
import Lock from 'assets/lock.svg'; import Lock from 'assets/lock.svg';
import Logo from 'assets/logo.svg'; import Logo from 'assets/logo.svg';
import Magnet from 'assets/magnet.svg';
import Moon from 'assets/moon.svg'; import Moon from 'assets/moon.svg';
import Nodes from 'assets/nodes.svg'; import Nodes from 'assets/nodes.svg';
import Overview from 'assets/overview.svg'; import Overview from 'assets/overview.svg';
@ -35,6 +36,7 @@ const icons = {
Globe, Globe,
Lock, Lock,
Logo, Logo,
Magnet,
Moon, Moon,
Nodes, Nodes,
Overview, Overview,

View File

@ -3,7 +3,7 @@ import { Icon, Modal, Dropdown, Item, Text, Flexbox } from 'react-basics';
import { endOfYear, isSameDay } from 'date-fns'; import { endOfYear, isSameDay } from 'date-fns';
import DatePickerForm from 'components/metrics/DatePickerForm'; import DatePickerForm from 'components/metrics/DatePickerForm';
import useLocale from 'hooks/useLocale'; import useLocale from 'hooks/useLocale';
import { dateFormat } from 'lib/date'; import { formatDate } from 'lib/date';
import Icons from 'components/icons'; import Icons from 'components/icons';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
@ -135,8 +135,8 @@ const CustomRange = ({ startDate, endDate, onClick }) => {
<Icons.Calendar /> <Icons.Calendar />
</Icon> </Icon>
<Text> <Text>
{dateFormat(startDate, 'd LLL y', locale)} {formatDate(startDate, 'd LLL y', locale)}
{!isSameDay(startDate, endDate) && `${dateFormat(endDate, 'd LLL y', locale)}`} {!isSameDay(startDate, endDate) && `${formatDate(endDate, 'd LLL y', locale)}`}
</Text> </Text>
</Flexbox> </Flexbox>
); );

View File

@ -0,0 +1,71 @@
import { useRef } from 'react';
import {
Text,
Icon,
CalendarMonthSelect,
CalendarYearSelect,
Button,
PopupTrigger,
Popup,
} from 'react-basics';
import { startOfMonth, endOfMonth } from 'date-fns';
import Icons from 'components/icons';
import { useLocale } from 'hooks';
import { formatDate } from 'lib/date';
import { getDateLocale } from 'lib/lang';
import styles from './MonthSelect.module.css';
export function MonthSelect({ date = new Date(), onChange }) {
const { locale } = useLocale();
const month = formatDate(date, 'MMMM', locale);
const year = date.getFullYear();
const ref = useRef();
const handleChange = (close, date) => {
onChange(`range:${startOfMonth(date).getTime()}:${endOfMonth(date).getTime()}`);
close();
};
return (
<>
<div ref={ref} className={styles.container}>
<PopupTrigger>
<Button className={styles.input} variant="quiet">
<Text>{month}</Text>
<Icon size="sm">
<Icons.ChevronDown />
</Icon>
</Button>
<Popup className={styles.popup} alignment="start">
{close => (
<CalendarMonthSelect
date={date}
locale={getDateLocale(locale)}
onSelect={handleChange.bind(null, close)}
/>
)}
</Popup>
</PopupTrigger>
<PopupTrigger>
<Button className={styles.input} variant="quiet">
<Text>{year}</Text>
<Icon size="sm">
<Icons.ChevronDown />
</Icon>
</Button>
<Popup className={styles.popup} alignment="start">
{close => (
<CalendarYearSelect
date={date}
locale={getDateLocale(locale)}
onSelect={handleChange.bind(null, close)}
/>
)}
</Popup>
</PopupTrigger>
</div>
</>
);
}
export default MonthSelect;

View File

@ -0,0 +1,22 @@
.container {
display: flex;
align-items: center;
justify-content: center;
border: 1px solid var(--base400);
border-radius: var(--border-radius);
}
.input {
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
}
.popup {
border: 1px solid var(--base400);
background: var(--base50);
border-radius: var(--border-radius);
padding: 20px;
margin-top: 5px;
}

View File

@ -8,12 +8,12 @@ export function WebsiteSelect({ websiteId, onSelect }) {
const { data } = useQuery(['websites:me'], () => get('/me/websites')); const { data } = useQuery(['websites:me'], () => get('/me/websites'));
const renderValue = value => { const renderValue = value => {
return data?.find(({ id }) => id === value)?.name; return data?.data?.find(({ id }) => id === value)?.name;
}; };
return ( return (
<Dropdown <Dropdown
items={data} items={data?.data}
value={websiteId} value={websiteId}
renderValue={renderValue} renderValue={renderValue}
onChange={onSelect} onChange={onSelect}

View File

@ -2,9 +2,7 @@ import { Container } from 'react-basics';
import Head from 'next/head'; import Head from 'next/head';
import NavBar from 'components/layout/NavBar'; import NavBar from 'components/layout/NavBar';
import UpdateNotice from 'components/common/UpdateNotice'; import UpdateNotice from 'components/common/UpdateNotice';
import useRequireLogin from 'hooks/useRequireLogin'; import { useRequireLogin, useConfig } from 'hooks';
import useConfig from 'hooks/useConfig';
import { CURRENT_VERSION } from 'lib/constants';
import styles from './AppLayout.module.css'; import styles from './AppLayout.module.css';
export function AppLayout({ title, children }) { export function AppLayout({ title, children }) {
@ -16,7 +14,7 @@ export function AppLayout({ title, children }) {
} }
return ( return (
<div className={styles.layout} data-app-version={CURRENT_VERSION}> <div className={styles.layout}>
<UpdateNotice user={user} config={config} /> <UpdateNotice user={user} config={config} />
<Head> <Head>
<title>{title ? `${title} | umami` : 'umami'}</title> <title>{title ? `${title} | umami` : 'umami'}</title>

View File

@ -10,6 +10,7 @@
width: 100vw; width: 100vw;
grid-column: 1; grid-column: 1;
grid-row: 1 / 2; grid-row: 1 / 2;
z-index: 1;
} }
.body { .body {

View File

@ -18,6 +18,8 @@ export function NavBar() {
const links = [ const links = [
{ label: formatMessage(labels.dashboard), url: '/dashboard' }, { label: formatMessage(labels.dashboard), url: '/dashboard' },
{ label: formatMessage(labels.websites), url: '/websites' },
{ label: formatMessage(labels.reports), url: '/reports' },
!cloudMode && { label: formatMessage(labels.settings), url: '/settings' }, !cloudMode && { label: formatMessage(labels.settings), url: '/settings' },
].filter(n => n); ].filter(n => n);

View File

@ -2,6 +2,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding-top: 40px; padding-top: 40px;
padding-right: 20px;
} }
.content { .content {

View File

@ -21,6 +21,8 @@ export const labels = defineMessages({
details: { id: 'label.details', defaultMessage: 'Details' }, details: { id: 'label.details', defaultMessage: 'Details' },
website: { id: 'label.website', defaultMessage: 'Website' }, website: { id: 'label.website', defaultMessage: 'Website' },
websites: { id: 'label.websites', defaultMessage: 'Websites' }, websites: { id: 'label.websites', defaultMessage: 'Websites' },
myWebsites: { id: 'label.my-websites', defaultMessage: 'My websites' },
teamWebsites: { id: 'label.team-websites', defaultMessage: 'Team websites' },
created: { id: 'label.created', defaultMessage: 'Created' }, created: { id: 'label.created', defaultMessage: 'Created' },
edit: { id: 'label.edit', defaultMessage: 'Edit' }, edit: { id: 'label.edit', defaultMessage: 'Edit' },
name: { id: 'label.name', defaultMessage: 'Name' }, name: { id: 'label.name', defaultMessage: 'Name' },
@ -28,6 +30,7 @@ export const labels = defineMessages({
accessCode: { id: 'label.access-code', defaultMessage: 'Access code' }, accessCode: { id: 'label.access-code', defaultMessage: 'Access code' },
teamId: { id: 'label.team-id', defaultMessage: 'Team ID' }, teamId: { id: 'label.team-id', defaultMessage: 'Team ID' },
team: { id: 'label.team', defaultMessage: 'Team' }, team: { id: 'label.team', defaultMessage: 'Team' },
teamName: { id: 'label.team-name', defaultMessage: 'Team name' },
regenerate: { id: 'label.regenerate', defaultMessage: 'Regenerate' }, regenerate: { id: 'label.regenerate', defaultMessage: 'Regenerate' },
remove: { id: 'label.remove', defaultMessage: 'Remove' }, remove: { id: 'label.remove', defaultMessage: 'Remove' },
join: { id: 'label.join', defaultMessage: 'Join' }, join: { id: 'label.join', defaultMessage: 'Join' },
@ -77,7 +80,7 @@ export const labels = defineMessages({
referrers: { id: 'label.referrers', defaultMessage: 'Referrers' }, referrers: { id: 'label.referrers', defaultMessage: 'Referrers' },
screens: { id: 'label.screens', defaultMessage: 'Screens' }, screens: { id: 'label.screens', defaultMessage: 'Screens' },
browsers: { id: 'label.browsers', defaultMessage: 'Browsers' }, browsers: { id: 'label.browsers', defaultMessage: 'Browsers' },
os: { id: 'label.operating-systems', defaultMessage: 'Operating systems' }, os: { id: 'label.os', defaultMessage: 'OS' },
devices: { id: 'label.devices', defaultMessage: 'Devices' }, devices: { id: 'label.devices', defaultMessage: 'Devices' },
countries: { id: 'label.countries', defaultMessage: 'Countries' }, countries: { id: 'label.countries', defaultMessage: 'Countries' },
languages: { id: 'label.languages', defaultMessage: 'Languages' }, languages: { id: 'label.languages', defaultMessage: 'Languages' },
@ -133,35 +136,48 @@ export const labels = defineMessages({
runQuery: { id: 'label.run-query', defaultMessage: 'Run query' }, runQuery: { id: 'label.run-query', defaultMessage: 'Run query' },
field: { id: 'label.field', defaultMessage: 'Field' }, field: { id: 'label.field', defaultMessage: 'Field' },
fields: { id: 'label.fields', defaultMessage: 'Fields' }, fields: { id: 'label.fields', defaultMessage: 'Fields' },
createReport: { id: 'labels.create-report', defaultMessage: 'Create report' }, createReport: { id: 'label.create-report', defaultMessage: 'Create report' },
description: { id: 'labels.description', defaultMessage: 'Description' }, description: { id: 'label.description', defaultMessage: 'Description' },
untitled: { id: 'labels.untitled', defaultMessage: 'Untitled' }, untitled: { id: 'label.untitled', defaultMessage: 'Untitled' },
type: { id: 'labels.type', defaultMessage: 'Type' }, type: { id: 'label.type', defaultMessage: 'Type' },
filters: { id: 'labels.filters', defaultMessage: 'Filters' }, filters: { id: 'label.filters', defaultMessage: 'Filters' },
breakdown: { id: 'labels.breakdown', defaultMessage: 'Breakdown' }, breakdown: { id: 'label.breakdown', defaultMessage: 'Breakdown' },
true: { id: 'labels.true', defaultMessage: 'True' }, true: { id: 'label.true', defaultMessage: 'True' },
false: { id: 'labels.false', defaultMessage: 'False' }, false: { id: 'label.false', defaultMessage: 'False' },
equals: { id: 'labels.equals', defaultMessage: 'Equals' }, is: { id: 'label.is', defaultMessage: 'Is' },
doesNotEqual: { id: 'labels.does-not-equal', defaultMessage: 'Does not equal' }, isNot: { id: 'label.is-not', defaultMessage: 'Is not' },
greaterThan: { id: 'labels.greater-than', defaultMessage: 'Greater than' }, isSet: { id: 'label.is-set', defaultMessage: 'Is set' },
lessThan: { id: 'labels.less-than', defaultMessage: 'Less than' }, isNotSet: { id: 'label.is-not-set', defaultMessage: 'Is not set' },
greaterThanEquals: { id: 'labels.greater-than-equals', defaultMessage: 'Greater than or equals' }, greaterThan: { id: 'label.greater-than', defaultMessage: 'Greater than' },
lessThanEquals: { id: 'labels.less-than-equals', defaultMessage: 'Less than or equals' }, lessThan: { id: 'label.less-than', defaultMessage: 'Less than' },
contains: { id: 'labels.contains', defaultMessage: 'Contains' }, greaterThanEquals: { id: 'label.greater-than-equals', defaultMessage: 'Greater than or equals' },
doesNotContain: { id: 'labels.does-not-contain', defaultMessage: 'Does not contain' }, lessThanEquals: { id: 'label.less-than-equals', defaultMessage: 'Less than or equals' },
before: { id: 'labels.before', defaultMessage: 'Before' }, contains: { id: 'label.contains', defaultMessage: 'Contains' },
after: { id: 'labels.after', defaultMessage: 'After' }, doesNotContain: { id: 'label.does-not-contain', defaultMessage: 'Does not contain' },
total: { id: 'labels.total', defaultMessage: 'Total' }, before: { id: 'label.before', defaultMessage: 'Before' },
sum: { id: 'labels.sum', defaultMessage: 'Sum' }, after: { id: 'label.after', defaultMessage: 'After' },
average: { id: 'labels.average', defaultMessage: 'Average' }, total: { id: 'label.total', defaultMessage: 'Total' },
min: { id: 'labels.min', defaultMessage: 'Min' }, sum: { id: 'label.sum', defaultMessage: 'Sum' },
max: { id: 'labels.max', defaultMessage: 'Max' }, average: { id: 'label.average', defaultMessage: 'Average' },
unique: { id: 'labels.unique', defaultMessage: 'Unique' }, min: { id: 'label.min', defaultMessage: 'Min' },
value: { id: 'labels.value', defaultMessage: 'Value' }, max: { id: 'label.max', defaultMessage: 'Max' },
overview: { id: 'labels.overview', defaultMessage: 'Overview' }, unique: { id: 'label.unique', defaultMessage: 'Unique' },
totalRecords: { id: 'labels.total-records', defaultMessage: 'Total records' }, value: { id: 'label.value', defaultMessage: 'Value' },
overview: { id: 'label.overview', defaultMessage: 'Overview' },
totalRecords: { id: 'label.total-records', defaultMessage: 'Total records' },
insights: { id: 'label.insights', defaultMessage: 'Insights' }, insights: { id: 'label.insights', defaultMessage: 'Insights' },
retention: { id: 'label.retention', defaultMessage: 'Retention' },
dropoff: { id: 'label.dropoff', defaultMessage: 'Dropoff' }, dropoff: { id: 'label.dropoff', defaultMessage: 'Dropoff' },
referrer: { id: 'label.referrer', defaultMessage: 'Referrer' },
country: { id: 'label.country', defaultMessage: 'Country' },
region: { id: 'label.region', defaultMessage: 'Region' },
city: { id: 'label.city', defaultMessage: 'City' },
browser: { id: 'label.browser', defaultMessage: 'Browser' },
device: { id: 'label.device', defaultMessage: 'Device' },
pageTitle: { id: 'label.pageTitle', defaultMessage: 'Page title' },
day: { id: 'label.day', defaultMessage: 'Day' },
date: { id: 'label.date', defaultMessage: 'Date' },
pageOf: { id: 'label.page-of', defaultMessage: 'Page {current} of {total}' },
}); });
export const messages = defineMessages({ export const messages = defineMessages({
@ -230,7 +246,7 @@ export const messages = defineMessages({
}, },
noResultsFound: { noResultsFound: {
id: 'message.no-results-found', id: 'message.no-results-found',
defaultMessage: 'No results were found.', defaultMessage: 'No results found.',
}, },
noWebsitesConfigured: { noWebsitesConfigured: {
id: 'message.no-websites-configured', id: 'message.no-websites-configured',

View File

@ -1,16 +1,17 @@
import { useRouter } from 'next/router';
import FilterLink from 'components/common/FilterLink'; import FilterLink from 'components/common/FilterLink';
import MetricsTable from 'components/metrics/MetricsTable'; import MetricsTable from 'components/metrics/MetricsTable';
import { BROWSERS } from 'lib/constants';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import { useRouter } from 'next/router'; import useFormat from 'hooks/useFormat';
export function BrowsersTable({ websiteId, ...props }) { export function BrowsersTable({ websiteId, ...props }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { basePath } = useRouter(); const { basePath } = useRouter();
const { formatBrowser } = useFormat();
function renderLink({ x: browser }) { function renderLink({ x: browser }) {
return ( return (
<FilterLink id="browser" value={browser} label={BROWSERS[browser] || browser}> <FilterLink id="browser" value={browser} label={formatBrowser(browser)}>
<img <img
src={`${basePath}/images/browsers/${browser || 'unknown'}.png`} src={`${basePath}/images/browsers/${browser || 'unknown'}.png`}
alt={browser} alt={browser}

View File

@ -1,8 +1,7 @@
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import FilterLink from 'components/common/FilterLink'; import FilterLink from 'components/common/FilterLink';
import useCountryNames from 'hooks/useCountryNames'; import useCountryNames from 'hooks/useCountryNames';
import useLocale from 'hooks/useLocale'; import { useLocale, useMessages, useFormat } from 'hooks';
import useMessages from 'hooks/useMessages';
import MetricsTable from './MetricsTable'; import MetricsTable from './MetricsTable';
export function CountriesTable({ websiteId, ...props }) { export function CountriesTable({ websiteId, ...props }) {
@ -10,6 +9,7 @@ export function CountriesTable({ websiteId, ...props }) {
const countryNames = useCountryNames(locale); const countryNames = useCountryNames(locale);
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { basePath } = useRouter(); const { basePath } = useRouter();
const { formatCountry } = useFormat();
function renderLink({ x: code }) { function renderLink({ x: code }) {
return ( return (
@ -17,7 +17,7 @@ export function CountriesTable({ websiteId, ...props }) {
id="country" id="country"
className={locale} className={locale}
value={countryNames[code] && code} value={countryNames[code] && code}
label={countryNames[code]} label={formatCountry(code)}
> >
<img src={`${basePath}/images/flags/${code?.toLowerCase() || 'xx'}.png`} alt={code} /> <img src={`${basePath}/images/flags/${code?.toLowerCase() || 'xx'}.png`} alt={code} />
</FilterLink> </FilterLink>

View File

@ -2,18 +2,16 @@ import MetricsTable from './MetricsTable';
import FilterLink from 'components/common/FilterLink'; import FilterLink from 'components/common/FilterLink';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useFormat } from 'hooks';
export function DevicesTable({ websiteId, ...props }) { export function DevicesTable({ websiteId, ...props }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { basePath } = useRouter(); const { basePath } = useRouter();
const { formatDevice } = useFormat();
function renderLink({ x: device }) { function renderLink({ x: device }) {
return ( return (
<FilterLink <FilterLink id="device" value={labels[device] && device} label={formatDevice(device)}>
id="device"
value={labels[device] && device}
label={formatMessage(labels[device] || labels.unknown)}
>
<img <img
src={`${basePath}/images/device/${device?.toLowerCase() || 'unknown'}.png`} src={`${basePath}/images/device/${device?.toLowerCase() || 'unknown'}.png`}
alt={device} alt={device}

View File

@ -72,7 +72,7 @@ export function TestConsole() {
} }
const [websiteId] = id || []; const [websiteId] = id || [];
const website = data.find(({ id }) => websiteId === id); const website = data?.data.find(({ id }) => websiteId === id);
return ( return (
<Page loading={isLoading} error={error}> <Page loading={isLoading} error={error}>

View File

@ -12,16 +12,17 @@ import useDashboard from 'store/dashboard';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import useLocale from 'hooks/useLocale'; import useLocale from 'hooks/useLocale';
export function Dashboard({ userId }) { export function Dashboard() {
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const dashboard = useDashboard(); const dashboard = useDashboard();
const { showCharts, limit, editing } = dashboard; const { showCharts, limit, editing } = dashboard;
const [max, setMax] = useState(limit); const [max, setMax] = useState(limit);
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const { data, isLoading, error } = useQuery(['websites'], () => const { data, isLoading, error } = useQuery(['websites'], () =>
get('/websites', { userId, includeTeams: 1 }), get('/websites', { includeTeams: 1 }),
); );
const hasData = data && data.length !== 0; const hasData = data && data?.data.length !== 0;
const { dir } = useLocale(); const { dir } = useLocale();
function handleMore() { function handleMore() {
@ -47,8 +48,10 @@ export function Dashboard({ userId }) {
)} )}
{hasData && ( {hasData && (
<> <>
{editing && <DashboardEdit websites={data} />} {editing && <DashboardEdit websites={data?.data} />}
{!editing && <WebsiteChartList websites={data} showCharts={showCharts} limit={max} />} {!editing && (
<WebsiteChartList websites={data?.data} showCharts={showCharts} limit={max} />
)}
{max < data.length && ( {max < data.length && (
<Flexbox justifyContent="center"> <Flexbox justifyContent="center">
<Button onClick={handleMore}> <Button onClick={handleMore}>

View File

@ -28,6 +28,11 @@ export function EventDataMetricsBar({ websiteId }) {
<MetricsBar isLoading={isLoading} isFetched={isFetched} error={error}> <MetricsBar isLoading={isLoading} isFetched={isFetched} error={error}>
{!error && isFetched && ( {!error && isFetched && (
<> <>
<MetricCard
className={styles.card}
label={formatMessage(labels.events)}
value={data?.events}
/>
<MetricCard <MetricCard
className={styles.card} className={styles.card}
label={formatMessage(labels.fields)} label={formatMessage(labels.fields)}

View File

@ -2,6 +2,7 @@ import Link from 'next/link';
import { GridTable, GridColumn } from 'react-basics'; import { GridTable, GridColumn } from 'react-basics';
import { useMessages, usePageQuery } from 'hooks'; import { useMessages, usePageQuery } from 'hooks';
import Empty from 'components/common/Empty'; import Empty from 'components/common/Empty';
import { DATA_TYPES } from 'lib/constants';
export function EventDataTable({ data = [] }) { export function EventDataTable({ data = [] }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
@ -13,15 +14,18 @@ export function EventDataTable({ data = [] }) {
return ( return (
<GridTable data={data}> <GridTable data={data}>
<GridColumn name="event" label={formatMessage(labels.event)}> <GridColumn name="eventName" label={formatMessage(labels.event)}>
{row => ( {row => (
<Link href={resolveUrl({ event: row.event })} shallow={true}> <Link href={resolveUrl({ event: row.eventName })} shallow={true}>
{row.event} {row.eventName}
</Link> </Link>
)} )}
</GridColumn> </GridColumn>
<GridColumn name="field" label={formatMessage(labels.field)}> <GridColumn name="fieldName" label={formatMessage(labels.field)}>
{row => row.field} {row => row.fieldName}
</GridColumn>
<GridColumn name="dataType" label={formatMessage(labels.type)}>
{row => DATA_TYPES[row.dataType]}
</GridColumn> </GridColumn>
<GridColumn name="total" label={formatMessage(labels.totalRecords)}> <GridColumn name="total" label={formatMessage(labels.totalRecords)}>
{({ total }) => total.toLocaleString()} {({ total }) => total.toLocaleString()}

View File

@ -1,9 +1,10 @@
import { GridTable, GridColumn, Button, Icon, Text, Flexbox } from 'react-basics'; import { GridTable, GridColumn, Button, Icon, Text } from 'react-basics';
import { useMessages, usePageQuery } from 'hooks'; import { useMessages, usePageQuery } from 'hooks';
import Link from 'next/link'; import Link from 'next/link';
import Icons from 'components/icons'; import Icons from 'components/icons';
import PageHeader from 'components/layout/PageHeader'; import PageHeader from 'components/layout/PageHeader';
import Empty from 'components/common/Empty'; import Empty from 'components/common/Empty';
import { DATA_TYPES } from 'lib/constants';
export function EventDataValueTable({ data = [], event }) { export function EventDataValueTable({ data = [], event }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
@ -31,8 +32,11 @@ export function EventDataValueTable({ data = [], event }) {
{data.length <= 0 && <Empty />} {data.length <= 0 && <Empty />}
{data.length > 0 && ( {data.length > 0 && (
<GridTable data={data}> <GridTable data={data}>
<GridColumn name="field" label={formatMessage(labels.field)} /> <GridColumn name="fieldName" label={formatMessage(labels.field)} />
<GridColumn name="value" label={formatMessage(labels.value)} /> <GridColumn name="dataType" label={formatMessage(labels.type)}>
{row => DATA_TYPES[row.dataType]}
</GridColumn>
<GridColumn name="fieldValue" label={formatMessage(labels.value)} />
<GridColumn name="total" label={formatMessage(labels.totalRecords)} width="200px"> <GridColumn name="total" label={formatMessage(labels.totalRecords)} width="200px">
{({ total }) => total.toLocaleString()} {({ total }) => total.toLocaleString()}
</GridColumn> </GridColumn>

View File

@ -8,7 +8,7 @@ import useLocale from 'hooks/useLocale';
import useCountryNames from 'hooks/useCountryNames'; import useCountryNames from 'hooks/useCountryNames';
import { BROWSERS } from 'lib/constants'; import { BROWSERS } from 'lib/constants';
import { stringToColor } from 'lib/format'; import { stringToColor } from 'lib/format';
import { dateFormat } from 'lib/date'; import { formatDate } from 'lib/date';
import { safeDecodeURI } from 'next-basics'; import { safeDecodeURI } from 'next-basics';
import Icons from 'components/icons'; import Icons from 'components/icons';
import styles from './RealtimeLog.module.css'; import styles from './RealtimeLog.module.css';
@ -50,7 +50,7 @@ export function RealtimeLog({ data, websiteDomain }) {
}, },
]; ];
const getTime = ({ createdAt }) => dateFormat(new Date(createdAt), 'pp', locale); const getTime = ({ createdAt }) => formatDate(new Date(createdAt), 'pp', locale);
const getColor = ({ id, sessionId }) => stringToColor(sessionId || id); const getColor = ({ id, sessionId }) => stringToColor(sessionId || id);

View File

@ -6,7 +6,12 @@ import { useContext } from 'react';
import { ReportContext } from './Report'; import { ReportContext } from './Report';
import { useMessages } from 'hooks'; import { useMessages } from 'hooks';
export function BaseParameters() { export function BaseParameters({
showWebsiteSelect = true,
allowWebsiteSelect = true,
showDateSelect = true,
allowDateSelect = true,
}) {
const { report, updateReport } = useContext(ReportContext); const { report, updateReport } = useContext(ReportContext);
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
@ -24,17 +29,25 @@ export function BaseParameters() {
return ( return (
<> <>
<FormRow label={formatMessage(labels.website)}> {showWebsiteSelect && (
<WebsiteSelect websiteId={websiteId} onSelect={handleWebsiteSelect} /> <FormRow label={formatMessage(labels.website)}>
</FormRow> {allowWebsiteSelect && (
<FormRow label={formatMessage(labels.dateRange)}> <WebsiteSelect websiteId={websiteId} onSelect={handleWebsiteSelect} />
<DateFilter )}
value={value} </FormRow>
startDate={startDate} )}
endDate={endDate} {showDateSelect && (
onChange={handleDateChange} <FormRow label={formatMessage(labels.dateRange)}>
/> {allowDateSelect && (
</FormRow> <DateFilter
value={value}
startDate={startDate}
endDate={endDate}
onChange={handleDateChange}
/>
)}
</FormRow>
)}
</> </>
); );
} }

View File

@ -1,55 +1,58 @@
import { useState } from 'react'; import { useState } from 'react';
import { Form, FormRow, Menu, Item, Flexbox, Dropdown, TextField, Button } from 'react-basics'; import { Form, FormRow, Item, Flexbox, Dropdown, Button } from 'react-basics';
import { useFilters } from 'hooks'; import { useMessages, useFilters, useFormat } from 'hooks';
import styles from './FieldFilterForm.module.css'; import styles from './FieldFilterForm.module.css';
export default function FieldFilterForm({ name, type, onSelect }) { export default function FieldFilterForm({ name, label, type, values, onSelect }) {
const [filter, setFilter] = useState(''); const { formatMessage, labels } = useMessages();
const [value, setValue] = useState(''); const [filter, setFilter] = useState('eq');
const { filters, types } = useFilters(); const [value, setValue] = useState();
const items = types[type]; const { getFilters } = useFilters();
const { formatValue } = useFormat();
const filters = getFilters(type);
const renderValue = value => { const renderFilterValue = value => {
return filters[value]; return filters.find(f => f.value === value)?.label;
}; };
if (type === 'boolean') { const renderValue = value => {
return ( return formatValue(value, name);
<Form> };
<FormRow label={name}>
<Menu onSelect={value => onSelect({ name, type, value: ['eq', value] })}> const handleAdd = () => {
{items.map(value => { onSelect({ name, type, filter, value });
return <Item key={value}>{filters[value]}</Item>; };
})}
</Menu>
</FormRow>
</Form>
);
}
return ( return (
<Form> <Form>
<FormRow label={name} className={styles.filter}> <FormRow label={label} className={styles.filter}>
<Flexbox gap={10}> <Flexbox gap={10}>
<Dropdown <Dropdown
className={styles.dropdown} className={styles.dropdown}
items={items} items={filters}
value={filter} value={filter}
renderValue={renderValue} renderValue={renderFilterValue}
onChange={setFilter} onChange={setFilter}
> >
{value => { {({ value, label }) => {
return <Item key={value}>{filters[value]}</Item>; return <Item key={value}>{label}</Item>;
}}
</Dropdown>
<Dropdown
className={styles.dropdown}
menuProps={{ className: styles.menu }}
items={values}
value={value}
renderValue={renderValue}
onChange={setValue}
>
{value => {
return <Item key={value}>{formatValue(value, name)}</Item>;
}} }}
</Dropdown> </Dropdown>
<TextField value={value} onChange={e => setValue(e.target.value)} autoFocus={true} />
</Flexbox> </Flexbox>
<Button <Button variant="primary" onClick={handleAdd} disabled={!filter || !value}>
variant="primary" {formatMessage(labels.add)}
onClick={() => onSelect({ name, type, value: [filter, value] })}
disabled={!filter || !value}
>
Add
</Button> </Button>
</FormRow> </FormRow>
</Form> </Form>

View File

@ -15,3 +15,8 @@
.dropdown { .dropdown {
min-width: 180px; min-width: 180px;
} }
.menu {
min-width: 360px;
max-height: 300px;
}

View File

@ -2,18 +2,18 @@ import { Menu, Item, Form, FormRow } from 'react-basics';
import { useMessages } from 'hooks'; import { useMessages } from 'hooks';
import styles from './FieldSelectForm.module.css'; import styles from './FieldSelectForm.module.css';
export default function FieldSelectForm({ fields, onSelect }) { export default function FieldSelectForm({ items, onSelect, showType = true }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
return ( return (
<Form> <Form>
<FormRow label={formatMessage(labels.fields)}> <FormRow label={formatMessage(labels.fields)}>
<Menu className={styles.menu} onSelect={key => onSelect(fields[key])}> <Menu className={styles.menu} onSelect={key => onSelect(items[key])}>
{fields.map(({ label, name, type }, index) => { {items.map(({ name, label, type }, index) => {
return ( return (
<Item key={index} className={styles.item}> <Item key={index} className={styles.item}>
<div>{label || name}</div> <div>{label || name}</div>
<div className={styles.type}>{type}</div> {showType && type && <div className={styles.type}>{type}</div>}
</Item> </Item>
); );
})} })}

View File

@ -0,0 +1,42 @@
import { useState } from 'react';
import FieldSelectForm from './FieldSelectForm';
import FieldFilterForm from './FieldFilterForm';
import { useApi } from 'hooks';
import { Loading } from 'react-basics';
function useValues(websiteId, type) {
const { get, useQuery } = useApi();
const { data, error, isLoading } = useQuery(
['websites:values', websiteId, type],
() =>
get(`/websites/${websiteId}/values`, {
type,
}),
{ enabled: !!(websiteId && type) },
);
return { data, error, isLoading };
}
export default function FilterSelectForm({ websiteId, items, onSelect }) {
const [field, setField] = useState();
const { data, isLoading } = useValues(websiteId, field?.name);
if (!field) {
return <FieldSelectForm items={items} onSelect={setField} showType={false} />;
}
if (isLoading) {
return <Loading position="center" icon="dots" />;
}
return (
<FieldFilterForm
name={field?.name}
label={field?.label}
type={field?.type}
values={data}
onSelect={onSelect}
/>
);
}

View File

@ -1,29 +1,15 @@
import { createPortal } from 'react-dom';
import { useDocumentClick, useKeyDown } from 'react-basics';
import classNames from 'classnames'; import classNames from 'classnames';
import styles from './PopupForm.module.css'; import styles from './PopupForm.module.css';
export function PopupForm({ element, className, children, onClose }) { export function PopupForm({ className, style, children }) {
const { right, top } = element.getBoundingClientRect(); return (
const style = { position: 'absolute', left: right, top }; <div
className={classNames(styles.form, className)}
useKeyDown('Escape', onClose); style={style}
onClick={e => e.stopPropagation()}
useDocumentClick(e => { >
if (e.target !== element && !element?.parentElement?.contains(e.target)) {
onClose();
}
});
const handleClick = e => {
e.stopPropagation();
};
return createPortal(
<div className={classNames(styles.form, className)} style={style} onClick={handleClick}>
{children} {children}
</div>, </div>
document.body,
); );
} }

View File

@ -3,8 +3,8 @@
background: var(--base50); background: var(--base50);
min-width: 300px; min-width: 300px;
padding: 20px; padding: 20px;
margin-left: 30px;
border: 1px solid var(--base400); border: 1px solid var(--base400);
border-radius: var(--border-radius); border-radius: var(--border-radius);
box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.1); box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.1);
z-index: 1000;
} }

View File

@ -8,6 +8,8 @@ export const ReportContext = createContext(null);
export function Report({ reportId, defaultParameters, children, ...props }) { export function Report({ reportId, defaultParameters, children, ...props }) {
const report = useReport(reportId, defaultParameters); const report = useReport(reportId, defaultParameters);
//console.log({ report });
return ( return (
<ReportContext.Provider value={{ ...report }}> <ReportContext.Provider value={{ ...report }}>
<Page {...props} className={styles.container}> <Page {...props} className={styles.container}>

View File

@ -1,9 +1,13 @@
import FunnelReport from './funnel/FunnelReport'; import FunnelReport from './funnel/FunnelReport';
import EventDataReport from './event-data/EventDataReport'; import EventDataReport from './event-data/EventDataReport';
import InsightsReport from './insights/InsightsReport';
import RetentionReport from './retention/RetentionReport';
const reports = { const reports = {
funnel: FunnelReport, funnel: FunnelReport,
'event-data': EventDataReport, 'event-data': EventDataReport,
insights: InsightsReport,
retention: RetentionReport,
}; };
export default function ReportDetails({ reportId, reportType }) { export default function ReportDetails({ reportId, reportType }) {

View File

@ -4,6 +4,7 @@ import Page from 'components/layout/Page';
import PageHeader from 'components/layout/PageHeader'; import PageHeader from 'components/layout/PageHeader';
import Funnel from 'assets/funnel.svg'; import Funnel from 'assets/funnel.svg';
import Lightbulb from 'assets/lightbulb.svg'; import Lightbulb from 'assets/lightbulb.svg';
import Magnet from 'assets/magnet.svg';
import styles from './ReportTemplates.module.css'; import styles from './ReportTemplates.module.css';
import { useMessages } from 'hooks'; import { useMessages } from 'hooks';
@ -33,20 +34,24 @@ export function ReportTemplates() {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const reports = [ const reports = [
/*
{ {
title: formatMessage(labels.insights), title: formatMessage(labels.insights),
description: 'Dive deeper into your data by using segments and filters.', description: 'Dive deeper into your data by using segments and filters.',
url: '/reports/insights', url: '/reports/insights',
icon: <Lightbulb />, icon: <Lightbulb />,
}, },
*/
{ {
title: formatMessage(labels.funnel), title: formatMessage(labels.funnel),
description: 'Understand the conversion and drop-off rate of users.', description: 'Understand the conversion and drop-off rate of users.',
url: '/reports/funnel', url: '/reports/funnel',
icon: <Funnel />, icon: <Funnel />,
}, },
{
title: formatMessage(labels.retention),
description: 'Measure you website stickiness by tracking how often users return.',
url: '/reports/retention',
icon: <Magnet />,
},
]; ];
return ( return (

View File

@ -2,7 +2,6 @@
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
gap: 20px; gap: 20px;
width: 360px;
} }
.report { .report {

View File

@ -1,27 +1,59 @@
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
import Page from 'components/layout/Page'; import Page from 'components/layout/Page';
import PageHeader from 'components/layout/PageHeader'; import PageHeader from 'components/layout/PageHeader';
import Link from 'next/link';
import { Button, Icon, Icons, Text } from 'react-basics';
import { useMessages, useReports } from 'hooks'; import { useMessages, useReports } from 'hooks';
import Link from 'next/link';
import useConfig from 'hooks/useConfig';
import { Button, Icon, Icons, Text } from 'react-basics';
import ReportsTable from './ReportsTable'; import ReportsTable from './ReportsTable';
export function ReportsPage() { export function ReportsPage() {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const { reports, error, isLoading } = useReports(); const { cloudMode } = useConfig();
const {
reports,
error,
isLoading,
deleteReport,
filter,
handleFilterChange,
handlePageChange,
handlePageSizeChange,
} = useReports();
const hasData = (reports && reports?.data.length !== 0) || filter;
return ( return (
<Page loading={isLoading} error={error}> <Page loading={isLoading} error={error}>
<PageHeader title={formatMessage(labels.reports)}> <PageHeader title={formatMessage(labels.reports)}>
<Link href="/reports/create"> {!cloudMode && (
<Button variant="primary"> <Link href="/reports/create">
<Icon> <Button variant="primary">
<Icons.Plus /> <Icon>
</Icon> <Icons.Plus />
<Text>{formatMessage(labels.createReport)}</Text> </Icon>
</Button> <Text>{formatMessage(labels.createReport)}</Text>
</Link> </Button>
</Link>
)}
</PageHeader> </PageHeader>
<ReportsTable data={reports} />
{hasData && (
<ReportsTable
data={reports}
showSearch={true}
showPaging={true}
onFilterChange={handleFilterChange}
onPageChange={handlePageChange}
onPageSizeChange={handlePageSizeChange}
onDelete={deleteReport}
filterValue={filter}
showDomain={true}
/>
)}
{!hasData && (
<EmptyPlaceholder message={formatMessage(messages.noDataAvailable)}></EmptyPlaceholder>
)}
</Page> </Page>
); );
} }

View File

@ -1,18 +1,36 @@
import { useState } from 'react'; import ConfirmDeleteForm from 'components/common/ConfirmDeleteForm';
import { Flexbox, Icon, Icons, Text, Button, Modal } from 'react-basics';
import LinkButton from 'components/common/LinkButton'; import LinkButton from 'components/common/LinkButton';
import SettingsTable from 'components/common/SettingsTable'; import SettingsTable from 'components/common/SettingsTable';
import ConfirmDeleteForm from 'components/common/ConfirmDeleteForm';
import { useMessages } from 'hooks'; import { useMessages } from 'hooks';
import useUser from 'hooks/useUser';
import { useState } from 'react';
import { Button, Flexbox, Icon, Icons, Modal, Text } from 'react-basics';
export function ReportsTable({ data = [], onDelete = () => {} }) { export function ReportsTable({
data = [],
onDelete = () => {},
filterValue,
onFilterChange,
onPageChange,
onPageSizeChange,
showDomain,
}) {
const [report, setReport] = useState(null); const [report, setReport] = useState(null);
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { user } = useUser();
const domainColumn = [
{
name: 'domain',
label: formatMessage(labels.domain),
},
];
const columns = [ const columns = [
{ name: 'name', label: formatMessage(labels.name) }, { name: 'name', label: formatMessage(labels.name) },
{ name: 'description', label: formatMessage(labels.description) }, { name: 'description', label: formatMessage(labels.description) },
{ name: 'type', label: formatMessage(labels.type) }, { name: 'type', label: formatMessage(labels.type) },
...(showDomain ? domainColumn : []),
{ name: 'action', label: ' ' }, { name: 'action', label: ' ' },
]; ];
@ -22,13 +40,26 @@ export function ReportsTable({ data = [], onDelete = () => {} }) {
return ( return (
<> <>
<SettingsTable columns={columns} data={data}> <SettingsTable
columns={columns}
data={data}
showSearch={true}
showPaging={true}
onFilterChange={onFilterChange}
onPageChange={onPageChange}
onPageSizeChange={onPageSizeChange}
filterValue={filterValue}
>
{row => { {row => {
const { id } = row; const { id, userId: reportOwnerId, website } = row;
if (showDomain) {
row.domain = website.domain;
}
return ( return (
<Flexbox gap={10}> <Flexbox gap={10}>
<LinkButton href={`/reports/${id}`}>{formatMessage(labels.view)}</LinkButton> <LinkButton href={`/reports/${id}`}>{formatMessage(labels.view)}</LinkButton>
{!showDomain || user.id === reportOwnerId || user.id === website?.userId}
<Button onClick={() => setReport(row)}> <Button onClick={() => setReport(row)}>
<Icon> <Icon>
<Icons.Trash /> <Icons.Trash />

View File

@ -1,5 +1,5 @@
import { useCallback, useContext, useMemo } from 'react'; import { useCallback, useContext, useMemo } from 'react';
import { Loading } from 'react-basics'; import { Loading, StatusLight } from 'react-basics';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import useTheme from 'hooks/useTheme'; import useTheme from 'hooks/useTheme';
import BarChart from 'components/metrics/BarChart'; import BarChart from 'components/metrics/BarChart';
@ -22,14 +22,25 @@ export function FunnelChart({ className, loading }) {
); );
const renderTooltipPopup = useCallback((setTooltipPopup, model) => { const renderTooltipPopup = useCallback((setTooltipPopup, model) => {
const { opacity, dataPoints } = model.tooltip; const { opacity, labelColors, dataPoints } = model.tooltip;
if (!dataPoints?.length || !opacity) { if (!dataPoints?.length || !opacity) {
setTooltipPopup(null); setTooltipPopup(null);
return; return;
} }
setTooltipPopup(`${formatLongNumber(dataPoints[0].raw.y)} ${formatMessage(labels.visitors)}`); setTooltipPopup(
<>
<div>
{formatLongNumber(dataPoints[0].raw.y)} {formatMessage(labels.visitors)}
</div>
<div>
<StatusLight color={labelColors?.[0]?.backgroundColor}>
{formatLongNumber(dataPoints[0].raw.z)}% {formatMessage(labels.dropoff)}
</StatusLight>
</div>
</>,
);
}, []); }, []);
const datasets = useMemo(() => { const datasets = useMemo(() => {

View File

@ -16,6 +16,7 @@ import UrlAddForm from './UrlAddForm';
import { ReportContext } from 'components/pages/reports/Report'; import { ReportContext } from 'components/pages/reports/Report';
import BaseParameters from '../BaseParameters'; import BaseParameters from '../BaseParameters';
import ParameterList from '../ParameterList'; import ParameterList from '../ParameterList';
import PopupForm from '../PopupForm';
export function FunnelParameters() { export function FunnelParameters() {
const { report, runReport, updateReport, isRunning } = useContext(ReportContext); const { report, runReport, updateReport, isRunning } = useContext(ReportContext);
@ -53,7 +54,11 @@ export function FunnelParameters() {
</Icon> </Icon>
<Popup position="bottom" alignment="start"> <Popup position="bottom" alignment="start">
{(close, element) => { {(close, element) => {
return <UrlAddForm element={element} onAdd={handleAddUrl} onClose={close} />; return (
<PopupForm element={element} onClose={close}>
<UrlAddForm onAdd={handleAddUrl} />
</PopupForm>
);
}} }}
</Popup> </Popup>
</PopupTrigger> </PopupTrigger>

View File

@ -6,9 +6,10 @@ import ReportHeader from '../ReportHeader';
import ReportMenu from '../ReportMenu'; import ReportMenu from '../ReportMenu';
import ReportBody from '../ReportBody'; import ReportBody from '../ReportBody';
import Funnel from 'assets/funnel.svg'; import Funnel from 'assets/funnel.svg';
import { REPORT_TYPES } from 'lib/constants';
const defaultParameters = { const defaultParameters = {
type: 'funnel', type: REPORT_TYPES.funnel,
parameters: { window: 60, urls: [] }, parameters: { window: 60, urls: [] },
}; };

View File

@ -2,16 +2,14 @@ import { useState } from 'react';
import { useMessages } from 'hooks'; import { useMessages } from 'hooks';
import { Button, Form, FormRow, TextField, Flexbox } from 'react-basics'; import { Button, Form, FormRow, TextField, Flexbox } from 'react-basics';
import styles from './UrlAddForm.module.css'; import styles from './UrlAddForm.module.css';
import PopupForm from '../PopupForm';
export function UrlAddForm({ defaultValue = '', element, onAdd, onClose }) { export function UrlAddForm({ defaultValue = '', onAdd }) {
const [url, setUrl] = useState(defaultValue); const [url, setUrl] = useState(defaultValue);
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const handleSave = () => { const handleSave = () => {
onAdd(url); onAdd(url);
setUrl(''); setUrl('');
onClose();
}; };
const handleChange = e => { const handleChange = e => {
@ -26,25 +24,23 @@ export function UrlAddForm({ defaultValue = '', element, onAdd, onClose }) {
}; };
return ( return (
<PopupForm element={element}> <Form>
<Form> <FormRow label={formatMessage(labels.url)}>
<FormRow label={formatMessage(labels.url)}> <Flexbox gap={10}>
<Flexbox gap={10}> <TextField
<TextField className={styles.input}
className={styles.input} value={url}
value={url} onChange={handleChange}
onChange={handleChange} autoFocus={true}
autoFocus={true} autoComplete="off"
autoComplete="off" onKeyDown={handleKeyDown}
onKeyDown={handleKeyDown} />
/> <Button variant="primary" onClick={handleSave}>
<Button variant="primary" onClick={handleSave}> {formatMessage(labels.add)}
{formatMessage(labels.add)} </Button>
</Button> </Flexbox>
</Flexbox> </FormRow>
</FormRow> </Form>
</Form>
</PopupForm>
); );
} }

View File

@ -1,69 +1,104 @@
import { useContext, useRef } from 'react'; import { useContext, useRef } from 'react';
import { useMessages } from 'hooks'; import { useFormat, useMessages, useFilters } from 'hooks';
import { Form, FormRow, FormButtons, SubmitButton, PopupTrigger, Icon, Popup } from 'react-basics'; import {
Form,
FormRow,
FormButtons,
SubmitButton,
PopupTrigger,
Icon,
Popup,
TooltipPopup,
} from 'react-basics';
import { ReportContext } from 'components/pages/reports/Report'; import { ReportContext } from 'components/pages/reports/Report';
import { REPORT_PARAMETERS, WEBSITE_EVENT_FIELDS } from 'lib/constants';
import Icons from 'components/icons'; import Icons from 'components/icons';
import BaseParameters from '../BaseParameters'; import BaseParameters from '../BaseParameters';
import FieldAddForm from '../FieldAddForm';
import ParameterList from '../ParameterList'; import ParameterList from '../ParameterList';
import styles from './InsightsParameters.module.css'; import styles from './InsightsParameters.module.css';
import PopupForm from '../PopupForm';
import FilterSelectForm from '../FilterSelectForm';
import FieldSelectForm from '../FieldSelectForm';
export function InsightsParameters() { export function InsightsParameters() {
const { report, runReport, updateReport, isRunning } = useContext(ReportContext); const { report, runReport, updateReport, isRunning } = useContext(ReportContext);
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { formatValue } = useFormat();
const { filterLabels } = useFilters();
const ref = useRef(null); const ref = useRef(null);
const { parameters } = report || {}; const { parameters } = report || {};
const { websiteId, dateRange, fields, filters, groups } = parameters || {}; const { websiteId, dateRange, fields, filters } = parameters || {};
const queryEnabled = websiteId && dateRange && fields?.length; const { startDate, endDate } = dateRange || {};
const fieldOptions = Object.keys(WEBSITE_EVENT_FIELDS).map(key => WEBSITE_EVENT_FIELDS[key]); const parametersSelected = websiteId && startDate && endDate;
const queryEnabled = websiteId && dateRange && (fields?.length || filters?.length);
const fieldOptions = [
{ name: 'url', type: 'string', label: formatMessage(labels.url) },
{ name: 'title', type: 'string', label: formatMessage(labels.pageTitle) },
{ name: 'referrer', type: 'string', label: formatMessage(labels.referrer) },
{ name: 'query', type: 'string', label: formatMessage(labels.query) },
{ name: 'browser', type: 'string', label: formatMessage(labels.browser) },
{ name: 'os', type: 'string', label: formatMessage(labels.os) },
{ name: 'device', type: 'string', label: formatMessage(labels.device) },
{ name: 'country', type: 'string', label: formatMessage(labels.country) },
{ name: 'region', type: 'string', label: formatMessage(labels.region) },
{ name: 'city', type: 'string', label: formatMessage(labels.city) },
];
const parameterGroups = [ const parameterGroups = [
{ label: formatMessage(labels.fields), group: REPORT_PARAMETERS.fields }, { id: 'fields', label: formatMessage(labels.fields) },
{ label: formatMessage(labels.filters), group: REPORT_PARAMETERS.filters }, { id: 'filters', label: formatMessage(labels.filters) },
{ label: formatMessage(labels.breakdown), group: REPORT_PARAMETERS.groups },
]; ];
const parameterData = { const parameterData = {
fields, fields,
filters, filters,
groups,
}; };
const handleSubmit = values => { const handleSubmit = values => {
runReport(values); runReport(values);
}; };
const handleAdd = (group, value) => { const handleAdd = (id, value) => {
const data = parameterData[group]; const data = parameterData[id];
if (!data.find(({ name }) => name === value.name)) { if (!data.find(({ name }) => name === value.name)) {
updateReport({ parameters: { [group]: data.concat(value) } }); updateReport({ parameters: { [id]: data.concat(value) } });
} }
}; };
const handleRemove = (group, index) => { const handleRemove = (id, index) => {
const data = [...parameterData[group]]; const data = [...parameterData[id]];
data.splice(index, 1); data.splice(index, 1);
updateReport({ parameters: { [group]: data } }); updateReport({ parameters: { [id]: data } });
}; };
const AddButton = ({ group }) => { const AddButton = ({ id }) => {
return ( return (
<PopupTrigger> <PopupTrigger>
<Icon> <TooltipPopup label={formatMessage(labels.add)} position="top">
<Icons.Plus /> <Icon>
</Icon> <Icons.Plus />
<Popup position="bottom" alignment="start"> </Icon>
{(close, element) => { </TooltipPopup>
<Popup position="bottom" alignment="start" className={styles.popup}>
{close => {
return ( return (
<FieldAddForm <PopupForm onClose={close}>
fields={fieldOptions} {id === 'fields' && (
group={group} <FieldSelectForm
element={element} items={fieldOptions}
onAdd={handleAdd} onSelect={handleAdd.bind(null, id)}
onClose={close} showType={false}
/> />
)}
{id === 'filters' && (
<FilterSelectForm
websiteId={websiteId}
items={fieldOptions}
onSelect={handleAdd.bind(null, id)}
/>
)}
</PopupForm>
); );
}} }}
</Popup> </Popup>
@ -74,41 +109,33 @@ export function InsightsParameters() {
return ( return (
<Form ref={ref} values={parameters} onSubmit={handleSubmit}> <Form ref={ref} values={parameters} onSubmit={handleSubmit}>
<BaseParameters /> <BaseParameters />
{parameterGroups.map(({ label, group }) => { {parametersSelected &&
return ( parameterGroups.map(({ id, label }) => {
<FormRow key={label} label={label} action={<AddButton group={group} onAdd={handleAdd} />}> return (
<ParameterList <FormRow key={label} label={label} action={<AddButton id={id} onAdd={handleAdd} />}>
items={parameterData[group]} <ParameterList items={parameterData[id]} onRemove={index => handleRemove(id, index)}>
onRemove={index => handleRemove(group, index)} {({ name, filter, value }) => {
> return (
{({ name, value }) => { <div className={styles.parameter}>
return ( {id === 'fields' && (
<div className={styles.parameter}> <>
{group === REPORT_PARAMETERS.fields && ( <div>{fieldOptions.find(f => f.name === name)?.label}</div>
<> </>
<div>{name}</div> )}
<div className={styles.op}>{value}</div> {id === 'filters' && (
</> <>
)} <div>{fieldOptions.find(f => f.name === name)?.label}</div>
{group === REPORT_PARAMETERS.filters && ( <div className={styles.op}>{filterLabels[filter]}</div>
<> <div>{formatValue(value, name)}</div>
<div>{name}</div> </>
<div className={styles.op}>{value[0]}</div> )}
<div>{value[1]}</div> </div>
</> );
)} }}
{group === REPORT_PARAMETERS.groups && ( </ParameterList>
<> </FormRow>
<div>{name}</div> );
</> })}
)}
</div>
);
}}
</ParameterList>
</FormRow>
);
})}
<FormButtons> <FormButtons>
<SubmitButton variant="primary" disabled={!queryEnabled} loading={isRunning}> <SubmitButton variant="primary" disabled={!queryEnabled} loading={isRunning}>
{formatMessage(labels.runQuery)} {formatMessage(labels.runQuery)}

View File

@ -10,3 +10,8 @@
.op { .op {
font-weight: bold; font-weight: bold;
} }
.popup {
margin-top: -10px;
margin-left: 30px;
}

View File

@ -5,10 +5,11 @@ import ReportBody from '../ReportBody';
import InsightsParameters from './InsightsParameters'; import InsightsParameters from './InsightsParameters';
import InsightsTable from './InsightsTable'; import InsightsTable from './InsightsTable';
import Lightbulb from 'assets/lightbulb.svg'; import Lightbulb from 'assets/lightbulb.svg';
import { REPORT_TYPES } from 'lib/constants';
const defaultParameters = { const defaultParameters = {
type: 'insights', type: REPORT_TYPES.insights,
parameters: { fields: [], filters: [], groups: [] }, parameters: { fields: [], filters: [] },
}; };
export default function InsightsReport({ reportId }) { export default function InsightsReport({ reportId }) {

View File

@ -1,17 +1,47 @@
import { useContext } from 'react'; import { useContext, useEffect, useState } from 'react';
import { GridTable, GridColumn } from 'react-basics'; import { GridTable, GridColumn } from 'react-basics';
import { useMessages } from 'hooks'; import { useFormat, useMessages } from 'hooks';
import { ReportContext } from '../Report'; import { ReportContext } from '../Report';
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
export function InsightsTable() { export function InsightsTable() {
const [fields, setFields] = useState();
const { report } = useContext(ReportContext); const { report } = useContext(ReportContext);
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { formatValue } = useFormat();
useEffect(
() => {
setFields(report?.parameters?.fields);
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[report?.data],
);
if (!fields || !report?.parameters) {
return <EmptyPlaceholder />;
}
return ( return (
<GridTable data={report?.data || []}> <GridTable data={report?.data || []}>
<GridColumn name="field" label={formatMessage(labels.field)} /> {fields.map(({ name, label }) => {
<GridColumn name="value" label={formatMessage(labels.value)} /> return (
<GridColumn name="total" label={formatMessage(labels.total)} /> <GridColumn key={name} name={name} label={label}>
{row => formatValue(row[name], name)}
</GridColumn>
);
})}
<GridColumn
name="visitors"
label={formatMessage(labels.visitors)}
width="100px"
alignment="end"
>
{row => row.visitors.toLocaleString()}
</GridColumn>
<GridColumn name="views" label={formatMessage(labels.views)} width="100px" alignment="end">
{row => row.views.toLocaleString()}
</GridColumn>
</GridTable> </GridTable>
); );
} }

View File

@ -0,0 +1,46 @@
import { useContext, useRef } from 'react';
import { useMessages } from 'hooks';
import { Form, FormButtons, FormRow, SubmitButton } from 'react-basics';
import { ReportContext } from 'components/pages/reports/Report';
import { MonthSelect } from 'components/input/MonthSelect';
import BaseParameters from '../BaseParameters';
import { parseDateRange } from 'lib/date';
export function RetentionParameters() {
const { report, runReport, isRunning, updateReport } = useContext(ReportContext);
const { formatMessage, labels } = useMessages();
const ref = useRef(null);
const { parameters } = report || {};
const { websiteId, dateRange } = parameters || {};
const { startDate } = dateRange || {};
const queryDisabled = !websiteId || !dateRange;
const handleSubmit = (data, e) => {
e.stopPropagation();
e.preventDefault();
if (!queryDisabled) {
runReport(data);
}
};
const handleDateChange = value => {
updateReport({ parameters: { dateRange: { ...parseDateRange(value) } } });
};
return (
<Form ref={ref} values={parameters} onSubmit={handleSubmit} preventSubmit={true}>
<BaseParameters showDateSelect={false} />
<FormRow label={formatMessage(labels.date)}>
<MonthSelect date={startDate} onChange={handleDateChange} />
</FormRow>
<FormButtons>
<SubmitButton variant="primary" disabled={queryDisabled} loading={isRunning}>
{formatMessage(labels.runQuery)}
</SubmitButton>
</FormButtons>
</Form>
);
}
export default RetentionParameters;

View File

@ -0,0 +1,33 @@
import RetentionTable from './RetentionTable';
import RetentionParameters from './RetentionParameters';
import Report from '../Report';
import ReportHeader from '../ReportHeader';
import ReportMenu from '../ReportMenu';
import ReportBody from '../ReportBody';
import Magnet from 'assets/magnet.svg';
import { REPORT_TYPES } from 'lib/constants';
import { parseDateRange } from 'lib/date';
import { endOfMonth, startOfMonth } from 'date-fns';
const defaultParameters = {
type: REPORT_TYPES.retention,
parameters: {
dateRange: parseDateRange(
`range:${startOfMonth(new Date()).getTime()}:${endOfMonth(new Date()).getTime()}`,
),
},
};
export default function RetentionReport({ reportId }) {
return (
<Report reportId={reportId} defaultParameters={defaultParameters}>
<ReportHeader icon={<Magnet />} />
<ReportMenu>
<RetentionParameters />
</ReportMenu>
<ReportBody>
<RetentionTable />
</ReportBody>
</Report>
);
}

View File

@ -0,0 +1,10 @@
.filters {
display: flex;
flex-direction: column;
justify-content: space-between;
border: 1px solid var(--base400);
border-radius: var(--border-radius);
line-height: 32px;
padding: 10px;
overflow: hidden;
}

View File

@ -0,0 +1,78 @@
import { useContext } from 'react';
import classNames from 'classnames';
import { ReportContext } from '../Report';
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
import { useMessages } from 'hooks';
import { formatDate } from 'lib/date';
import styles from './RetentionTable.module.css';
export function RetentionTable() {
const { formatMessage, labels } = useMessages();
const { report } = useContext(ReportContext);
const { data } = report || {};
if (!data) {
return <EmptyPlaceholder />;
}
const days = [1, 2, 3, 4, 5, 6, 7, 14, 21, 28];
const rows = data.reduce((arr, row) => {
const { date, visitors, day } = row;
if (day === 0) {
return arr.concat({
date,
visitors,
records: days
.reduce((arr, day) => {
arr[day] = data.find(x => x.date === date && x.day === day);
return arr;
}, [])
.filter(n => n),
});
}
return arr;
}, []);
const totalDays = rows.length;
return (
<>
<div className={styles.table}>
<div className={classNames(styles.row, styles.header)}>
<div className={styles.date}>{formatMessage(labels.date)}</div>
<div className={styles.visitors}>{formatMessage(labels.visitors)}</div>
{days.map(n => (
<div key={n} className={styles.day}>
{formatMessage(labels.day)} {n}
</div>
))}
</div>
{rows.map(({ date, visitors, records }, rowIndex) => {
return (
<div key={rowIndex} className={styles.row}>
<div className={styles.date}>{formatDate(`${date} 00:00:00`, 'PP')}</div>
<div className={styles.visitors}>{visitors}</div>
{days.map(day => {
if (totalDays - rowIndex < day) {
return null;
}
const percentage = records[day]?.percentage;
return (
<div
key={day}
className={classNames(styles.cell, { [styles.empty]: !percentage })}
>
{percentage ? `${percentage.toFixed(2)}%` : ''}
</div>
);
})}
</div>
);
})}
</div>
</>
);
}
export default RetentionTable;

View File

@ -0,0 +1,52 @@
.table {
display: flex;
flex-direction: column;
}
.header {
font-weight: 700;
}
.row {
display: flex;
flex-direction: row;
gap: 1px;
margin-bottom: 1px;
}
.cell {
display: flex;
align-items: center;
justify-content: center;
width: 60px;
height: 60px;
background: var(--blue200);
border-radius: var(--border-radius);
}
.date {
display: flex;
align-items: center;
min-width: 160px;
}
.visitors {
display: flex;
align-items: center;
min-width: 80px;
}
.day {
display: flex;
align-items: center;
justify-content: center;
width: 60px;
height: 60px;
text-align: center;
font-size: var(--font-size-sm);
font-weight: 400;
}
.empty {
background: var(--blue100);
}

View File

@ -12,6 +12,8 @@ export function TeamAddWebsiteForm({ teamId, onSave, onClose }) {
const [newWebsites, setNewWebsites] = useState([]); const [newWebsites, setNewWebsites] = useState([]);
const formRef = useRef(); const formRef = useRef();
const hasData = websites && websites.data.length > 0;
const handleSubmit = () => { const handleSubmit = () => {
mutate( mutate(
{ websiteIds: newWebsites }, { websiteIds: newWebsites },
@ -42,20 +44,22 @@ export function TeamAddWebsiteForm({ teamId, onSave, onClose }) {
return ( return (
<> <>
<Form onSubmit={handleSubmit} error={error} ref={formRef}> {hasData && (
<FormRow label={formatMessage(labels.websites)}> <Form onSubmit={handleSubmit} error={error} ref={formRef}>
<Dropdown items={websites} onChange={handleAddWebsite} style={{ width: 300 }}> <FormRow label={formatMessage(labels.websites)}>
{({ id, name }) => <Item key={id}>{name}</Item>} <Dropdown items={websites.data} onChange={handleAddWebsite} style={{ width: 300 }}>
</Dropdown> {({ id, name }) => <Item key={id}>{name}</Item>}
</FormRow> </Dropdown>
<WebsiteTags items={websites} websites={newWebsites} onClick={handleRemoveWebsite} /> </FormRow>
<FormButtons flex> <WebsiteTags items={websites.data} websites={newWebsites} onClick={handleRemoveWebsite} />
<SubmitButton disabled={newWebsites && newWebsites.length === 0}> <FormButtons flex>
{formatMessage(labels.addWebsite)} <SubmitButton disabled={newWebsites && newWebsites.length === 0}>
</SubmitButton> {formatMessage(labels.addWebsite)}
<Button onClick={onClose}>{formatMessage(labels.cancel)}</Button> </SubmitButton>
</FormButtons> <Button onClick={onClose}>{formatMessage(labels.cancel)}</Button>
</Form> </FormButtons>
</Form>
)}
</> </>
); );
} }

View File

@ -2,13 +2,22 @@ import { Loading, useToasts } from 'react-basics';
import TeamMembersTable from 'components/pages/settings/teams/TeamMembersTable'; import TeamMembersTable from 'components/pages/settings/teams/TeamMembersTable';
import useApi from 'hooks/useApi'; import useApi from 'hooks/useApi';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import useApiFilter from 'hooks/useApiFilter';
export function TeamMembers({ teamId, readOnly }) { export function TeamMembers({ teamId, readOnly }) {
const { showToast } = useToasts(); const { showToast } = useToasts();
const { get, useQuery } = useApi();
const { formatMessage, messages } = useMessages(); const { formatMessage, messages } = useMessages();
const { data, isLoading, refetch } = useQuery(['teams:users', teamId], () => const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } =
get(`/teams/${teamId}/users`), useApiFilter();
const { get, useQuery } = useApi();
const { data, isLoading, refetch } = useQuery(
['teams:users', teamId, filter, page, pageSize],
() =>
get(`/teams/${teamId}/users`, {
filter,
page,
pageSize,
}),
); );
if (isLoading) { if (isLoading) {
@ -22,7 +31,15 @@ export function TeamMembers({ teamId, readOnly }) {
return ( return (
<> <>
<TeamMembersTable onSave={handleSave} data={data} readOnly={readOnly} /> <TeamMembersTable
onSave={handleSave}
data={data}
readOnly={readOnly}
onFilterChange={handleFilterChange}
onPageChange={handlePageChange}
onPageSizeChange={handlePageSizeChange}
filterValue={filter}
/>
</> </>
); );
} }

View File

@ -4,7 +4,15 @@ import { ROLES } from 'lib/constants';
import TeamMemberRemoveButton from './TeamMemberRemoveButton'; import TeamMemberRemoveButton from './TeamMemberRemoveButton';
import SettingsTable from 'components/common/SettingsTable'; import SettingsTable from 'components/common/SettingsTable';
export function TeamMembersTable({ data = [], onSave, readOnly }) { export function TeamMembersTable({
data = [],
onSave,
readOnly,
filterValue,
onFilterChange,
onPageChange,
onPageSizeChange,
}) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { user } = useUser(); const { user } = useUser();
@ -16,7 +24,7 @@ export function TeamMembersTable({ data = [], onSave, readOnly }) {
const cellRender = (row, data, key) => { const cellRender = (row, data, key) => {
if (key === 'username') { if (key === 'username') {
return row?.user?.username; return row?.username;
} }
if (key === 'role') { if (key === 'role') {
return formatMessage( return formatMessage(
@ -27,13 +35,23 @@ export function TeamMembersTable({ data = [], onSave, readOnly }) {
}; };
return ( return (
<SettingsTable data={data} columns={columns} cellRender={cellRender}> <SettingsTable
data={data}
columns={columns}
cellRender={cellRender}
showSearch={true}
showPaging={true}
onFilterChange={onFilterChange}
onPageChange={onPageChange}
onPageSizeChange={onPageSizeChange}
filterValue={filterValue}
>
{row => { {row => {
return ( return (
!readOnly && ( !readOnly && (
<TeamMemberRemoveButton <TeamMemberRemoveButton
teamId={row.teamId} teamId={row.teamId}
userId={row.userId} userId={row.id}
disabled={user.id === row?.user?.id || row.role === ROLES.teamOwner} disabled={user.id === row?.user?.id || row.role === ROLES.teamOwner}
onSave={onSave} onSave={onSave}
/> />

View File

@ -13,13 +13,22 @@ import TeamWebsitesTable from 'components/pages/settings/teams/TeamWebsitesTable
import TeamAddWebsiteForm from 'components/pages/settings/teams/TeamAddWebsiteForm'; import TeamAddWebsiteForm from 'components/pages/settings/teams/TeamAddWebsiteForm';
import useApi from 'hooks/useApi'; import useApi from 'hooks/useApi';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import useApiFilter from 'hooks/useApiFilter';
export function TeamWebsites({ teamId }) { export function TeamWebsites({ teamId }) {
const { showToast } = useToasts(); const { showToast } = useToasts();
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } =
useApiFilter();
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const { data, isLoading, refetch } = useQuery(['teams:websites', teamId], () => const { data, isLoading, refetch } = useQuery(
get(`/teams/${teamId}/websites`), ['teams:websites', teamId, filter, page, pageSize],
() =>
get(`/teams/${teamId}/websites`, {
filter,
page,
pageSize,
}),
); );
const hasData = data && data.length !== 0; const hasData = data && data.length !== 0;
@ -49,7 +58,17 @@ export function TeamWebsites({ teamId }) {
return ( return (
<div> <div>
<ActionForm description={formatMessage(messages.teamWebsitesInfo)}>{addButton}</ActionForm> <ActionForm description={formatMessage(messages.teamWebsitesInfo)}>{addButton}</ActionForm>
{hasData && <TeamWebsitesTable teamId={teamId} data={data} onSave={handleSave} />} {hasData && (
<TeamWebsitesTable
teamId={teamId}
data={data}
onSave={handleSave}
onFilterChange={handleFilterChange}
onPageChange={handlePageChange}
onPageSizeChange={handlePageSizeChange}
filterValue={filter}
/>
)}
</div> </div>
); );
} }

View File

@ -6,9 +6,17 @@ import TeamWebsiteRemoveButton from './TeamWebsiteRemoveButton';
import SettingsTable from 'components/common/SettingsTable'; import SettingsTable from 'components/common/SettingsTable';
import useConfig from 'hooks/useConfig'; import useConfig from 'hooks/useConfig';
export function TeamWebsitesTable({ data = [], onSave }) { export function TeamWebsitesTable({
data = [],
onSave,
filterValue,
onFilterChange,
onPageChange,
onPageSizeChange,
}) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { openExternal } = useConfig(); const { openExternal } = useConfig();
const { user } = useUser(); const { user } = useUser();
const columns = [ const columns = [
{ name: 'name', label: formatMessage(labels.name) }, { name: 'name', label: formatMessage(labels.name) },
@ -17,11 +25,19 @@ export function TeamWebsitesTable({ data = [], onSave }) {
]; ];
return ( return (
<SettingsTable columns={columns} data={data}> <SettingsTable
columns={columns}
data={data}
showSearch={true}
showPaging={true}
onFilterChange={onFilterChange}
onPageChange={onPageChange}
onPageSizeChange={onPageSizeChange}
filterValue={filterValue}
>
{row => { {row => {
const { teamId } = row; const { id: teamId, teamUser } = row.teamWebsite[0].team;
const { id: websiteId, name, domain, userId } = row.website; const { id: websiteId, name, domain, userId } = row;
const { teamUser } = row.team;
const owner = teamUser[0]; const owner = teamUser[0];
const canRemove = user.id === userId || user.id === owner.userId; const canRemove = user.id === userId || user.id === owner.userId;

View File

@ -1,24 +1,37 @@
import { useState } from 'react';
import { Button, Icon, Modal, ModalTrigger, useToasts, Text, Flexbox } from 'react-basics';
import EmptyPlaceholder from 'components/common/EmptyPlaceholder'; import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
import TeamAddForm from 'components/pages/settings/teams/TeamAddForm';
import PageHeader from 'components/layout/PageHeader';
import TeamsTable from 'components/pages/settings/teams/TeamsTable';
import Page from 'components/layout/Page';
import Icons from 'components/icons'; import Icons from 'components/icons';
import TeamJoinForm from './TeamJoinForm'; import Page from 'components/layout/Page';
import PageHeader from 'components/layout/PageHeader';
import TeamAddForm from 'components/pages/settings/teams/TeamAddForm';
import TeamsTable from 'components/pages/settings/teams/TeamsTable';
import useApi from 'hooks/useApi'; import useApi from 'hooks/useApi';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import { ROLES } from 'lib/constants';
import useUser from 'hooks/useUser'; import useUser from 'hooks/useUser';
import { ROLES } from 'lib/constants';
import { useState } from 'react';
import { Button, Flexbox, Icon, Modal, ModalTrigger, Text, useToasts } from 'react-basics';
import TeamJoinForm from './TeamJoinForm';
import useApiFilter from 'hooks/useApiFilter';
export default function TeamsList() { export default function TeamsList() {
const { user } = useUser(); const { user } = useUser();
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } =
useApiFilter();
const [update, setUpdate] = useState(0); const [update, setUpdate] = useState(0);
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const { data, isLoading, error } = useQuery(['teams', update], () => get(`/teams`)); const { data, isLoading, error } = useQuery(['teams', update, filter, page, pageSize], () => {
const hasData = data && data.length !== 0; return get(`/teams`, {
filter,
page,
pageSize,
});
});
const hasData = data && data?.data.length !== 0;
const isFiltered = filter;
const { showToast } = useToasts(); const { showToast } = useToasts();
const handleSave = () => { const handleSave = () => {
@ -71,15 +84,26 @@ export default function TeamsList() {
return ( return (
<Page loading={isLoading} error={error}> <Page loading={isLoading} error={error}>
<PageHeader title={formatMessage(labels.teams)}> <PageHeader title={formatMessage(labels.teams)}>
{hasData && ( {(hasData || isFiltered) && (
<Flexbox gap={10}> <Flexbox gap={10}>
{joinButton} {joinButton}
{createButton} {createButton}
</Flexbox> </Flexbox>
)} )}
</PageHeader> </PageHeader>
{hasData && <TeamsTable data={data} onDelete={handleDelete} />}
{!hasData && ( {(hasData || isFiltered) && (
<TeamsTable
data={data}
onDelete={handleDelete}
onFilterChange={handleFilterChange}
onPageChange={handlePageChange}
onPageSizeChange={handlePageSizeChange}
filterValue={filter}
/>
)}
{!hasData && !isFiltered && (
<EmptyPlaceholder message={formatMessage(messages.noTeams)}> <EmptyPlaceholder message={formatMessage(messages.noTeams)}>
<Flexbox gap={10}> <Flexbox gap={10}>
{joinButton} {joinButton}

View File

@ -1,14 +1,21 @@
import SettingsTable from 'components/common/SettingsTable';
import useLocale from 'hooks/useLocale';
import useMessages from 'hooks/useMessages';
import useUser from 'hooks/useUser';
import { ROLES } from 'lib/constants';
import Link from 'next/link'; import Link from 'next/link';
import { Button, Icon, Icons, Modal, ModalTrigger, Text } from 'react-basics'; import { Button, Icon, Icons, Modal, ModalTrigger, Text } from 'react-basics';
import TeamDeleteForm from './TeamDeleteForm'; import TeamDeleteForm from './TeamDeleteForm';
import TeamLeaveForm from './TeamLeaveForm'; import TeamLeaveForm from './TeamLeaveForm';
import useMessages from 'hooks/useMessages';
import useUser from 'hooks/useUser';
import { ROLES } from 'lib/constants';
import SettingsTable from 'components/common/SettingsTable';
import useLocale from 'hooks/useLocale';
export function TeamsTable({ data = [], onDelete }) { export function TeamsTable({
data = { data: [] },
onDelete,
filterValue,
onFilterChange,
onPageChange,
onPageSizeChange,
}) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { user } = useUser(); const { user } = useUser();
const { dir } = useLocale(); const { dir } = useLocale();
@ -27,7 +34,17 @@ export function TeamsTable({ data = [], onDelete }) {
}; };
return ( return (
<SettingsTable data={data} columns={columns} cellRender={cellRender}> <SettingsTable
data={data}
columns={columns}
cellRender={cellRender}
showSearch={true}
showPaging={true}
onFilterChange={onFilterChange}
onPageChange={onPageChange}
onPageSizeChange={onPageSizeChange}
filterValue={filterValue}
>
{row => { {row => {
const { id, teamUser } = row; const { id, teamUser } = row;
const owner = teamUser.find(({ role }) => role === ROLES.teamOwner); const owner = teamUser.find(({ role }) => role === ROLES.teamOwner);

View File

@ -7,14 +7,27 @@ import UserAddButton from './UserAddButton';
import useApi from 'hooks/useApi'; import useApi from 'hooks/useApi';
import useUser from 'hooks/useUser'; import useUser from 'hooks/useUser';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import useApiFilter from 'hooks/useApiFilter';
export function UsersList() { export function UsersList() {
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const { user } = useUser(); const { user } = useUser();
const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } =
useApiFilter();
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const { data, isLoading, error, refetch } = useQuery(['user'], () => get(`/users`), { const { data, isLoading, error, refetch } = useQuery(
enabled: !!user, ['user', filter, page, pageSize],
}); () =>
get(`/users`, {
filter,
page,
pageSize,
}),
{
enabled: !!user,
},
);
const { showToast } = useToasts(); const { showToast } = useToasts();
const hasData = data && data.length !== 0; const hasData = data && data.length !== 0;
@ -33,8 +46,17 @@ export function UsersList() {
<PageHeader title={formatMessage(labels.users)}> <PageHeader title={formatMessage(labels.users)}>
<UserAddButton onSave={handleSave} /> <UserAddButton onSave={handleSave} />
</PageHeader> </PageHeader>
{hasData && <UsersTable data={data} onDelete={handleDelete} />} {(hasData || filter) && (
{!hasData && ( <UsersTable
data={data}
onDelete={handleDelete}
onFilterChange={handleFilterChange}
onPageChange={handlePageChange}
onPageSizeChange={handlePageSizeChange}
filterValue={filter}
/>
)}
{!hasData && !filter && (
<EmptyPlaceholder message={formatMessage(messages.noUsers)}> <EmptyPlaceholder message={formatMessage(messages.noUsers)}>
<UserAddButton onSave={handleSave} /> <UserAddButton onSave={handleSave} />
</EmptyPlaceholder> </EmptyPlaceholder>

View File

@ -8,7 +8,14 @@ import useMessages from 'hooks/useMessages';
import SettingsTable from 'components/common/SettingsTable'; import SettingsTable from 'components/common/SettingsTable';
import useLocale from 'hooks/useLocale'; import useLocale from 'hooks/useLocale';
export function UsersTable({ data = [], onDelete }) { export function UsersTable({
data = { data: [] },
onDelete,
filterValue,
onFilterChange,
onPageChange,
onPageSizeChange,
}) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { user } = useUser(); const { user } = useUser();
const { dateLocale } = useLocale(); const { dateLocale } = useLocale();
@ -36,7 +43,17 @@ export function UsersTable({ data = [], onDelete }) {
}; };
return ( return (
<SettingsTable data={data} columns={columns} cellRender={cellRender}> <SettingsTable
data={data}
columns={columns}
cellRender={cellRender}
showSearch={true}
showPaging={true}
onFilterChange={onFilterChange}
onPageChange={onPageChange}
onPageSizeChange={onPageSizeChange}
filterValue={filterValue}
>
{(row, keys, rowIndex) => { {(row, keys, rowIndex) => {
return ( return (
<> <>

View File

@ -1,25 +1,34 @@
import { Button, Icon, Text, Modal, ModalTrigger, useToasts, Icons } from 'react-basics';
import Page from 'components/layout/Page'; import Page from 'components/layout/Page';
import PageHeader from 'components/layout/PageHeader'; import PageHeader from 'components/layout/PageHeader';
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
import WebsiteAddForm from 'components/pages/settings/websites/WebsiteAddForm'; import WebsiteAddForm from 'components/pages/settings/websites/WebsiteAddForm';
import WebsitesTable from 'components/pages/settings/websites/WebsitesTable'; import WebsitesTable from 'components/pages/settings/websites/WebsitesTable';
import useApi from 'hooks/useApi'; import useApi from 'hooks/useApi';
import useUser from 'hooks/useUser'; import useApiFilter from 'hooks/useApiFilter';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import useUser from 'hooks/useUser';
import { ROLES } from 'lib/constants'; import { ROLES } from 'lib/constants';
import { Button, Icon, Icons, Modal, ModalTrigger, Text, useToasts } from 'react-basics';
export function WebsitesList() { export function WebsitesList({ showTeam, showHeader = true, includeTeams, onlyTeams, fetch }) {
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const { user } = useUser(); const { user } = useUser();
const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } =
useApiFilter();
const { get, useQuery } = useApi(); const { get, useQuery } = useApi();
const { data, isLoading, error, refetch } = useQuery( const { data, isLoading, error, refetch } = useQuery(
['websites', user?.id], ['websites', fetch, user?.id, filter, page, pageSize, includeTeams, onlyTeams],
() => get(`/users/${user?.id}/websites`), () =>
get(`/users/${user?.id}/websites`, {
filter,
page,
pageSize,
includeTeams,
onlyTeams,
}),
{ enabled: !!user }, { enabled: !!user },
); );
const { showToast } = useToasts(); const { showToast } = useToasts();
const hasData = data && data.length !== 0;
const handleSave = async () => { const handleSave = async () => {
await refetch(); await refetch();
@ -46,13 +55,15 @@ export function WebsitesList() {
return ( return (
<Page loading={isLoading} error={error}> <Page loading={isLoading} error={error}>
<PageHeader title={formatMessage(labels.websites)}>{addButton}</PageHeader> {showHeader && <PageHeader title={formatMessage(labels.websites)}>{addButton}</PageHeader>}
{hasData && <WebsitesTable data={data} />} <WebsitesTable
{!hasData && ( data={data}
<EmptyPlaceholder message={formatMessage(messages.noWebsitesConfigured)}> showTeam={showTeam}
{addButton} onFilterChange={handleFilterChange}
</EmptyPlaceholder> onPageChange={handlePageChange}
)} onPageSizeChange={handlePageSizeChange}
filterValue={filter}
/>
</Page> </Page>
); );
} }

View File

@ -1,46 +1,88 @@
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
import Link from 'next/link'; import Link from 'next/link';
import { Button, Text, Icon, Icons } from 'react-basics'; import { Button, Text, Icon, Icons } from 'react-basics';
import SettingsTable from 'components/common/SettingsTable'; import SettingsTable from 'components/common/SettingsTable';
import useMessages from 'hooks/useMessages'; import useMessages from 'hooks/useMessages';
import useConfig from 'hooks/useConfig'; import useConfig from 'hooks/useConfig';
import useUser from 'hooks/useUser';
export function WebsitesTable({ data = [] }) { export function WebsitesTable({
const { formatMessage, labels } = useMessages(); data = [],
filterValue,
onFilterChange,
onPageChange,
onPageSizeChange,
showTeam,
}) {
const { formatMessage, labels, messages } = useMessages();
const { openExternal } = useConfig(); const { openExternal } = useConfig();
const { user } = useUser();
const showTable = data && (filterValue || data?.data.length !== 0);
const teamColumns = [
{ name: 'teamName', label: formatMessage(labels.teamName) },
{ name: 'owner', label: formatMessage(labels.owner) },
];
const columns = [ const columns = [
{ name: 'name', label: formatMessage(labels.name) }, { name: 'name', label: formatMessage(labels.name) },
{ name: 'domain', label: formatMessage(labels.domain) }, { name: 'domain', label: formatMessage(labels.domain) },
...(showTeam ? teamColumns : []),
{ name: 'action', label: ' ' }, { name: 'action', label: ' ' },
]; ];
return ( return (
<SettingsTable columns={columns} data={data}> <>
{row => { {showTable && (
const { id } = row; <SettingsTable
columns={columns}
data={data}
showSearch={true}
showPaging={true}
onFilterChange={onFilterChange}
onPageChange={onPageChange}
onPageSizeChange={onPageSizeChange}
filterValue={filterValue}
>
{row => {
const {
id,
teamWebsite,
user: { username, id: ownerId },
} = row;
if (showTeam) {
row.teamName = teamWebsite[0]?.team.name;
row.owner = username;
}
return ( return (
<> <>
<Link href={`/settings/websites/${id}`}> {(!showTeam || ownerId === user.id) && (
<Button> <Link href={`/settings/websites/${id}`}>
<Icon> <Button>
<Icons.Edit /> <Icon>
</Icon> <Icons.Edit />
<Text>{formatMessage(labels.edit)}</Text> </Icon>
</Button> <Text>{formatMessage(labels.edit)}</Text>
</Link> </Button>
<Link href={`/websites/${id}`} target={openExternal ? '_blank' : null}> </Link>
<Button> )}
<Icon> <Link href={`/websites/${id}`} target={openExternal ? '_blank' : null}>
<Icons.External /> <Button>
</Icon> <Icon>
<Text>{formatMessage(labels.view)}</Text> <Icons.External />
</Button> </Icon>
</Link> <Text>{formatMessage(labels.view)}</Text>
</> </Button>
); </Link>
}} </>
</SettingsTable> );
}}
</SettingsTable>
)}
{!showTable && <EmptyPlaceholder message={formatMessage(messages.noDataAvailable)} />}
</>
); );
} }

View File

@ -1,13 +1,25 @@
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
import Page from 'components/layout/Page'; import Page from 'components/layout/Page';
import Link from 'next/link';
import { Button, Icon, Icons, Text, Flexbox } from 'react-basics';
import { useMessages, useReports } from 'hooks';
import ReportsTable from 'components/pages/reports/ReportsTable'; import ReportsTable from 'components/pages/reports/ReportsTable';
import { useMessages, useWebsiteReports } from 'hooks';
import Link from 'next/link';
import { Button, Flexbox, Icon, Icons, Text } from 'react-basics';
import WebsiteHeader from './WebsiteHeader'; import WebsiteHeader from './WebsiteHeader';
export function WebsiteReportsPage({ websiteId }) { export function WebsiteReportsPage({ websiteId }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const { reports, error, isLoading, deleteReport } = useReports(websiteId); const {
reports,
error,
isLoading,
deleteReport,
filter,
handleFilterChange,
handlePageChange,
handlePageSizeChange,
} = useWebsiteReports(websiteId);
const hasData = (reports && reports.data.length !== 0) || filter;
const handleDelete = async id => { const handleDelete = async id => {
await deleteReport(id); await deleteReport(id);
@ -26,7 +38,17 @@ export function WebsiteReportsPage({ websiteId }) {
</Button> </Button>
</Link> </Link>
</Flexbox> </Flexbox>
<ReportsTable data={reports} onDelete={handleDelete} /> {hasData && (
<ReportsTable
data={reports}
onDelete={handleDelete}
onFilterChange={handleFilterChange}
onPageChange={handlePageChange}
onPageSizeChange={handlePageSizeChange}
filterValue={filter}
/>
)}
{!hasData && <EmptyPlaceholder message={formatMessage(messages.noDataAvailable)} />}
</Page> </Page>
); );
} }

View File

@ -0,0 +1,69 @@
import Page from 'components/layout/Page';
import PageHeader from 'components/layout/PageHeader';
import WebsiteAddForm from 'components/pages/settings/websites/WebsiteAddForm';
import WebsiteList from 'components/pages/settings/websites/WebsitesList';
import { useMessages } from 'hooks';
import useUser from 'hooks/useUser';
import useConfig from 'hooks/useConfig';
import { ROLES } from 'lib/constants';
import { useState } from 'react';
import {
Button,
Icon,
Icons,
Item,
Modal,
ModalTrigger,
Tabs,
Text,
useToasts,
} from 'react-basics';
export function WebsitesPage() {
const { formatMessage, labels, messages } = useMessages();
const [tab, setTab] = useState('my-websites');
const [fetch, setFetch] = useState(1);
const { user } = useUser();
const { cloudMode } = useConfig();
const { showToast } = useToasts();
const handleSave = async () => {
setFetch(fetch + 1);
showToast({ message: formatMessage(messages.saved), variant: 'success' });
};
const addButton = (
<>
{user.role !== ROLES.viewOnly && (
<ModalTrigger>
<Button variant="primary">
<Icon>
<Icons.Plus />
</Icon>
<Text>{formatMessage(labels.addWebsite)}</Text>
</Button>
<Modal title={formatMessage(labels.addWebsite)}>
{close => <WebsiteAddForm onSave={handleSave} onClose={close} />}
</Modal>
</ModalTrigger>
)}
</>
);
return (
<Page>
<PageHeader title={formatMessage(labels.websites)}>{!cloudMode && addButton}</PageHeader>
<Tabs selectedKey={tab} onSelect={setTab} style={{ marginBottom: 30 }}>
<Item key="my-websites">{formatMessage(labels.myWebsites)}</Item>
<Item key="team-webaites">{formatMessage(labels.teamWebsites)}</Item>
</Tabs>
{tab === 'my-websites' && <WebsiteList showHeader={false} fetch={fetch} />}
{tab === 'team-webaites' && (
<WebsiteList showHeader={false} fetch={fetch} showTeam={true} onlyTeams={true} />
)}
</Page>
);
}
export default WebsitesPage;

View File

@ -0,0 +1,50 @@
-- CreateIndex
CREATE INDEX `event_data_website_id_created_at_idx` ON `event_data`(`website_id`, `created_at`);
-- CreateIndex
CREATE INDEX `event_data_website_id_created_at_event_key_idx` ON `event_data`(`website_id`, `created_at`, `event_key`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_idx` ON `session`(`website_id`, `created_at`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_hostname_idx` ON `session`(`website_id`, `created_at`, `hostname`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_browser_idx` ON `session`(`website_id`, `created_at`, `browser`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_os_idx` ON `session`(`website_id`, `created_at`, `os`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_device_idx` ON `session`(`website_id`, `created_at`, `device`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_screen_idx` ON `session`(`website_id`, `created_at`, `screen`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_language_idx` ON `session`(`website_id`, `created_at`, `language`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_country_idx` ON `session`(`website_id`, `created_at`, `country`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_subdivision1_idx` ON `session`(`website_id`, `created_at`, `subdivision1`);
-- CreateIndex
CREATE INDEX `session_website_id_created_at_city_idx` ON `session`(`website_id`, `created_at`, `city`);
-- CreateIndex
CREATE INDEX `website_event_website_id_created_at_url_path_idx` ON `website_event`(`website_id`, `created_at`, `url_path`);
-- CreateIndex
CREATE INDEX `website_event_website_id_created_at_url_query_idx` ON `website_event`(`website_id`, `created_at`, `url_query`);
-- CreateIndex
CREATE INDEX `website_event_website_id_created_at_referrer_domain_idx` ON `website_event`(`website_id`, `created_at`, `referrer_domain`);
-- CreateIndex
CREATE INDEX `website_event_website_id_created_at_page_title_idx` ON `website_event`(`website_id`, `created_at`, `page_title`);
-- CreateIndex
CREATE INDEX `website_event_website_id_created_at_event_name_idx` ON `website_event`(`website_id`, `created_at`, `event_name`);

View File

@ -44,6 +44,16 @@ model Session {
@@index([createdAt]) @@index([createdAt])
@@index([websiteId]) @@index([websiteId])
@@index([websiteId, createdAt])
@@index([websiteId, createdAt, hostname])
@@index([websiteId, createdAt, browser])
@@index([websiteId, createdAt, os])
@@index([websiteId, createdAt, device])
@@index([websiteId, createdAt, screen])
@@index([websiteId, createdAt, language])
@@index([websiteId, createdAt, country])
@@index([websiteId, createdAt, subdivision1])
@@index([websiteId, createdAt, city])
@@map("session") @@map("session")
} }
@ -91,6 +101,11 @@ model WebsiteEvent {
@@index([sessionId]) @@index([sessionId])
@@index([websiteId]) @@index([websiteId])
@@index([websiteId, createdAt]) @@index([websiteId, createdAt])
@@index([websiteId, createdAt, urlPath])
@@index([websiteId, createdAt, urlQuery])
@@index([websiteId, createdAt, referrerDomain])
@@index([websiteId, createdAt, pageTitle])
@@index([websiteId, createdAt, eventName])
@@index([websiteId, sessionId, createdAt]) @@index([websiteId, sessionId, createdAt])
@@map("website_event") @@map("website_event")
} }
@ -113,6 +128,8 @@ model EventData {
@@index([websiteId]) @@index([websiteId])
@@index([websiteEventId]) @@index([websiteEventId])
@@index([websiteId, websiteEventId, createdAt]) @@index([websiteId, websiteEventId, createdAt])
@@index([websiteId, createdAt])
@@index([websiteId, createdAt, eventKey])
@@map("event_data") @@map("event_data")
} }

View File

@ -0,0 +1,50 @@
-- CreateIndex
CREATE INDEX "event_data_website_id_created_at_idx" ON "event_data"("website_id", "created_at");
-- CreateIndex
CREATE INDEX "event_data_website_id_created_at_event_key_idx" ON "event_data"("website_id", "created_at", "event_key");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_idx" ON "session"("website_id", "created_at");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_hostname_idx" ON "session"("website_id", "created_at", "hostname");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_browser_idx" ON "session"("website_id", "created_at", "browser");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_os_idx" ON "session"("website_id", "created_at", "os");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_device_idx" ON "session"("website_id", "created_at", "device");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_screen_idx" ON "session"("website_id", "created_at", "screen");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_language_idx" ON "session"("website_id", "created_at", "language");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_country_idx" ON "session"("website_id", "created_at", "country");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_subdivision1_idx" ON "session"("website_id", "created_at", "subdivision1");
-- CreateIndex
CREATE INDEX "session_website_id_created_at_city_idx" ON "session"("website_id", "created_at", "city");
-- CreateIndex
CREATE INDEX "website_event_website_id_created_at_url_path_idx" ON "website_event"("website_id", "created_at", "url_path");
-- CreateIndex
CREATE INDEX "website_event_website_id_created_at_url_query_idx" ON "website_event"("website_id", "created_at", "url_query");
-- CreateIndex
CREATE INDEX "website_event_website_id_created_at_referrer_domain_idx" ON "website_event"("website_id", "created_at", "referrer_domain");
-- CreateIndex
CREATE INDEX "website_event_website_id_created_at_page_title_idx" ON "website_event"("website_id", "created_at", "page_title");
-- CreateIndex
CREATE INDEX "website_event_website_id_created_at_event_name_idx" ON "website_event"("website_id", "created_at", "event_name");

View File

@ -44,6 +44,16 @@ model Session {
@@index([createdAt]) @@index([createdAt])
@@index([websiteId]) @@index([websiteId])
@@index([websiteId, createdAt])
@@index([websiteId, createdAt, hostname])
@@index([websiteId, createdAt, browser])
@@index([websiteId, createdAt, os])
@@index([websiteId, createdAt, device])
@@index([websiteId, createdAt, screen])
@@index([websiteId, createdAt, language])
@@index([websiteId, createdAt, country])
@@index([websiteId, createdAt, subdivision1])
@@index([websiteId, createdAt, city])
@@map("session") @@map("session")
} }
@ -91,6 +101,11 @@ model WebsiteEvent {
@@index([sessionId]) @@index([sessionId])
@@index([websiteId]) @@index([websiteId])
@@index([websiteId, createdAt]) @@index([websiteId, createdAt])
@@index([websiteId, createdAt, urlPath])
@@index([websiteId, createdAt, urlQuery])
@@index([websiteId, createdAt, referrerDomain])
@@index([websiteId, createdAt, pageTitle])
@@index([websiteId, createdAt, eventName])
@@index([websiteId, sessionId, createdAt]) @@index([websiteId, sessionId, createdAt])
@@map("website_event") @@map("website_event")
} }
@ -112,6 +127,8 @@ model EventData {
@@index([createdAt]) @@index([createdAt])
@@index([websiteId]) @@index([websiteId])
@@index([websiteEventId]) @@index([websiteEventId])
@@index([websiteId, createdAt])
@@index([websiteId, createdAt, eventKey])
@@map("event_data") @@map("event_data")
} }

View File

@ -6,6 +6,7 @@ export * from './useDocumentClick';
export * from './useEscapeKey'; export * from './useEscapeKey';
export * from './useFilters'; export * from './useFilters';
export * from './useForceUpdate'; export * from './useForceUpdate';
export * from './useFormat';
export * from './useLanguageNames'; export * from './useLanguageNames';
export * from './useLocale'; export * from './useLocale';
export * from './useMessages'; export * from './useMessages';
@ -19,3 +20,4 @@ export * from './useTheme';
export * from './useTimezone'; export * from './useTimezone';
export * from './useUser'; export * from './useUser';
export * from './useWebsite'; export * from './useWebsite';
export * from './useWebsiteReports';

28
hooks/useApiFilter.ts Normal file
View File

@ -0,0 +1,28 @@
import { useState } from 'react';
export function useApiFilter() {
const [filter, setFilter] = useState();
const [filterType, setFilterType] = useState('All');
const [page, setPage] = useState(1);
const [pageSize, setPageSize] = useState(10);
const handleFilterChange = value => setFilter(value);
const handlePageChange = value => setPage(value);
const handlePageSizeChange = value => setPageSize(value);
return {
filter,
setFilter,
filterType,
setFilterType,
page,
setPage,
pageSize,
setPageSize,
handleFilterChange,
handlePageChange,
handlePageSizeChange,
};
}
export default useApiFilter;

View File

@ -1,33 +1,47 @@
import { useMessages } from 'hooks'; import { useMessages } from 'hooks';
import { OPERATORS } from 'lib/constants';
export function useFilters() { export function useFilters() {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const filters = { const filterLabels = {
eq: formatMessage(labels.equals), [OPERATORS.equals]: formatMessage(labels.is),
neq: formatMessage(labels.doesNotEqual), [OPERATORS.notEquals]: formatMessage(labels.isNot),
c: formatMessage(labels.contains), [OPERATORS.set]: formatMessage(labels.isSet),
dnc: formatMessage(labels.doesNotContain), [OPERATORS.notSet]: formatMessage(labels.isNotSet),
t: formatMessage(labels.true), [OPERATORS.contains]: formatMessage(labels.contains),
f: formatMessage(labels.false), [OPERATORS.doesNotContain]: formatMessage(labels.doesNotContain),
gt: formatMessage(labels.greaterThan), [OPERATORS.true]: formatMessage(labels.true),
lt: formatMessage(labels.lessThan), [OPERATORS.false]: formatMessage(labels.false),
gte: formatMessage(labels.greaterThanEquals), [OPERATORS.greaterThan]: formatMessage(labels.greaterThan),
lte: formatMessage(labels.lessThanEquals), [OPERATORS.lessThan]: formatMessage(labels.lessThan),
be: formatMessage(labels.before), [OPERATORS.greaterThanEquals]: formatMessage(labels.greaterThanEquals),
af: formatMessage(labels.after), [OPERATORS.lessThanEquals]: formatMessage(labels.lessThanEquals),
[OPERATORS.before]: formatMessage(labels.before),
[OPERATORS.after]: formatMessage(labels.after),
}; };
const types = { const typeFilters = {
string: ['eq', 'neq'], string: [OPERATORS.equals, OPERATORS.notEquals],
array: ['c', 'dnc'], array: [OPERATORS.contains, OPERATORS.doesNotContain],
boolean: ['t', 'f'], boolean: [OPERATORS.true, OPERATORS.false],
number: ['eq', 'neq', 'gt', 'lt', 'gte', 'lte'], number: [
date: ['be', 'af'], OPERATORS.equals,
uuid: ['eq'], OPERATORS.notEquals,
OPERATORS.greaterThan,
OPERATORS.lessThan,
OPERATORS.greaterThanEquals,
OPERATORS.lessThanEquals,
],
date: [OPERATORS.before, OPERATORS.after],
uuid: [OPERATORS.equals],
}; };
return { filters, types }; const getFilters = type => {
return typeFilters[type]?.map(key => ({ type, value: key, label: filterLabels[key] })) ?? [];
};
return { getFilters, filterLabels, typeFilters };
} }
export default useFilters; export default useFilters;

39
hooks/useFormat.js Normal file
View File

@ -0,0 +1,39 @@
import useMessages from './useMessages';
import { BROWSERS } from 'lib/constants';
import useLocale from './useLocale';
import useCountryNames from './useCountryNames';
export function useFormat() {
const { formatMessage, labels } = useMessages();
const { locale } = useLocale();
const countryNames = useCountryNames(locale);
const formatBrowser = value => {
return BROWSERS[value] || value;
};
const formatCountry = value => {
return countryNames[value] || value;
};
const formatDevice = value => {
return formatMessage(labels[value] || labels.unknown);
};
const formatValue = (value, type) => {
switch (type) {
case 'browser':
return formatBrowser(value);
case 'country':
return formatCountry(value);
case 'device':
return formatDevice(value);
default:
return value;
}
};
return { formatBrowser, formatCountry, formatDevice, formatValue };
}
export default useFormat;

View File

@ -2,13 +2,17 @@ import { useIntl, FormattedMessage } from 'react-intl';
import { messages, labels } from 'components/messages'; import { messages, labels } from 'components/messages';
export function useMessages() { export function useMessages() {
const { formatMessage } = useIntl(); const intl = useIntl();
function getMessage(id) { const getMessage = id => {
const message = Object.values(messages).find(value => value.id === id); const message = Object.values(messages).find(value => value.id === id);
return message ? formatMessage(message) : id; return message ? formatMessage(message) : id;
} };
const formatMessage = (descriptor, values, opts) => {
return descriptor ? intl.formatMessage(descriptor, values, opts) : null;
};
return { formatMessage, FormattedMessage, messages, labels, getMessage }; return { formatMessage, FormattedMessage, messages, labels, getMessage };
} }

View File

@ -1,5 +1,6 @@
import { produce } from 'immer'; import { produce } from 'immer';
import { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import { useTimezone } from './useTimezone';
import useApi from './useApi'; import useApi from './useApi';
const baseParameters = { const baseParameters = {
@ -12,6 +13,7 @@ export function useReport(reportId, defaultParameters) {
const [report, setReport] = useState(null); const [report, setReport] = useState(null);
const [isRunning, setIsRunning] = useState(false); const [isRunning, setIsRunning] = useState(false);
const { get, post } = useApi(); const { get, post } = useApi();
const [timezone] = useTimezone();
const loadReport = async id => { const loadReport = async id => {
const data = await get(`/reports/${id}`); const data = await get(`/reports/${id}`);
@ -33,7 +35,7 @@ export function useReport(reportId, defaultParameters) {
const { type } = report; const { type } = report;
const data = await post(`/reports/${type}`, parameters); const data = await post(`/reports/${type}`, { ...parameters, timezone });
setReport( setReport(
produce(state => { produce(state => {

View File

@ -1,12 +1,16 @@
import { useState } from 'react'; import { useState } from 'react';
import useApi from './useApi'; import useApi from './useApi';
import useApiFilter from 'hooks/useApiFilter';
export function useReports(websiteId) { export function useReports() {
const [modified, setModified] = useState(Date.now()); const [modified, setModified] = useState(Date.now());
const { get, useQuery, del, useMutation } = useApi(); const { get, useQuery, del, useMutation } = useApi();
const { mutate } = useMutation(reportId => del(`/reports/${reportId}`)); const { mutate } = useMutation(reportId => del(`/reports/${reportId}`));
const { data, error, isLoading } = useQuery(['reports:website', { websiteId, modified }], () => const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } =
get(`/reports`, { websiteId }), useApiFilter();
const { data, error, isLoading } = useQuery(
['reports', { modified, filter, page, pageSize }],
() => get(`/reports`, { filter, page, pageSize }),
); );
const deleteReport = id => { const deleteReport = id => {
@ -17,7 +21,18 @@ export function useReports(websiteId) {
}); });
}; };
return { reports: data, error, isLoading, deleteReport }; return {
reports: data,
error,
isLoading,
deleteReport,
filter,
page,
pageSize,
handleFilterChange,
handlePageChange,
handlePageSizeChange,
};
} }
export default useReports; export default useReports;

View File

@ -0,0 +1,38 @@
import { useState } from 'react';
import useApi from './useApi';
import useApiFilter from 'hooks/useApiFilter';
export function useWebsiteReports(websiteId) {
const [modified, setModified] = useState(Date.now());
const { get, useQuery, del, useMutation } = useApi();
const { mutate } = useMutation(reportId => del(`/reports/${reportId}`));
const { filter, page, pageSize, handleFilterChange, handlePageChange, handlePageSizeChange } =
useApiFilter();
const { data, error, isLoading } = useQuery(
['reports:website', { websiteId, modified, filter, page, pageSize }],
() => get(`/websites/${websiteId}/reports`, { websiteId, filter, page, pageSize }),
);
const deleteReport = id => {
mutate(id, {
onSuccess: () => {
setModified(Date.now());
},
});
};
return {
reports: data,
error,
isLoading,
deleteReport,
filter,
page,
pageSize,
handleFilterChange,
handlePageChange,
handlePageSizeChange,
};
}
export default useWebsiteReports;

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Add website", "label.add-website": "Add website",
"label.admin": "Administrator", "label.admin": "Administrator",
"label.after": "After",
"label.all": "All", "label.all": "All",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Average visit time", "label.average-visit-time": "Average visit time",
"label.back": "Back", "label.back": "Back",
"label.before": "Before",
"label.bounce-rate": "Bounce rate", "label.bounce-rate": "Bounce rate",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Browsers", "label.browsers": "Browsers",
"label.cancel": "Cancel", "label.cancel": "Cancel",
"label.change-password": "Change password", "label.change-password": "Change password",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Confirm password", "label.confirm-password": "Confirm password",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Countries", "label.countries": "Countries",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Custom range", "label.custom-range": "Custom range",
"label.dashboard": "Dashboard", "label.dashboard": "Dashboard",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Date range", "label.date-range": "Date range",
"label.day": "Day",
"label.default-date-range": "Default date range", "label.default-date-range": "Default date range",
"label.delete": "Delete", "label.delete": "Delete",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Delete website", "label.delete-website": "Delete website",
"label.description": "Description",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Devices", "label.devices": "Devices",
"label.dismiss": "Dismiss", "label.dismiss": "Dismiss",
"label.does-not-contain": "Does not contain",
"label.domain": "Domain", "label.domain": "Domain",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Edit", "label.edit": "Edit",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event Data", "label.event-data": "Event Data",
"label.events": "Events", "label.events": "Events",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Combined", "label.filter-combined": "Combined",
"label.filter-raw": "Raw", "label.filter-raw": "Raw",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Last {x} hours", "label.last-hours": "Last {x} hours",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Login", "label.login": "Login",
"label.logout": "Logout", "label.logout": "Logout",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Mobile", "label.mobile": "Mobile",
"label.more": "More", "label.more": "More",
"label.my-websites": "My websites",
"label.name": "Name", "label.name": "Name",
"label.new-password": "New password", "label.new-password": "New password",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Operating systems", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Page views", "label.page-views": "Page views",
"label.pageTitle": "Page title",
"label.pages": "Pages", "label.pages": "Pages",
"label.password": "Password", "label.password": "Password",
"label.powered-by": "Powered by {name}", "label.powered-by": "Powered by {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Realtime", "label.realtime": "Realtime",
"label.referrer": "Referrer",
"label.referrers": "Referrers", "label.referrers": "Referrers",
"label.refresh": "Refresh", "label.refresh": "Refresh",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Required", "label.required": "Required",
"label.reset": "Reset", "label.reset": "Reset",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Save", "label.save": "Save",
@ -99,12 +132,15 @@
"label.settings": "Settings", "label.settings": "Settings",
"label.share-url": "Share URL", "label.share-url": "Share URL",
"label.single-day": "Single day", "label.single-day": "Single day",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "This month", "label.this-month": "This month",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Today", "label.today": "Today",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Tracking code", "label.tracking-code": "Tracking code",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Unique visitors", "label.unique-visitors": "Unique visitors",
"label.unknown": "Unknown", "label.unknown": "Unknown",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Username", "label.username": "Username",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "View details", "label.view-details": "View details",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Websites", "label.websites": "Websites",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} current {x, plural, one {visitor} other {visitors}}", "message.active-users": "{x} current {x, plural, one {visitor} other {visitors}}",
"message.confirm-delete": "Are you sure you want to delete {target}?", "message.confirm-delete": "Are you sure you want to delete {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Incorrect username/password.", "message.incorrect-username-password": "Incorrect username/password.",
"message.invalid-domain": "Invalid domain. Do not include http/https.", "message.invalid-domain": "Invalid domain. Do not include http/https.",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "No data available.", "message.no-data-available": "No data available.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Passwords do not match.", "message.no-match-password": "Passwords do not match.",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "You do not have any websites configured.",
"message.page-not-found": "Page not found.", "message.page-not-found": "Page not found.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your settings will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your settings will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "This is the publicly shared URL for {target}.", "message.share-url": "This is the publicly shared URL for {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "To track stats for this website, place the following code in the <head>...</head> section of your HTML.", "message.tracking-code": "To track stats for this website, place the following code in the <head>...</head> section of your HTML.",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Visitor from {country} using {browser} on {os} {device}", "message.visitor-log": "Visitor from {country} using {browser} on {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "You do not have any websites configured.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "إضافة موقع", "label.add-website": "إضافة موقع",
"label.admin": "مدير", "label.admin": "مدير",
"label.after": "After",
"label.all": "الكل", "label.all": "الكل",
"label.all-time": "كل الوقت", "label.all-time": "كل الوقت",
"label.analytics": "تحليلات", "label.analytics": "تحليلات",
"label.average": "Average",
"label.average-visit-time": "متوسط وقت الزيارة", "label.average-visit-time": "متوسط وقت الزيارة",
"label.back": "للخلف", "label.back": "للخلف",
"label.before": "Before",
"label.bounce-rate": "معدل الارتداد", "label.bounce-rate": "معدل الارتداد",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "المتصفحات", "label.browsers": "المتصفحات",
"label.cancel": "إلغاء", "label.cancel": "إلغاء",
"label.change-password": "تغيير كلمة المرور", "label.change-password": "تغيير كلمة المرور",
"label.cities": "المدن", "label.cities": "المدن",
"label.city": "City",
"label.clear-all": "مسح الكل", "label.clear-all": "مسح الكل",
"label.confirm": "تأكيد", "label.confirm": "تأكيد",
"label.confirm-password": "تأكيد كلمة المرور", "label.confirm-password": "تأكيد كلمة المرور",
"label.contains": "Contains",
"label.continue": "متابعة", "label.continue": "متابعة",
"label.countries": "الدول", "label.countries": "الدول",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "انشاء مجموعة", "label.create-team": "انشاء مجموعة",
"label.create-user": "انشاء مستخدم", "label.create-user": "انشاء مستخدم",
"label.created": "تم الانشاء", "label.created": "تم الانشاء",
@ -28,16 +37,21 @@
"label.custom-range": "فترة مخصصة", "label.custom-range": "فترة مخصصة",
"label.dashboard": "الشاشة الرئيسية", "label.dashboard": "الشاشة الرئيسية",
"label.data": "البيانات", "label.data": "البيانات",
"label.date": "Date",
"label.date-range": "فترة مخصصة", "label.date-range": "فترة مخصصة",
"label.day": "Day",
"label.default-date-range": "الفترة المخصصة الافتراضية", "label.default-date-range": "الفترة المخصصة الافتراضية",
"label.delete": "حذف", "label.delete": "حذف",
"label.delete-team": "حذف مجموعة", "label.delete-team": "حذف مجموعة",
"label.delete-user": "جذف مستخدم", "label.delete-user": "جذف مستخدم",
"label.delete-website": "حذف الموقع", "label.delete-website": "حذف الموقع",
"label.description": "Description",
"label.desktop": "كمبيوتر", "label.desktop": "كمبيوتر",
"label.details": "تفاصيل", "label.details": "تفاصيل",
"label.device": "Device",
"label.devices": "الأجهزة", "label.devices": "الأجهزة",
"label.dismiss": "اخفاء", "label.dismiss": "اخفاء",
"label.does-not-contain": "Does not contain",
"label.domain": "النطاق", "label.domain": "النطاق",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "تعديل", "label.edit": "تعديل",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "الأحداث", "label.events": "الأحداث",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "مجمعة", "label.filter-combined": "مجمعة",
"label.filter-raw": "مفصلة", "label.filter-raw": "مفصلة",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "انضمام", "label.join": "انضمام",
"label.join-team": "الانضمام للمجموعة", "label.join-team": "الانضمام للمجموعة",
"label.language": "اللغة", "label.language": "اللغة",
@ -61,17 +83,25 @@
"label.last-hours": "اخر {x} ساعة/ساعات", "label.last-hours": "اخر {x} ساعة/ساعات",
"label.leave": "مغادرة", "label.leave": "مغادرة",
"label.leave-team": "مغادرة المجموعة", "label.leave-team": "مغادرة المجموعة",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "تسجيل الدخول", "label.login": "تسجيل الدخول",
"label.logout": "تسجيل الخروج", "label.logout": "تسجيل الخروج",
"label.max": "Max",
"label.members": "الأعضاء", "label.members": "الأعضاء",
"label.min": "Min",
"label.mobile": "جوال", "label.mobile": "جوال",
"label.more": "المزيد", "label.more": "المزيد",
"label.my-websites": "My websites",
"label.name": "الإسم", "label.name": "الإسم",
"label.new-password": "كلمة مرور جديدة", "label.new-password": "كلمة مرور جديدة",
"label.none": "غير معرف", "label.none": "غير معرف",
"label.operating-systems": "نظام التشغيل", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "المالك", "label.owner": "المالك",
"label.page-of": "Page {current} of {total}",
"label.page-views": "مشاهدات الصفحة", "label.page-views": "مشاهدات الصفحة",
"label.pageTitle": "Page title",
"label.pages": "الصفحات", "label.pages": "الصفحات",
"label.password": "كلمة المرور", "label.password": "كلمة المرور",
"label.powered-by": "مشغل بواسطة {name}", "label.powered-by": "مشغل بواسطة {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "متغيرات الرابط", "label.query-parameters": "متغيرات الرابط",
"label.realtime": "الوقت الفعلي", "label.realtime": "الوقت الفعلي",
"label.referrer": "Referrer",
"label.referrers": "التحويلات", "label.referrers": "التحويلات",
"label.refresh": "تحديث", "label.refresh": "تحديث",
"label.regenerate": "اعادة انشاء", "label.regenerate": "اعادة انشاء",
"label.region": "Region",
"label.regions": "المناطق", "label.regions": "المناطق",
"label.remove": "إزالة", "label.remove": "إزالة",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "اجباري", "label.required": "اجباري",
"label.reset": "اعادة تعيين", "label.reset": "اعادة تعيين",
"label.reset-website": "اعادة تعيين الإحصائيات", "label.reset-website": "اعادة تعيين الإحصائيات",
"label.retention": "Retention",
"label.role": "الصلاحية", "label.role": "الصلاحية",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "حفظ", "label.save": "حفظ",
@ -99,12 +132,15 @@
"label.settings": "اعدادات", "label.settings": "اعدادات",
"label.share-url": "مشاركة الرابط", "label.share-url": "مشاركة الرابط",
"label.single-day": "يوم واحد", "label.single-day": "يوم واحد",
"label.sum": "Sum",
"label.tablet": "تابلت", "label.tablet": "تابلت",
"label.team": "مجموعة", "label.team": "مجموعة",
"label.team-guest": "زائر للمجموعة", "label.team-guest": "زائر للمجموعة",
"label.team-id": "معرف المجموعة", "label.team-id": "معرف المجموعة",
"label.team-member": "عضو المجموعة", "label.team-member": "عضو المجموعة",
"label.team-name": "Team name",
"label.team-owner": "مدير المجموعة", "label.team-owner": "مدير المجموعة",
"label.team-websites": "Team websites",
"label.teams": "المجموعات", "label.teams": "المجموعات",
"label.theme": "المظهر", "label.theme": "المظهر",
"label.this-month": "الشهر الحالي", "label.this-month": "الشهر الحالي",
@ -114,14 +150,21 @@
"label.title": "العنوان", "label.title": "العنوان",
"label.today": "اليوم", "label.today": "اليوم",
"label.toggle-charts": "تغيير الإحصائيات", "label.toggle-charts": "تغيير الإحصائيات",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "كود التتبع", "label.tracking-code": "كود التتبع",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "زائرون فريدون", "label.unique-visitors": "زائرون فريدون",
"label.unknown": "غير معروف", "label.unknown": "غير معروف",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "مستخدم", "label.user": "مستخدم",
"label.username": "اسم المستخدم", "label.username": "اسم المستخدم",
"label.users": "المستخدمين", "label.users": "المستخدمين",
"label.value": "Value",
"label.view": "عرض", "label.view": "عرض",
"label.view-details": "عرض التفاصيل", "label.view-details": "عرض التفاصيل",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "المواقع", "label.websites": "المواقع",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "الأمس", "label.yesterday": "الأمس",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} حاليا {x, plural, one {زائر واحد} other {زوار}}", "message.active-users": "{x} حاليا {x, plural, one {زائر واحد} other {زوار}}",
"message.confirm-delete": "هل أنت متأكد من حذف {target}?", "message.confirm-delete": "هل أنت متأكد من حذف {target}?",
"message.confirm-leave": "هل أنت متأكد من مغادرة {target}?", "message.confirm-leave": "هل أنت متأكد من مغادرة {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "اسم المستخدم او كلمة المرور غير صحيحة.", "message.incorrect-username-password": "اسم المستخدم او كلمة المرور غير صحيحة.",
"message.invalid-domain": "النطاق غير صحيح", "message.invalid-domain": "النطاق غير صحيح",
"message.min-password-length": "اقل عدد مسموح به {n} حرف/أحرف", "message.min-password-length": "اقل عدد مسموح به {n} حرف/أحرف",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "لا توجد بيانات متاحة.", "message.no-data-available": "لا توجد بيانات متاحة.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "كلمة المرور غير متطابقة", "message.no-match-password": "كلمة المرور غير متطابقة",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "هذه المجموعة ليس لديه اي موقع.",
"message.no-teams": "لم تقم بإنشاء اي مجموعة.", "message.no-teams": "لم تقم بإنشاء اي مجموعة.",
"message.no-users": "لا يوجد مستخدمين.", "message.no-users": "لا يوجد مستخدمين.",
"message.no-websites-configured": "لم تقم بإعداد اي موقع.",
"message.page-not-found": "الصفحة غير موجودة.", "message.page-not-found": "الصفحة غير موجودة.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "سيتم اعادة تعيين كافة الإحصائيات لهذا الموقع، لكن لن يتم تعيير كود التتبع", "message.reset-website-warning": "سيتم اعادة تعيين كافة الإحصائيات لهذا الموقع، لكن لن يتم تعيير كود التتبع",
@ -184,12 +204,8 @@
"message.share-url": "هذا الرابط الذي تم مشاركته بشكل عام لـ {target}.", "message.share-url": "هذا الرابط الذي تم مشاركته بشكل عام لـ {target}.",
"message.team-already-member": "أنت عضو في المجموعة", "message.team-already-member": "أنت عضو في المجموعة",
"message.team-not-found": "لم يتم العثور على المجموعة", "message.team-not-found": "لم يتم العثور على المجموعة",
"message.team-websites-info": "يمكن مشاهدة الموقع من اي عضو في المجموعة.",
"message.tracking-code": "كود التتبع", "message.tracking-code": "كود التتبع",
"message.user-deleted": "تم حذف المستخدم.", "message.user-deleted": "تم حذف المستخدم.",
"message.visitor-log": "زائر من {country} يستخدم {browser} على {os} {device}", "message.visitor-log": "زائر من {country} يستخدم {browser} على {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "هذه المجموعة ليس لديه اي موقع.",
"message.no-websites-configured": "لم تقم بإعداد اي موقع.",
"message.team-websites-info": "يمكن مشاهدة الموقع من اي عضو في المجموعة.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Дадаць сайт", "label.add-website": "Дадаць сайт",
"label.admin": "Адміністратар", "label.admin": "Адміністратар",
"label.after": "After",
"label.all": "Усё", "label.all": "Усё",
"label.all-time": "Увесь час", "label.all-time": "Увесь час",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Сярэдняя даўжыня наведвання", "label.average-visit-time": "Сярэдняя даўжыня наведвання",
"label.back": "Назад", "label.back": "Назад",
"label.before": "Before",
"label.bounce-rate": "Паказчык адмоваў", "label.bounce-rate": "Паказчык адмоваў",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Браўзеры", "label.browsers": "Браўзеры",
"label.cancel": "Адмена", "label.cancel": "Адмена",
"label.change-password": "Змяніць пароль", "label.change-password": "Змяніць пароль",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Падцвердзіць пароль", "label.confirm-password": "Падцвердзіць пароль",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Краіны", "label.countries": "Краіны",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Карыстацкі дыяпазон", "label.custom-range": "Карыстацкі дыяпазон",
"label.dashboard": "Інфармацыйная панэль", "label.dashboard": "Інфармацыйная панэль",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Дыяпазон дат", "label.date-range": "Дыяпазон дат",
"label.day": "Day",
"label.default-date-range": "Дыяпазон дат па змаўчанню", "label.default-date-range": "Дыяпазон дат па змаўчанню",
"label.delete": "Выдаліць", "label.delete": "Выдаліць",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Выдаліць сайт", "label.delete-website": "Выдаліць сайт",
"label.description": "Description",
"label.desktop": "Настольны ПК", "label.desktop": "Настольны ПК",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Прылады", "label.devices": "Прылады",
"label.dismiss": "Адмена", "label.dismiss": "Адмена",
"label.does-not-contain": "Does not contain",
"label.domain": "Дамен", "label.domain": "Дамен",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Змяніць", "label.edit": "Змяніць",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Падзеі", "label.events": "Падзеі",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Камбініаваны", "label.filter-combined": "Камбініаваны",
"label.filter-raw": "Сырыя", "label.filter-raw": "Сырыя",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Мова", "label.language": "Мова",
@ -61,17 +83,25 @@
"label.last-hours": "Апошнія {x} гадзіны", "label.last-hours": "Апошнія {x} гадзіны",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Login", "label.login": "Login",
"label.logout": "Выйсці", "label.logout": "Выйсці",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Мабільны", "label.mobile": "Мабільны",
"label.more": "Болей", "label.more": "Болей",
"label.my-websites": "My websites",
"label.name": "Імя", "label.name": "Імя",
"label.new-password": "Новы пароль", "label.new-password": "Новы пароль",
"label.none": "Няма", "label.none": "Няма",
"label.operating-systems": "Аперацыонныя сістэмы", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Уласнік", "label.owner": "Уласнік",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Прагляды старонкі", "label.page-views": "Прагляды старонкі",
"label.pageTitle": "Page title",
"label.pages": "Старонкі", "label.pages": "Старонкі",
"label.password": "Пароль", "label.password": "Пароль",
"label.powered-by": "Зроблена {name}", "label.powered-by": "Зроблена {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "У рэяльным часе", "label.realtime": "У рэяльным часе",
"label.referrer": "Referrer",
"label.referrers": "Referrers", "label.referrers": "Referrers",
"label.refresh": "Аднавіць", "label.refresh": "Аднавіць",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Абавязкова", "label.required": "Абавязкова",
"label.reset": "Скінуць", "label.reset": "Скінуць",
"label.reset-website": "Скінуць статыстыку", "label.reset-website": "Скінуць статыстыку",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Захаваць", "label.save": "Захаваць",
@ -99,12 +132,15 @@
"label.settings": "Налады", "label.settings": "Налады",
"label.share-url": "Падзяліцца спасылкай", "label.share-url": "Падзяліцца спасылкай",
"label.single-day": "Адзін дзень", "label.single-day": "Адзін дзень",
"label.sum": "Sum",
"label.tablet": "Планшэт", "label.tablet": "Планшэт",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Тэма", "label.theme": "Тэма",
"label.this-month": "Гэты месяц", "label.this-month": "Гэты месяц",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Сёння", "label.today": "Сёння",
"label.toggle-charts": "Пераключыць графікі", "label.toggle-charts": "Пераключыць графікі",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Код адсочвання", "label.tracking-code": "Код адсочвання",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Унікальныя наведвальнікі", "label.unique-visitors": "Унікальныя наведвальнікі",
"label.unknown": "Невядома", "label.unknown": "Невядома",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Імя карыстальніка", "label.username": "Імя карыстальніка",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Пабачыць дэталі", "label.view-details": "Пабачыць дэталі",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Сайты", "label.websites": "Сайты",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Учора", "label.yesterday": "Учора",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} тякучых {x, plural, one {наведвальнік} other {наведвальнікаў}}", "message.active-users": "{x} тякучых {x, plural, one {наведвальнік} other {наведвальнікаў}}",
"message.confirm-delete": "Вы дакладна хочаце выдаліць {target}?", "message.confirm-delete": "Вы дакладна хочаце выдаліць {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Некарэктны username/password.", "message.incorrect-username-password": "Некарэктны username/password.",
"message.invalid-domain": "Некарэктны дамен", "message.invalid-domain": "Некарэктны дамен",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Няма дадзеных.", "message.no-data-available": "Няма дадзеных.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Паролі не супадаюць", "message.no-match-password": "Паролі не супадаюць",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Вы не наладзілі ніводнага сайту.",
"message.page-not-found": "Старонка не знойдзена.", "message.page-not-found": "Старонка не знойдзена.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Уся статыстыка для гэтага сайту будзе выдалена, але код адсочвання будзе працягваць працаваць.", "message.reset-website-warning": "Уся статыстыка для гэтага сайту будзе выдалена, але код адсочвання будзе працягваць працаваць.",
@ -184,12 +204,8 @@
"message.share-url": "Гэта публічная спасылка для {target}.", "message.share-url": "Гэта публічная спасылка для {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Код адсочвання", "message.tracking-code": "Код адсочвання",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Наведвальнік з {country} праз {browser} на {os} {device}", "message.visitor-log": "Наведвальнік з {country} праз {browser} на {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Вы не наладзілі ніводнага сайту.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "ওয়েবসাইট যুক্ত করুন", "label.add-website": "ওয়েবসাইট যুক্ত করুন",
"label.admin": "অ্যাডমিন", "label.admin": "অ্যাডমিন",
"label.after": "After",
"label.all": "সবগুলো", "label.all": "সবগুলো",
"label.all-time": "সব সময়", "label.all-time": "সব সময়",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "গড় পরিদর্শনের সময়", "label.average-visit-time": "গড় পরিদর্শনের সময়",
"label.back": "পেছনে", "label.back": "পেছনে",
"label.before": "Before",
"label.bounce-rate": "বহিষ্কারের হার", "label.bounce-rate": "বহিষ্কারের হার",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "ব্রাউজার", "label.browsers": "ব্রাউজার",
"label.cancel": "বাতিল", "label.cancel": "বাতিল",
"label.change-password": "পাসওয়ার্ড পরিবর্তন করুন", "label.change-password": "পাসওয়ার্ড পরিবর্তন করুন",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "পাসওয়ার্ড নিশ্চিত করুন", "label.confirm-password": "পাসওয়ার্ড নিশ্চিত করুন",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "দেশ", "label.countries": "দেশ",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "কাস্টম রেঞ্জ", "label.custom-range": "কাস্টম রেঞ্জ",
"label.dashboard": "ড্যাশবোর্ড", "label.dashboard": "ড্যাশবোর্ড",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "তারিখের পরিসীমা", "label.date-range": "তারিখের পরিসীমা",
"label.day": "Day",
"label.default-date-range": "ডিফল্ট তারিখের পরিসীমা", "label.default-date-range": "ডিফল্ট তারিখের পরিসীমা",
"label.delete": "মুছে ফেলুন", "label.delete": "মুছে ফেলুন",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "ওয়েবসাইট মুছুন", "label.delete-website": "ওয়েবসাইট মুছুন",
"label.description": "Description",
"label.desktop": "ডেস্কটপ", "label.desktop": "ডেস্কটপ",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "ডিভাইস গুলো", "label.devices": "ডিভাইস গুলো",
"label.dismiss": "বাতিল", "label.dismiss": "বাতিল",
"label.does-not-contain": "Does not contain",
"label.domain": "ডোমেইন", "label.domain": "ডোমেইন",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "সম্পাদনা করুন", "label.edit": "সম্পাদনা করুন",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "ঘটনা", "label.events": "ঘটনা",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "সম্মিলিত", "label.filter-combined": "সম্মিলিত",
"label.filter-raw": "অপরিশোধিত", "label.filter-raw": "অপরিশোধিত",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "ভাষা", "label.language": "ভাষা",
@ -61,17 +83,25 @@
"label.last-hours": "শেষ {x} ঘন্টা", "label.last-hours": "শেষ {x} ঘন্টা",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "লগিন", "label.login": "লগিন",
"label.logout": "লগ আউট", "label.logout": "লগ আউট",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "মুঠোফোন", "label.mobile": "মুঠোফোন",
"label.more": "আরও", "label.more": "আরও",
"label.my-websites": "My websites",
"label.name": "নাম", "label.name": "নাম",
"label.new-password": "নতুন পাসওয়ার্ড", "label.new-password": "নতুন পাসওয়ার্ড",
"label.none": "কিছুই না", "label.none": "কিছুই না",
"label.operating-systems": "অপারেটিং সিস্টেম গুলো", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "মালিক", "label.owner": "মালিক",
"label.page-of": "Page {current} of {total}",
"label.page-views": "পৃষ্ঠা পরিদর্শন গুলো", "label.page-views": "পৃষ্ঠা পরিদর্শন গুলো",
"label.pageTitle": "Page title",
"label.pages": "পৃষ্ঠাগুলি", "label.pages": "পৃষ্ঠাগুলি",
"label.password": "পাসওয়ার্ড", "label.password": "পাসওয়ার্ড",
"label.powered-by": "{name} দ্বারা চালিত", "label.powered-by": "{name} দ্বারা চালিত",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "সরাসরি", "label.realtime": "সরাসরি",
"label.referrer": "Referrer",
"label.referrers": "রেফারার্স", "label.referrers": "রেফারার্স",
"label.refresh": "রিফ্রেশ", "label.refresh": "রিফ্রেশ",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "প্রয়োজনীয়", "label.required": "প্রয়োজনীয়",
"label.reset": "রিসেট", "label.reset": "রিসেট",
"label.reset-website": "ওয়েবসাইট রিসেট করুন", "label.reset-website": "ওয়েবসাইট রিসেট করুন",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "সংরক্ষণ", "label.save": "সংরক্ষণ",
@ -99,12 +132,15 @@
"label.settings": "সেটিংস", "label.settings": "সেটিংস",
"label.share-url": "ইউআরএল শেয়ার করুন", "label.share-url": "ইউআরএল শেয়ার করুন",
"label.single-day": "একদিন", "label.single-day": "একদিন",
"label.sum": "Sum",
"label.tablet": "ট্যাবলেট", "label.tablet": "ট্যাবলেট",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "থিম", "label.theme": "থিম",
"label.this-month": "এই মাস", "label.this-month": "এই মাস",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "আজ", "label.today": "আজ",
"label.toggle-charts": "চার্ট পরিবর্তন করুন", "label.toggle-charts": "চার্ট পরিবর্তন করুন",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "ট্র্যাকিং কোড", "label.tracking-code": "ট্র্যাকিং কোড",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "অনন্য ভিজিটর", "label.unique-visitors": "অনন্য ভিজিটর",
"label.unknown": "অজানা", "label.unknown": "অজানা",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "ব্যবহারকারীর নাম", "label.username": "ব্যবহারকারীর নাম",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "বিস্তারিত দেখুন", "label.view-details": "বিস্তারিত দেখুন",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "সবগুলো ওয়েবসাইট", "label.websites": "সবগুলো ওয়েবসাইট",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} বর্তমান {x, plural, one {visitor} other {visitors}}", "message.active-users": "{x} বর্তমান {x, plural, one {visitor} other {visitors}}",
"message.confirm-delete": "আপনি কি নিশ্চিত যে আপনি {target} মুছতে চান?", "message.confirm-delete": "আপনি কি নিশ্চিত যে আপনি {target} মুছতে চান?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "ভুল ব্যবহারকারীর নাম/পাসওয়ার্ড।", "message.incorrect-username-password": "ভুল ব্যবহারকারীর নাম/পাসওয়ার্ড।",
"message.invalid-domain": "ভুল ডোমেন", "message.invalid-domain": "ভুল ডোমেন",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "কোন তথ্য নেই।", "message.no-data-available": "কোন তথ্য নেই।",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "পাসওয়ার্ড মেলে না", "message.no-match-password": "পাসওয়ার্ড মেলে না",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "কোনও ওয়েবসাইট কনফিগার করা নেই।",
"message.page-not-found": "পৃষ্ঠা খুঁজে পাওয়া যায়নি।", "message.page-not-found": "পৃষ্ঠা খুঁজে পাওয়া যায়নি।",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "এই ওয়েবসাইটের সমস্ত পরিসংখ্যান মুছে ফেলা হবে, তবে আপনার ট্র্যাকিং কোডটি অক্ষত থাকবে।", "message.reset-website-warning": "এই ওয়েবসাইটের সমস্ত পরিসংখ্যান মুছে ফেলা হবে, তবে আপনার ট্র্যাকিং কোডটি অক্ষত থাকবে।",
@ -184,12 +204,8 @@
"message.share-url": "এটি {target} এর জন্য প্রকাশ্যে শেয়ার করার ইউআরএল।", "message.share-url": "এটি {target} এর জন্য প্রকাশ্যে শেয়ার করার ইউআরএল।",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "ট্র্যাকিং কোড", "message.tracking-code": "ট্র্যাকিং কোড",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "{country} থেকে একজন ভিসিটর {ব্রাউজার}, ব্যবহার করছেন {os} {device} এর মধ্যে।", "message.visitor-log": "{country} থেকে একজন ভিসিটর {ব্রাউজার}, ব্যবহার করছেন {os} {device} এর মধ্যে।"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "কোনও ওয়েবসাইট কনফিগার করা নেই।",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Afegeix lloc web", "label.add-website": "Afegeix lloc web",
"label.admin": "Administrador", "label.admin": "Administrador",
"label.after": "After",
"label.all": "Tots", "label.all": "Tots",
"label.all-time": "Sempre", "label.all-time": "Sempre",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Temps mitjà de visita", "label.average-visit-time": "Temps mitjà de visita",
"label.back": "Enrere", "label.back": "Enrere",
"label.before": "Before",
"label.bounce-rate": "Percentatge de rebot", "label.bounce-rate": "Percentatge de rebot",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Navegadors", "label.browsers": "Navegadors",
"label.cancel": "Cancel·la", "label.cancel": "Cancel·la",
"label.change-password": "Canvia la contrasenya", "label.change-password": "Canvia la contrasenya",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Confirma la contrasenya", "label.confirm-password": "Confirma la contrasenya",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Països", "label.countries": "Països",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Rang personalitzat", "label.custom-range": "Rang personalitzat",
"label.dashboard": "Panell", "label.dashboard": "Panell",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Interval de dates", "label.date-range": "Interval de dates",
"label.day": "Day",
"label.default-date-range": "Interval de dates per defecte", "label.default-date-range": "Interval de dates per defecte",
"label.delete": "Esborra", "label.delete": "Esborra",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Esborra el lloc web", "label.delete-website": "Esborra el lloc web",
"label.description": "Description",
"label.desktop": "Escriptori", "label.desktop": "Escriptori",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Dispositius", "label.devices": "Dispositius",
"label.dismiss": "Descarta", "label.dismiss": "Descarta",
"label.does-not-contain": "Does not contain",
"label.domain": "Domini", "label.domain": "Domini",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Edita", "label.edit": "Edita",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Esdeveniments", "label.events": "Esdeveniments",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Combinat", "label.filter-combined": "Combinat",
"label.filter-raw": "En cru", "label.filter-raw": "En cru",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Últimes {x} hores", "label.last-hours": "Últimes {x} hores",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Connecta't", "label.login": "Connecta't",
"label.logout": "Desconnecta't", "label.logout": "Desconnecta't",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Mòbil", "label.mobile": "Mòbil",
"label.more": "Més", "label.more": "Més",
"label.my-websites": "My websites",
"label.name": "Nom", "label.name": "Nom",
"label.new-password": "Contrasenya nova", "label.new-password": "Contrasenya nova",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Sistemes operatius", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Propietari", "label.owner": "Propietari",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Pàgines vistes", "label.page-views": "Pàgines vistes",
"label.pageTitle": "Page title",
"label.pages": "Pàgines", "label.pages": "Pàgines",
"label.password": "Contrasenya", "label.password": "Contrasenya",
"label.powered-by": "Funciona amb {name}", "label.powered-by": "Funciona amb {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Temps real", "label.realtime": "Temps real",
"label.referrer": "Referrer",
"label.referrers": "Referents", "label.referrers": "Referents",
"label.refresh": "Refresca", "label.refresh": "Refresca",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Obligatori", "label.required": "Obligatori",
"label.reset": "Restableix", "label.reset": "Restableix",
"label.reset-website": "Restableix estadístiques", "label.reset-website": "Restableix estadístiques",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Desa", "label.save": "Desa",
@ -99,12 +132,15 @@
"label.settings": "Configuració", "label.settings": "Configuració",
"label.share-url": "Enllaç per compartir", "label.share-url": "Enllaç per compartir",
"label.single-day": "Un sol dia", "label.single-day": "Un sol dia",
"label.sum": "Sum",
"label.tablet": "Tauleta", "label.tablet": "Tauleta",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "Aquest mes", "label.this-month": "Aquest mes",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Avui", "label.today": "Avui",
"label.toggle-charts": "Mostra/amaga gràfics", "label.toggle-charts": "Mostra/amaga gràfics",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Codi de seguiment", "label.tracking-code": "Codi de seguiment",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Visitants únics", "label.unique-visitors": "Visitants únics",
"label.unknown": "Desconegut", "label.unknown": "Desconegut",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Nom d'usuari", "label.username": "Nom d'usuari",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Veure els detalls", "label.view-details": "Veure els detalls",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Llocs web", "label.websites": "Llocs web",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Ahir", "label.yesterday": "Ahir",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} {x, plural, one {visitant actual} other {visitants actuals}}", "message.active-users": "{x} {x, plural, one {visitant actual} other {visitants actuals}}",
"message.confirm-delete": "Segur que vols esborrar {target}?", "message.confirm-delete": "Segur que vols esborrar {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Nom d'usuari o contrasenya incorrectes.", "message.incorrect-username-password": "Nom d'usuari o contrasenya incorrectes.",
"message.invalid-domain": "Domini invàlid", "message.invalid-domain": "Domini invàlid",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "No hi ha dades disponibles.", "message.no-data-available": "No hi ha dades disponibles.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Les contrasenyes no coincideixen", "message.no-match-password": "Les contrasenyes no coincideixen",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "No hi ha cap lloc web configurat.",
"message.page-not-found": "No s'ha trobat la pàgina.", "message.page-not-found": "No s'ha trobat la pàgina.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "S'esborraran totes les estadístiques per aquest lloc web, però el codi de seguiment es mantindrà.", "message.reset-website-warning": "S'esborraran totes les estadístiques per aquest lloc web, però el codi de seguiment es mantindrà.",
@ -184,12 +204,8 @@
"message.share-url": "Aquest és l'enllaç públic per compartir de {target}.", "message.share-url": "Aquest és l'enllaç públic per compartir de {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Codi de seguiment", "message.tracking-code": "Codi de seguiment",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Visitant de {country} usant {browser} a {os} {device}", "message.visitor-log": "Visitant de {country} usant {browser} a {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "No hi ha cap lloc web configurat.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Přidat web", "label.add-website": "Přidat web",
"label.admin": "Administrátor", "label.admin": "Administrátor",
"label.after": "After",
"label.all": "Vše", "label.all": "Vše",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Průměrný čas návštěvy", "label.average-visit-time": "Průměrný čas návštěvy",
"label.back": "Zpět", "label.back": "Zpět",
"label.before": "Before",
"label.bounce-rate": "Okamžité opuštění", "label.bounce-rate": "Okamžité opuštění",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Prohlížeč", "label.browsers": "Prohlížeč",
"label.cancel": "Zrušit", "label.cancel": "Zrušit",
"label.change-password": "Změnit heslo", "label.change-password": "Změnit heslo",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Potvrdit heslo", "label.confirm-password": "Potvrdit heslo",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Země", "label.countries": "Země",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Vlastní rozsah", "label.custom-range": "Vlastní rozsah",
"label.dashboard": "Přehled", "label.dashboard": "Přehled",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Období", "label.date-range": "Období",
"label.day": "Day",
"label.default-date-range": "Výchozí období", "label.default-date-range": "Výchozí období",
"label.delete": "Smazat", "label.delete": "Smazat",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Smazat web", "label.delete-website": "Smazat web",
"label.description": "Description",
"label.desktop": "Stolní počítač", "label.desktop": "Stolní počítač",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Zařízení", "label.devices": "Zařízení",
"label.dismiss": "Odejít", "label.dismiss": "Odejít",
"label.does-not-contain": "Does not contain",
"label.domain": "Doména", "label.domain": "Doména",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Upravit", "label.edit": "Upravit",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Události", "label.events": "Události",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Kombinace", "label.filter-combined": "Kombinace",
"label.filter-raw": "Nezpracované", "label.filter-raw": "Nezpracované",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Posledních {x} hodin", "label.last-hours": "Posledních {x} hodin",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Přihlásit", "label.login": "Přihlásit",
"label.logout": "Odhlásit", "label.logout": "Odhlásit",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Mobilní telefon", "label.mobile": "Mobilní telefon",
"label.more": "Více", "label.more": "Více",
"label.my-websites": "My websites",
"label.name": "Jméno", "label.name": "Jméno",
"label.new-password": "Nové heslo", "label.new-password": "Nové heslo",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Operační systém", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Zobrazení stránek", "label.page-views": "Zobrazení stránek",
"label.pageTitle": "Page title",
"label.pages": "Stránky", "label.pages": "Stránky",
"label.password": "Heslo", "label.password": "Heslo",
"label.powered-by": "Běží na {name}", "label.powered-by": "Běží na {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Aktuálně", "label.realtime": "Aktuálně",
"label.referrer": "Referrer",
"label.referrers": "Odkazy", "label.referrers": "Odkazy",
"label.refresh": "Obnovit", "label.refresh": "Obnovit",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Vyžadováno", "label.required": "Vyžadováno",
"label.reset": "Reset", "label.reset": "Reset",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Uložit", "label.save": "Uložit",
@ -99,12 +132,15 @@
"label.settings": "Nastavení", "label.settings": "Nastavení",
"label.share-url": "Sdílet URL", "label.share-url": "Sdílet URL",
"label.single-day": "Jeden den", "label.single-day": "Jeden den",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "Tento měsíc", "label.this-month": "Tento měsíc",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Dnes", "label.today": "Dnes",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Sledovací kód", "label.tracking-code": "Sledovací kód",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Jedinečné návštěvy", "label.unique-visitors": "Jedinečné návštěvy",
"label.unknown": "Neznámý", "label.unknown": "Neznámý",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Uživatelské jméno", "label.username": "Uživatelské jméno",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Zobrazit detaily", "label.view-details": "Zobrazit detaily",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Weby", "label.websites": "Weby",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} aktuálně {x, plural, one {návštěvník} other {návštěvníci}}", "message.active-users": "{x} aktuálně {x, plural, one {návštěvník} other {návštěvníci}}",
"message.confirm-delete": "Opravdu smazat {target}?", "message.confirm-delete": "Opravdu smazat {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Nesprávné jméno/heslo.", "message.incorrect-username-password": "Nesprávné jméno/heslo.",
"message.invalid-domain": "Neplatná doména", "message.invalid-domain": "Neplatná doména",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Žádná data.", "message.no-data-available": "Žádná data.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Hesla se neschodují", "message.no-match-password": "Hesla se neschodují",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Nemáte nastavený žádný web.",
"message.page-not-found": "Stránka nenalezena.", "message.page-not-found": "Stránka nenalezena.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "Toto je sdílené URL pro {target}.", "message.share-url": "Toto je sdílené URL pro {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Sledovací kód", "message.tracking-code": "Sledovací kód",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Návštěvník z {country} s prohlížečem {browser} na {os} {device}", "message.visitor-log": "Návštěvník z {country} s prohlížečem {browser} na {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Nemáte nastavený žádný web.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Tilføj hjemmeside", "label.add-website": "Tilføj hjemmeside",
"label.admin": "Administrator", "label.admin": "Administrator",
"label.after": "After",
"label.all": "Alle", "label.all": "Alle",
"label.all-time": "Altid", "label.all-time": "Altid",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Gennemsnitlig besøgstid", "label.average-visit-time": "Gennemsnitlig besøgstid",
"label.back": "Tilbage", "label.back": "Tilbage",
"label.before": "Before",
"label.bounce-rate": "Afvisningsprocent", "label.bounce-rate": "Afvisningsprocent",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Browsere", "label.browsers": "Browsere",
"label.cancel": "Afvis", "label.cancel": "Afvis",
"label.change-password": "Skift adgangskode", "label.change-password": "Skift adgangskode",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Godkendt adgangskode", "label.confirm-password": "Godkendt adgangskode",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Lande", "label.countries": "Lande",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Tilpasset interval", "label.custom-range": "Tilpasset interval",
"label.dashboard": "Betjeningspanel", "label.dashboard": "Betjeningspanel",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Datointerval", "label.date-range": "Datointerval",
"label.day": "Day",
"label.default-date-range": "Standard datointerval", "label.default-date-range": "Standard datointerval",
"label.delete": "Slet", "label.delete": "Slet",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Slet hjemmeside", "label.delete-website": "Slet hjemmeside",
"label.description": "Description",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Enheder", "label.devices": "Enheder",
"label.dismiss": "Afvis", "label.dismiss": "Afvis",
"label.does-not-contain": "Does not contain",
"label.domain": "Domæne", "label.domain": "Domæne",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Rediger", "label.edit": "Rediger",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Hændelser", "label.events": "Hændelser",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Kombineret", "label.filter-combined": "Kombineret",
"label.filter-raw": "Rå", "label.filter-raw": "Rå",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Sprog", "label.language": "Sprog",
@ -61,17 +83,25 @@
"label.last-hours": "Sidste {x} timer", "label.last-hours": "Sidste {x} timer",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Log ind", "label.login": "Log ind",
"label.logout": "Log ud", "label.logout": "Log ud",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Mobil", "label.mobile": "Mobil",
"label.more": "Mere", "label.more": "Mere",
"label.my-websites": "My websites",
"label.name": "Navn", "label.name": "Navn",
"label.new-password": "Ny adgangskode", "label.new-password": "Ny adgangskode",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Operativsystemer", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Ejer", "label.owner": "Ejer",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Sidevisninger", "label.page-views": "Sidevisninger",
"label.pageTitle": "Page title",
"label.pages": "Sider", "label.pages": "Sider",
"label.password": "Adgangskode", "label.password": "Adgangskode",
"label.powered-by": "Drevet af {name}", "label.powered-by": "Drevet af {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Realtid", "label.realtime": "Realtid",
"label.referrer": "Referrer",
"label.referrers": "Henvisninger", "label.referrers": "Henvisninger",
"label.refresh": "Opdater", "label.refresh": "Opdater",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Påkrævet", "label.required": "Påkrævet",
"label.reset": "Nulstil", "label.reset": "Nulstil",
"label.reset-website": "Nulstil statistikker", "label.reset-website": "Nulstil statistikker",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Gem", "label.save": "Gem",
@ -99,12 +132,15 @@
"label.settings": "Indstillinger", "label.settings": "Indstillinger",
"label.share-url": "Del URL", "label.share-url": "Del URL",
"label.single-day": "Enkelt dag", "label.single-day": "Enkelt dag",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Tema", "label.theme": "Tema",
"label.this-month": "Denne måned", "label.this-month": "Denne måned",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Idag", "label.today": "Idag",
"label.toggle-charts": "Ændre graf", "label.toggle-charts": "Ændre graf",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Sporingskode", "label.tracking-code": "Sporingskode",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Unikke besøgende", "label.unique-visitors": "Unikke besøgende",
"label.unknown": "Ukendt", "label.unknown": "Ukendt",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Brugernavn", "label.username": "Brugernavn",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Vis detajler", "label.view-details": "Vis detajler",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Hjemmesider", "label.websites": "Hjemmesider",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} nuværende {x, plural, one {bruger} other {brugere}}", "message.active-users": "{x} nuværende {x, plural, one {bruger} other {brugere}}",
"message.confirm-delete": "Er du sikker på at du vil slette {target}?", "message.confirm-delete": "Er du sikker på at du vil slette {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Ugyldigt brugernavn/adgangskode.", "message.incorrect-username-password": "Ugyldigt brugernavn/adgangskode.",
"message.invalid-domain": "Ugyldigt domæne", "message.invalid-domain": "Ugyldigt domæne",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Ingen data tilgængelig.", "message.no-data-available": "Ingen data tilgængelig.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Adgangskoderne matcher ikke", "message.no-match-password": "Adgangskoderne matcher ikke",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Du har ikke konfigureret nogen hjemmesider.",
"message.page-not-found": "Side ikke fundet.", "message.page-not-found": "Side ikke fundet.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Alle statistikker for denne hjemmeside ville blive slettet, men sporingskode ville forblive intakt.", "message.reset-website-warning": "Alle statistikker for denne hjemmeside ville blive slettet, men sporingskode ville forblive intakt.",
@ -184,12 +204,8 @@
"message.share-url": "Dette er den offentlige delings-URL til {target}.", "message.share-url": "Dette er den offentlige delings-URL til {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Sporingskode", "message.tracking-code": "Sporingskode",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Besøgende fra {country} bruger {browser} på {os} {device}", "message.visitor-log": "Besøgende fra {country} bruger {browser} på {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Du har ikke konfigureret nogen hjemmesider.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Websiite hinzuefüege", "label.add-website": "Websiite hinzuefüege",
"label.admin": "Administrator", "label.admin": "Administrator",
"label.after": "After",
"label.all": "Alli", "label.all": "Alli",
"label.all-time": "Gesamte Zitruum", "label.all-time": "Gesamte Zitruum",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Durchschn. Bsuechsziit", "label.average-visit-time": "Durchschn. Bsuechsziit",
"label.back": "Zrugg", "label.back": "Zrugg",
"label.before": "Before",
"label.bounce-rate": "Absprungsrate", "label.bounce-rate": "Absprungsrate",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Browser", "label.browsers": "Browser",
"label.cancel": "Abbreche", "label.cancel": "Abbreche",
"label.change-password": "Passwort ändere", "label.change-password": "Passwort ändere",
"label.cities": "Städt", "label.cities": "Städt",
"label.city": "City",
"label.clear-all": "Alles lösche", "label.clear-all": "Alles lösche",
"label.confirm": "Bestätige", "label.confirm": "Bestätige",
"label.confirm-password": "Passwort widerhole", "label.confirm-password": "Passwort widerhole",
"label.contains": "Contains",
"label.continue": "Wiiter", "label.continue": "Wiiter",
"label.countries": "Länder", "label.countries": "Länder",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Team erstelle", "label.create-team": "Team erstelle",
"label.create-user": "Benutzer erstelle", "label.create-user": "Benutzer erstelle",
"label.created": "Erstellt", "label.created": "Erstellt",
@ -28,16 +37,21 @@
"label.custom-range": "Benutzerdefinierte Bereich", "label.custom-range": "Benutzerdefinierte Bereich",
"label.dashboard": "Übersicht", "label.dashboard": "Übersicht",
"label.data": "Datä", "label.data": "Datä",
"label.date": "Date",
"label.date-range": "Datumsbereich", "label.date-range": "Datumsbereich",
"label.day": "Day",
"label.default-date-range": "Vorigstellte Datumsbereich", "label.default-date-range": "Vorigstellte Datumsbereich",
"label.delete": "Lösche", "label.delete": "Lösche",
"label.delete-team": "Team lösche", "label.delete-team": "Team lösche",
"label.delete-user": "Benutzer lösche", "label.delete-user": "Benutzer lösche",
"label.delete-website": "Websiite lösche", "label.delete-website": "Websiite lösche",
"label.description": "Description",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Grät", "label.devices": "Grät",
"label.dismiss": "Verwerfe", "label.dismiss": "Verwerfe",
"label.does-not-contain": "Does not contain",
"label.domain": "Domain", "label.domain": "Domain",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Bearbeite", "label.edit": "Bearbeite",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Ereigniss", "label.events": "Ereigniss",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Kombiniert", "label.filter-combined": "Kombiniert",
"label.filter-raw": "Rohdate", "label.filter-raw": "Rohdate",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Biträte", "label.join": "Biträte",
"label.join-team": "Team biträte", "label.join-team": "Team biträte",
"label.language": "Sprach", "label.language": "Sprach",
@ -61,17 +83,25 @@
"label.last-hours": "Letzti {x} Stunde", "label.last-hours": "Letzti {x} Stunde",
"label.leave": "Verlah", "label.leave": "Verlah",
"label.leave-team": "Team verlah", "label.leave-team": "Team verlah",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Aamelde", "label.login": "Aamelde",
"label.logout": "Abmelde", "label.logout": "Abmelde",
"label.max": "Max",
"label.members": "Mitglieder", "label.members": "Mitglieder",
"label.min": "Min",
"label.mobile": "Handy", "label.mobile": "Handy",
"label.more": "Meh", "label.more": "Meh",
"label.my-websites": "My websites",
"label.name": "Name", "label.name": "Name",
"label.new-password": "Neus Passwort", "label.new-password": "Neus Passwort",
"label.none": "Keis", "label.none": "Keis",
"label.operating-systems": "Betriibssystem", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Bsitzer", "label.owner": "Bsitzer",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Siitenufrüef", "label.page-views": "Siitenufrüef",
"label.pageTitle": "Page title",
"label.pages": "Siite", "label.pages": "Siite",
"label.password": "Passwort", "label.password": "Passwort",
"label.powered-by": "Betribe dur {name}", "label.powered-by": "Betribe dur {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Abfragparameter", "label.query-parameters": "Abfragparameter",
"label.realtime": "Echtzit", "label.realtime": "Echtzit",
"label.referrer": "Referrer",
"label.referrers": "Referrer", "label.referrers": "Referrer",
"label.refresh": "Aktualisiere", "label.refresh": "Aktualisiere",
"label.regenerate": "Erneuere", "label.regenerate": "Erneuere",
"label.region": "Region",
"label.regions": "Regionä", "label.regions": "Regionä",
"label.remove": "Entferne", "label.remove": "Entferne",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Erforderlich", "label.required": "Erforderlich",
"label.reset": "Zruggsetze", "label.reset": "Zruggsetze",
"label.reset-website": "Statistik zruggsetze", "label.reset-website": "Statistik zruggsetze",
"label.retention": "Retention",
"label.role": "Rollä", "label.role": "Rollä",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Speichere", "label.save": "Speichere",
@ -99,12 +132,15 @@
"label.settings": "Istellige", "label.settings": "Istellige",
"label.share-url": "Freigab-URL", "label.share-url": "Freigab-URL",
"label.single-day": "Ein Tag", "label.single-day": "Ein Tag",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team Gast", "label.team-guest": "Team Gast",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team Mitglied", "label.team-member": "Team Mitglied",
"label.team-name": "Team name",
"label.team-owner": "Team Bsitzer", "label.team-owner": "Team Bsitzer",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Thema", "label.theme": "Thema",
"label.this-month": "De Monet", "label.this-month": "De Monet",
@ -114,14 +150,21 @@
"label.title": "Titel", "label.title": "Titel",
"label.today": "Hüt", "label.today": "Hüt",
"label.toggle-charts": "Schaubilder umschalte", "label.toggle-charts": "Schaubilder umschalte",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Tracking Code", "label.tracking-code": "Tracking Code",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Eidütigi Bsuecher", "label.unique-visitors": "Eidütigi Bsuecher",
"label.unknown": "Unbekannt", "label.unknown": "Unbekannt",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "Benutzer", "label.user": "Benutzer",
"label.username": "Benutzername", "label.username": "Benutzername",
"label.users": "Benutzer", "label.users": "Benutzer",
"label.value": "Value",
"label.view": "Azeige", "label.view": "Azeige",
"label.view-details": "Details azeige", "label.view-details": "Details azeige",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Websiite", "label.websites": "Websiite",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Gester", "label.yesterday": "Gester",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} {x, plural, one {aktive Bsuecher} other {aktivi Bsuecher}}", "message.active-users": "{x} {x, plural, one {aktive Bsuecher} other {aktivi Bsuecher}}",
"message.confirm-delete": "Sind Sie sich sicher, {target} zlösche?", "message.confirm-delete": "Sind Sie sich sicher, {target} zlösche?",
"message.confirm-leave": "Sind Sie sich sicher, {target} zverlah?", "message.confirm-leave": "Sind Sie sich sicher, {target} zverlah?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Falschs Passwort oder Benutzername.", "message.incorrect-username-password": "Falschs Passwort oder Benutzername.",
"message.invalid-domain": "Ungültigi Domain", "message.invalid-domain": "Ungültigi Domain",
"message.min-password-length": "Miminamli längi vo {n} Zeiche", "message.min-password-length": "Miminamli längi vo {n} Zeiche",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Kei Date vorhande.", "message.no-data-available": "Kei Date vorhande.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Passwörter stimmed ned überi", "message.no-match-password": "Passwörter stimmed ned überi",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "Dem Team sind kei Websiite zuegordnet.",
"message.no-teams": "Bisher sind no kei Teams erstellt worde.", "message.no-teams": "Bisher sind no kei Teams erstellt worde.",
"message.no-users": "Da gits kei Benutzer", "message.no-users": "Da gits kei Benutzer",
"message.no-websites-configured": "Es isch kei Websiite vorhande.",
"message.page-not-found": "Siite ned gfunde.", "message.page-not-found": "Siite ned gfunde.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Alli Date für die Websiite werdet glöscht, nur de Tracking Code blibt bestah.", "message.reset-website-warning": "Alli Date für die Websiite werdet glöscht, nur de Tracking Code blibt bestah.",
@ -184,12 +204,8 @@
"message.share-url": "Ihri Websiitestatistik isch under de folgende URL öffentlich zuegänglich:", "message.share-url": "Ihri Websiitestatistik isch under de folgende URL öffentlich zuegänglich:",
"message.team-already-member": "Sie sind bereits es Mitglied vo dem Team.", "message.team-already-member": "Sie sind bereits es Mitglied vo dem Team.",
"message.team-not-found": "Team nöd gfunde.", "message.team-not-found": "Team nöd gfunde.",
"message.team-websites-info": "Websiite chönd vo jedem im Team agluegt werde",
"message.tracking-code": "Tracking Code", "message.tracking-code": "Tracking Code",
"message.user-deleted": "Benutzer glöscht.", "message.user-deleted": "Benutzer glöscht.",
"message.visitor-log": "Bsuecher us {country} benutzt {browser} uf {os} {device}", "message.visitor-log": "Bsuecher us {country} benutzt {browser} uf {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "Dem Team sind kei Websiite zuegordnet.",
"message.no-websites-configured": "Es isch kei Websiite vorhande.",
"message.team-websites-info": "Websiite chönd vo jedem im Team agluegt werde",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Beschreibung hinzufügen", "label.add-description": "Beschreibung hinzufügen",
"label.add-website": "Webseite hinzufügen", "label.add-website": "Webseite hinzufügen",
"label.admin": "Administrator", "label.admin": "Administrator",
"label.after": "After",
"label.all": "Alle", "label.all": "Alle",
"label.all-time": "Gesamter Zeitraum", "label.all-time": "Gesamter Zeitraum",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Durchschnitt",
"label.average-visit-time": "Durchschn. Besuchszeit", "label.average-visit-time": "Durchschn. Besuchszeit",
"label.back": "Zurück", "label.back": "Zurück",
"label.before": "Before",
"label.bounce-rate": "Absprungrate", "label.bounce-rate": "Absprungrate",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Browser", "label.browsers": "Browser",
"label.cancel": "Abbrechen", "label.cancel": "Abbrechen",
"label.change-password": "Passwort ändern", "label.change-password": "Passwort ändern",
"label.cities": "Städte", "label.cities": "Städte",
"label.city": "City",
"label.clear-all": "Alles löschen", "label.clear-all": "Alles löschen",
"label.confirm": "Bestätigen", "label.confirm": "Bestätigen",
"label.confirm-password": "Passwort wiederholen", "label.confirm-password": "Passwort wiederholen",
"label.contains": "Contains",
"label.continue": "Weiter", "label.continue": "Weiter",
"label.countries": "Länder", "label.countries": "Länder",
"label.country": "Country",
"label.create-report": "Report erstellen",
"label.create-team": "Team erstellen", "label.create-team": "Team erstellen",
"label.create-user": "Benutzer erstellen", "label.create-user": "Benutzer erstellen",
"label.created": "Erstellt", "label.created": "Erstellt",
@ -28,16 +37,21 @@
"label.custom-range": "Benutzerdefinierter Bereich", "label.custom-range": "Benutzerdefinierter Bereich",
"label.dashboard": "Übersicht", "label.dashboard": "Übersicht",
"label.data": "Daten", "label.data": "Daten",
"label.date": "Date",
"label.date-range": "Datumsbereich", "label.date-range": "Datumsbereich",
"label.day": "Day",
"label.default-date-range": "Voreingestellter Datumsbereich", "label.default-date-range": "Voreingestellter Datumsbereich",
"label.delete": "Löschen", "label.delete": "Löschen",
"label.delete-team": "Team löschen", "label.delete-team": "Team löschen",
"label.delete-user": "Benutzer löschen", "label.delete-user": "Benutzer löschen",
"label.delete-website": "Webseite löschen", "label.delete-website": "Webseite löschen",
"label.description": "Beschreibung",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Geräte", "label.devices": "Geräte",
"label.dismiss": "Verwerfen", "label.dismiss": "Verwerfen",
"label.does-not-contain": "Does not contain",
"label.domain": "Domain", "label.domain": "Domain",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Bearbeiten", "label.edit": "Bearbeiten",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event daten", "label.event-data": "Event daten",
"label.events": "Ereignisse", "label.events": "Ereignisse",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Kombiniert", "label.filter-combined": "Kombiniert",
"label.filter-raw": "Rohdaten", "label.filter-raw": "Rohdaten",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Größer als",
"label.greater-than-equals": "Größer oder gleich",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Beitreten", "label.join": "Beitreten",
"label.join-team": "Team beitreten", "label.join-team": "Team beitreten",
"label.language": "Sprache", "label.language": "Sprache",
@ -61,17 +83,25 @@
"label.last-hours": "Letzte {x} Stunden", "label.last-hours": "Letzte {x} Stunden",
"label.leave": "Verlassen", "label.leave": "Verlassen",
"label.leave-team": "Team verlassen", "label.leave-team": "Team verlassen",
"label.less-than": "Kleiner als",
"label.less-than-equals": "Kleiner oder gleich",
"label.login": "Anmelden", "label.login": "Anmelden",
"label.logout": "Abmelden", "label.logout": "Abmelden",
"label.max": "Max",
"label.members": "Mitglieder", "label.members": "Mitglieder",
"label.min": "Min",
"label.mobile": "Handy", "label.mobile": "Handy",
"label.more": "Mehr", "label.more": "Mehr",
"label.my-websites": "My websites",
"label.name": "Name", "label.name": "Name",
"label.new-password": "Neues Passwort", "label.new-password": "Neues Passwort",
"label.none": "Keine", "label.none": "Keine",
"label.operating-systems": "Betriebssysteme", "label.os": "OS",
"label.overview": "Übersicht",
"label.owner": "Besitzer", "label.owner": "Besitzer",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Seitenaufrufe", "label.page-views": "Seitenaufrufe",
"label.pageTitle": "Page title",
"label.pages": "Seiten", "label.pages": "Seiten",
"label.password": "Passwort", "label.password": "Passwort",
"label.powered-by": "Betrieben durch {name}", "label.powered-by": "Betrieben durch {name}",
@ -80,15 +110,18 @@
"label.query": "Abfrage", "label.query": "Abfrage",
"label.query-parameters": "Abfrageparameter", "label.query-parameters": "Abfrageparameter",
"label.realtime": "Echtzeit", "label.realtime": "Echtzeit",
"label.referrer": "Referrer",
"label.referrers": "Referrer", "label.referrers": "Referrer",
"label.refresh": "Aktualisieren", "label.refresh": "Aktualisieren",
"label.regenerate": "Erneuern", "label.regenerate": "Erneuern",
"label.region": "Region",
"label.regions": "Regionen", "label.regions": "Regionen",
"label.remove": "Entfernen", "label.remove": "Entfernen",
"label.reports": "Reporte", "label.reports": "Reporte",
"label.required": "Erforderlich", "label.required": "Erforderlich",
"label.reset": "Zurücksetzen", "label.reset": "Zurücksetzen",
"label.reset-website": "Statistik zurücksetzen", "label.reset-website": "Statistik zurücksetzen",
"label.retention": "Retention",
"label.role": "Rolle", "label.role": "Rolle",
"label.run-query": "Abfrage starten", "label.run-query": "Abfrage starten",
"label.save": "Speichern", "label.save": "Speichern",
@ -99,12 +132,15 @@
"label.settings": "Einstellungen", "label.settings": "Einstellungen",
"label.share-url": "Freigabe-URL", "label.share-url": "Freigabe-URL",
"label.single-day": "Ein Tag", "label.single-day": "Ein Tag",
"label.sum": "Summe",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team Gast", "label.team-guest": "Team Gast",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team Mitglied", "label.team-member": "Team Mitglied",
"label.team-name": "Team name",
"label.team-owner": "Team Eigentümer", "label.team-owner": "Team Eigentümer",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Thema", "label.theme": "Thema",
"label.this-month": "Diesen Monat", "label.this-month": "Diesen Monat",
@ -114,14 +150,21 @@
"label.title": "Titel", "label.title": "Titel",
"label.today": "Heute", "label.today": "Heute",
"label.toggle-charts": "Schaubilder umschalten", "label.toggle-charts": "Schaubilder umschalten",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Tracking Code", "label.tracking-code": "Tracking Code",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Eindeutige Besucher", "label.unique-visitors": "Eindeutige Besucher",
"label.unknown": "Unbekannt", "label.unknown": "Unbekannt",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "Benutzer", "label.user": "Benutzer",
"label.username": "Benutzername", "label.username": "Benutzername",
"label.users": "Benutzer", "label.users": "Benutzer",
"label.value": "Value",
"label.view": "Anzeigen", "label.view": "Anzeigen",
"label.view-details": "Details anzeigen", "label.view-details": "Details anzeigen",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Webseiten", "label.websites": "Webseiten",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Gestern", "label.yesterday": "Gestern",
"labels.after": "After",
"labels.average": "Durchschnitt",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Report erstellen",
"labels.description": "Beschreibung",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Größer als",
"labels.greater-than-equals": "Größer oder gleich",
"labels.less-than": "Kleiner als",
"labels.less-than-equals": "Kleiner oder gleich",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Übersicht",
"labels.sum": "Summe",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} {x, plural, one {aktiver Besucher} other {aktive Besucher}}", "message.active-users": "{x} {x, plural, one {aktiver Besucher} other {aktive Besucher}}",
"message.confirm-delete": "Sind Sie sich sicher, {target} zu löschen?", "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-leave": "Sind Sie sicher, dass die {target} verlassen möchten?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Falsches Passwort oder Benutzername.", "message.incorrect-username-password": "Falsches Passwort oder Benutzername.",
"message.invalid-domain": "Ungültige Domain", "message.invalid-domain": "Ungültige Domain",
"message.min-password-length": "Minimale länge von {n} Zeichen", "message.min-password-length": "Minimale länge von {n} Zeichen",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Keine Daten vorhanden.", "message.no-data-available": "Keine Daten vorhanden.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Passwörter stimmen nicht überein", "message.no-match-password": "Passwörter stimmen nicht überein",
"message.no-results-found": "Keine Ergebnisse gefunden.",
"message.no-team-websites": "Diesem Team sind keine Websites zugeordnet.",
"message.no-teams": "Bisher wurden keine Teams erstellt.", "message.no-teams": "Bisher wurden keine Teams erstellt.",
"message.no-users": "Hier gibt es keine Benutzer.", "message.no-users": "Hier gibt es keine Benutzer.",
"message.no-websites-configured": "Es ist keine Webseite vorhanden.",
"message.page-not-found": "Seite nicht gefunden.", "message.page-not-found": "Seite nicht gefunden.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Alle Daten für diese Webseite werden gelöscht, jedoch bleibt der Tracking Code bestehen.", "message.reset-website-warning": "Alle Daten für diese Webseite werden gelöscht, jedoch bleibt der Tracking Code bestehen.",
@ -184,12 +204,8 @@
"message.share-url": "Ihre Webseitenstatistik ist unter der folgenden URL öffentlich zugänglich:", "message.share-url": "Ihre Webseitenstatistik ist unter der folgenden URL öffentlich zugänglich:",
"message.team-already-member": "Sie sind bereits Mitglied des Teams.", "message.team-already-member": "Sie sind bereits Mitglied des Teams.",
"message.team-not-found": "Team nicht gefunden.", "message.team-not-found": "Team nicht gefunden.",
"message.team-websites-info": "Webseiten können von jedem im Team eingesehen werden.",
"message.tracking-code": "Tracking Code", "message.tracking-code": "Tracking Code",
"message.user-deleted": "Benutzer gelöscht.", "message.user-deleted": "Benutzer gelöscht.",
"message.visitor-log": "Besucher aus {country} benutzt {browser} auf {os} {device}", "message.visitor-log": "Besucher aus {country} benutzt {browser} auf {os} {device}"
"message.no-results-found": "Keine Ergebnisse gefunden.",
"message.no-team-websites": "Diesem Team sind keine Websites zugeordnet.",
"message.no-websites-configured": "Es ist keine Webseite vorhanden.",
"message.team-websites-info": "Webseiten können von jedem im Team eingesehen werden.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Προσθήκη ιστότοπου", "label.add-website": "Προσθήκη ιστότοπου",
"label.admin": "Διαχειριστής", "label.admin": "Διαχειριστής",
"label.after": "After",
"label.all": "All", "label.all": "All",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Μέσος χρόνος επίσκεψης", "label.average-visit-time": "Μέσος χρόνος επίσκεψης",
"label.back": "Πίσω", "label.back": "Πίσω",
"label.before": "Before",
"label.bounce-rate": "Ποσοστό αναπήδησης", "label.bounce-rate": "Ποσοστό αναπήδησης",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Προγράμματα περιήγησης", "label.browsers": "Προγράμματα περιήγησης",
"label.cancel": "Ακύρωση", "label.cancel": "Ακύρωση",
"label.change-password": "Αλλαγή κωδικού", "label.change-password": "Αλλαγή κωδικού",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Επιβεβαίωση κωδικού", "label.confirm-password": "Επιβεβαίωση κωδικού",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Χώρες", "label.countries": "Χώρες",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Προσαρμοσμένο εύρος", "label.custom-range": "Προσαρμοσμένο εύρος",
"label.dashboard": "Πίνακας", "label.dashboard": "Πίνακας",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Εύρος ημερομηνιών", "label.date-range": "Εύρος ημερομηνιών",
"label.day": "Day",
"label.default-date-range": "Προεπιλεγμένο εύρος ημερομηνιών", "label.default-date-range": "Προεπιλεγμένο εύρος ημερομηνιών",
"label.delete": "Διαγραφή", "label.delete": "Διαγραφή",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Διαγραφή ιστότοπου", "label.delete-website": "Διαγραφή ιστότοπου",
"label.description": "Description",
"label.desktop": "Σταθερός υπολογιστής", "label.desktop": "Σταθερός υπολογιστής",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Συσκευές", "label.devices": "Συσκευές",
"label.dismiss": "Dismiss", "label.dismiss": "Dismiss",
"label.does-not-contain": "Does not contain",
"label.domain": "Τομέας", "label.domain": "Τομέας",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Επεξεργασία", "label.edit": "Επεξεργασία",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Γεγονότα", "label.events": "Γεγονότα",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Σε συνδυασμό", "label.filter-combined": "Σε συνδυασμό",
"label.filter-raw": "Ακατέργαστο", "label.filter-raw": "Ακατέργαστο",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Τελευταίες {x} ώρες", "label.last-hours": "Τελευταίες {x} ώρες",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Είσοδος", "label.login": "Είσοδος",
"label.logout": "Αποσύνδεση", "label.logout": "Αποσύνδεση",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Κινητό", "label.mobile": "Κινητό",
"label.more": "Περισσότερα", "label.more": "Περισσότερα",
"label.my-websites": "My websites",
"label.name": "Όνομα", "label.name": "Όνομα",
"label.new-password": "Νέος κωδικός", "label.new-password": "Νέος κωδικός",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Λειτουργικά συστήματα", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Προβολές σελίδας", "label.page-views": "Προβολές σελίδας",
"label.pageTitle": "Page title",
"label.pages": "Σελίδες", "label.pages": "Σελίδες",
"label.password": "Κωδικός", "label.password": "Κωδικός",
"label.powered-by": "Με την υποστήριξη του {name}", "label.powered-by": "Με την υποστήριξη του {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Realtime", "label.realtime": "Realtime",
"label.referrer": "Referrer",
"label.referrers": "Παραπομπές", "label.referrers": "Παραπομπές",
"label.refresh": "Ανανέωση", "label.refresh": "Ανανέωση",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Απαιτείται", "label.required": "Απαιτείται",
"label.reset": "Επαναφορά", "label.reset": "Επαναφορά",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Αποθήκευση", "label.save": "Αποθήκευση",
@ -99,12 +132,15 @@
"label.settings": "Ρυθμίσεις", "label.settings": "Ρυθμίσεις",
"label.share-url": "Κοινοποίηση διεύθυνσης URL", "label.share-url": "Κοινοποίηση διεύθυνσης URL",
"label.single-day": "Ημερήσια", "label.single-day": "Ημερήσια",
"label.sum": "Sum",
"label.tablet": "Τάμπλετ", "label.tablet": "Τάμπλετ",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "Αυτο το μήνα", "label.this-month": "Αυτο το μήνα",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Σήμερα", "label.today": "Σήμερα",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Κωδικός παρακολούθησης", "label.tracking-code": "Κωδικός παρακολούθησης",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Μοναδικοί επισκέπτες", "label.unique-visitors": "Μοναδικοί επισκέπτες",
"label.unknown": "Άγνωστο", "label.unknown": "Άγνωστο",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Όνομα χρήστη", "label.username": "Όνομα χρήστη",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Λεπτομέρειες", "label.view-details": "Λεπτομέρειες",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Ιστότοποι", "label.websites": "Ιστότοποι",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} ενεργοί {x, plural, one {επισκέπτης} other {επισκέπτες}}", "message.active-users": "{x} ενεργοί {x, plural, one {επισκέπτης} other {επισκέπτες}}",
"message.confirm-delete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το {target};", "message.confirm-delete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το {target};",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Εσφαλμένο όνομα χρήστη / κωδικός πρόσβασης.", "message.incorrect-username-password": "Εσφαλμένο όνομα χρήστη / κωδικός πρόσβασης.",
"message.invalid-domain": "Μη έγκυρος τομέας", "message.invalid-domain": "Μη έγκυρος τομέας",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Δεν υπάρχουν διαθέσιμα δεδομένα.", "message.no-data-available": "Δεν υπάρχουν διαθέσιμα δεδομένα.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Οι κωδικοί πρόσβασης δεν ταιριάζουν", "message.no-match-password": "Οι κωδικοί πρόσβασης δεν ταιριάζουν",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Δεν έχετε ρυθμίσει κανένα ιστότοπο.",
"message.page-not-found": "Η σελίδα δεν βρέθηκε.", "message.page-not-found": "Η σελίδα δεν βρέθηκε.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "Αυτό είναι το κοινόχρηστο URL για το {target}.", "message.share-url": "Αυτό είναι το κοινόχρηστο URL για το {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Κωδικός παρακολούθησης", "message.tracking-code": "Κωδικός παρακολούθησης",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Visitor from {country} using {browser} on {os} {device}", "message.visitor-log": "Visitor from {country} using {browser} on {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Δεν έχετε ρυθμίσει κανένα ιστότοπο.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Add website", "label.add-website": "Add website",
"label.admin": "Administrator", "label.admin": "Administrator",
"label.after": "After",
"label.all": "All", "label.all": "All",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Average visit time", "label.average-visit-time": "Average visit time",
"label.back": "Back", "label.back": "Back",
"label.before": "Before",
"label.bounce-rate": "Bounce rate", "label.bounce-rate": "Bounce rate",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Browsers", "label.browsers": "Browsers",
"label.cancel": "Cancel", "label.cancel": "Cancel",
"label.change-password": "Change password", "label.change-password": "Change password",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Confirm password", "label.confirm-password": "Confirm password",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Countries", "label.countries": "Countries",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Custom range", "label.custom-range": "Custom range",
"label.dashboard": "Dashboard", "label.dashboard": "Dashboard",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Date range", "label.date-range": "Date range",
"label.day": "Day",
"label.default-date-range": "Default date range", "label.default-date-range": "Default date range",
"label.delete": "Delete", "label.delete": "Delete",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Delete website", "label.delete-website": "Delete website",
"label.description": "Description",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Devices", "label.devices": "Devices",
"label.dismiss": "Dismiss", "label.dismiss": "Dismiss",
"label.does-not-contain": "Does not contain",
"label.domain": "Domain", "label.domain": "Domain",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Edit", "label.edit": "Edit",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Events", "label.events": "Events",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Combined", "label.filter-combined": "Combined",
"label.filter-raw": "Raw", "label.filter-raw": "Raw",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Last {x} hours", "label.last-hours": "Last {x} hours",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Login", "label.login": "Login",
"label.logout": "Logout", "label.logout": "Logout",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Mobile", "label.mobile": "Mobile",
"label.more": "More", "label.more": "More",
"label.my-websites": "My websites",
"label.name": "Name", "label.name": "Name",
"label.new-password": "New password", "label.new-password": "New password",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Operating systems", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Page views", "label.page-views": "Page views",
"label.pageTitle": "Page title",
"label.pages": "Pages", "label.pages": "Pages",
"label.password": "Password", "label.password": "Password",
"label.powered-by": "Powered by {name}", "label.powered-by": "Powered by {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Realtime", "label.realtime": "Realtime",
"label.referrer": "Referrer",
"label.referrers": "Referrers", "label.referrers": "Referrers",
"label.refresh": "Refresh", "label.refresh": "Refresh",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Required", "label.required": "Required",
"label.reset": "Reset", "label.reset": "Reset",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Save", "label.save": "Save",
@ -99,12 +132,15 @@
"label.settings": "Settings", "label.settings": "Settings",
"label.share-url": "Share URL", "label.share-url": "Share URL",
"label.single-day": "Single day", "label.single-day": "Single day",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "This month", "label.this-month": "This month",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Today", "label.today": "Today",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Tracking code", "label.tracking-code": "Tracking code",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Unique visitors", "label.unique-visitors": "Unique visitors",
"label.unknown": "Unknown", "label.unknown": "Unknown",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Username", "label.username": "Username",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "View details", "label.view-details": "View details",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Websites", "label.websites": "Websites",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} current {x, plural, one {visitor} other {visitors}}", "message.active-users": "{x} current {x, plural, one {visitor} other {visitors}}",
"message.confirm-delete": "Are you sure you want to delete {target}?", "message.confirm-delete": "Are you sure you want to delete {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Incorrect username/password.", "message.incorrect-username-password": "Incorrect username/password.",
"message.invalid-domain": "Invalid domain", "message.invalid-domain": "Invalid domain",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "No data available.", "message.no-data-available": "No data available.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Passwords don't match", "message.no-match-password": "Passwords don't match",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "You don't have any websites configured.",
"message.page-not-found": "Page not found.", "message.page-not-found": "Page not found.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "This is the publicly shared URL for {target}.", "message.share-url": "This is the publicly shared URL for {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Tracking code", "message.tracking-code": "Tracking code",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Visitor from {country} using {browser} on {os} {device}", "message.visitor-log": "Visitor from {country} using {browser} on {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "You don't have any websites configured.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Add website", "label.add-website": "Add website",
"label.admin": "Administrator", "label.admin": "Administrator",
"label.after": "After",
"label.all": "All", "label.all": "All",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Average visit time", "label.average-visit-time": "Average visit time",
"label.back": "Back", "label.back": "Back",
"label.before": "Before",
"label.bounce-rate": "Bounce rate", "label.bounce-rate": "Bounce rate",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Browsers", "label.browsers": "Browsers",
"label.cancel": "Cancel", "label.cancel": "Cancel",
"label.change-password": "Change password", "label.change-password": "Change password",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Confirm password", "label.confirm-password": "Confirm password",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Countries", "label.countries": "Countries",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Custom range", "label.custom-range": "Custom range",
"label.dashboard": "Dashboard", "label.dashboard": "Dashboard",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Date range", "label.date-range": "Date range",
"label.day": "Day",
"label.default-date-range": "Default date range", "label.default-date-range": "Default date range",
"label.delete": "Delete", "label.delete": "Delete",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Delete website", "label.delete-website": "Delete website",
"label.description": "Description",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Devices", "label.devices": "Devices",
"label.dismiss": "Dismiss", "label.dismiss": "Dismiss",
"label.does-not-contain": "Does not contain",
"label.domain": "Domain", "label.domain": "Domain",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Edit", "label.edit": "Edit",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Events", "label.events": "Events",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Combined", "label.filter-combined": "Combined",
"label.filter-raw": "Raw", "label.filter-raw": "Raw",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Last {x} hours", "label.last-hours": "Last {x} hours",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Login", "label.login": "Login",
"label.logout": "Logout", "label.logout": "Logout",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Mobile", "label.mobile": "Mobile",
"label.more": "More", "label.more": "More",
"label.my-websites": "My websites",
"label.name": "Name", "label.name": "Name",
"label.new-password": "New password", "label.new-password": "New password",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Operating systems", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Page views", "label.page-views": "Page views",
"label.pageTitle": "Page title",
"label.pages": "Pages", "label.pages": "Pages",
"label.password": "Password", "label.password": "Password",
"label.powered-by": "Powered by {name}", "label.powered-by": "Powered by {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Realtime", "label.realtime": "Realtime",
"label.referrer": "Referrer",
"label.referrers": "Referrers", "label.referrers": "Referrers",
"label.refresh": "Refresh", "label.refresh": "Refresh",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Required", "label.required": "Required",
"label.reset": "Reset", "label.reset": "Reset",
"label.reset-website": "Reset website", "label.reset-website": "Reset website",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Save", "label.save": "Save",
@ -99,12 +132,15 @@
"label.settings": "Settings", "label.settings": "Settings",
"label.share-url": "Share URL", "label.share-url": "Share URL",
"label.single-day": "Single day", "label.single-day": "Single day",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "This month", "label.this-month": "This month",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Today", "label.today": "Today",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Tracking code", "label.tracking-code": "Tracking code",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Unique visitors", "label.unique-visitors": "Unique visitors",
"label.unknown": "Unknown", "label.unknown": "Unknown",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Username", "label.username": "Username",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "View details", "label.view-details": "View details",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Websites", "label.websites": "Websites",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} current {x, plural, one {visitor} other {visitors}}", "message.active-users": "{x} current {x, plural, one {visitor} other {visitors}}",
"message.confirm-delete": "Are you sure you want to delete {target}?", "message.confirm-delete": "Are you sure you want to delete {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Incorrect username and/or password.", "message.incorrect-username-password": "Incorrect username and/or password.",
"message.invalid-domain": "Invalid domain. Do not include http/https.", "message.invalid-domain": "Invalid domain. Do not include http/https.",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "No data available.", "message.no-data-available": "No data available.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Passwords do not match.", "message.no-match-password": "Passwords do not match.",
"message.no-results-found": "No results found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "You do not have any websites configured.",
"message.page-not-found": "Page not found", "message.page-not-found": "Page not found",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your settings will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your settings will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "Your website stats are publically available at the following URL:", "message.share-url": "Your website stats are publically available at the following URL:",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "To track stats for this website, place the following code in the <head>...</head> section of your HTML.", "message.tracking-code": "To track stats for this website, place the following code in the <head>...</head> section of your HTML.",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Visitor from {country} using {browser} on {os} {device}", "message.visitor-log": "Visitor from {country} using {browser} on {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "You do not have any websites configured.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Añadir descripción", "label.add-description": "Añadir descripción",
"label.add-website": "Nuevo sitio web", "label.add-website": "Nuevo sitio web",
"label.admin": "Administrador", "label.admin": "Administrador",
"label.after": "Después",
"label.all": "Todos", "label.all": "Todos",
"label.all-time": "Todos los tiempos", "label.all-time": "Todos los tiempos",
"label.analytics": "Analíticas", "label.analytics": "Analíticas",
"label.average": "Media",
"label.average-visit-time": "Tiempo promedio de visita", "label.average-visit-time": "Tiempo promedio de visita",
"label.back": "Atrás", "label.back": "Atrás",
"label.before": "Antes",
"label.bounce-rate": "Porcentaje de rebote", "label.bounce-rate": "Porcentaje de rebote",
"label.breakdown": "Desglose",
"label.browser": "Browser",
"label.browsers": "Navegadores", "label.browsers": "Navegadores",
"label.cancel": "Cancelar", "label.cancel": "Cancelar",
"label.change-password": "Cambiar contraseña", "label.change-password": "Cambiar contraseña",
"label.cities": "Ciudades", "label.cities": "Ciudades",
"label.city": "City",
"label.clear-all": "Limpiar todo", "label.clear-all": "Limpiar todo",
"label.confirm": "Confirmar", "label.confirm": "Confirmar",
"label.confirm-password": "Confirmar contraseña", "label.confirm-password": "Confirmar contraseña",
"label.contains": "Contiene",
"label.continue": "Continuar", "label.continue": "Continuar",
"label.countries": "Países", "label.countries": "Países",
"label.country": "Country",
"label.create-report": "Crear reporte",
"label.create-team": "Crear equipo", "label.create-team": "Crear equipo",
"label.create-user": "Crear usuario", "label.create-user": "Crear usuario",
"label.created": "Creado", "label.created": "Creado",
@ -28,16 +37,21 @@
"label.custom-range": "Intervalo personalizado", "label.custom-range": "Intervalo personalizado",
"label.dashboard": "Panel de control", "label.dashboard": "Panel de control",
"label.data": "Datos", "label.data": "Datos",
"label.date": "Date",
"label.date-range": "Intervalo de fechas", "label.date-range": "Intervalo de fechas",
"label.day": "Day",
"label.default-date-range": "Intervalo por defecto", "label.default-date-range": "Intervalo por defecto",
"label.delete": "Eliminar", "label.delete": "Eliminar",
"label.delete-team": "Eliminar equipo", "label.delete-team": "Eliminar equipo",
"label.delete-user": "Eliminar usuario", "label.delete-user": "Eliminar usuario",
"label.delete-website": "Eliminar sitio", "label.delete-website": "Eliminar sitio",
"label.description": "Descripciones",
"label.desktop": "Escritorio", "label.desktop": "Escritorio",
"label.details": "Detalles", "label.details": "Detalles",
"label.device": "Device",
"label.devices": "Dispositivos", "label.devices": "Dispositivos",
"label.dismiss": "Ignorar", "label.dismiss": "Ignorar",
"label.does-not-contain": "No contiene",
"label.domain": "Dominio", "label.domain": "Dominio",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Editar", "label.edit": "Editar",
@ -46,12 +60,20 @@
"label.event": "Evento", "label.event": "Evento",
"label.event-data": "Datos de evento", "label.event-data": "Datos de evento",
"label.events": "Eventos", "label.events": "Eventos",
"label.false": "False",
"label.field": "Campo", "label.field": "Campo",
"label.fields": "Campos", "label.fields": "Campos",
"label.filter-combined": "Combinado", "label.filter-combined": "Combinado",
"label.filter-raw": "En crudo", "label.filter-raw": "En crudo",
"label.filters": "Filtros",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Mayor que",
"label.greater-than-equals": "Mayor que o igual a",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Es igual a",
"label.is-not": "No es igual a",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Unir", "label.join": "Unir",
"label.join-team": "Unirse al equipo", "label.join-team": "Unirse al equipo",
"label.language": "Idioma", "label.language": "Idioma",
@ -61,17 +83,25 @@
"label.last-hours": "Últimas {x} horas", "label.last-hours": "Últimas {x} horas",
"label.leave": "Abandonar", "label.leave": "Abandonar",
"label.leave-team": "Abandonar equipo", "label.leave-team": "Abandonar equipo",
"label.less-than": "Menor que",
"label.less-than-equals": "Menor que o igual a",
"label.login": "Iniciar sesión", "label.login": "Iniciar sesión",
"label.logout": "Cerrar sesión", "label.logout": "Cerrar sesión",
"label.max": "Máx",
"label.members": "Miembros", "label.members": "Miembros",
"label.min": "Mín",
"label.mobile": "Móvil", "label.mobile": "Móvil",
"label.more": "Más", "label.more": "Más",
"label.my-websites": "My websites",
"label.name": "Nombre", "label.name": "Nombre",
"label.new-password": "Nueva contraseña", "label.new-password": "Nueva contraseña",
"label.none": "Ninguno", "label.none": "Ninguno",
"label.operating-systems": "Sistemas operativos", "label.os": "OS",
"label.overview": "Resumen",
"label.owner": "Propietario", "label.owner": "Propietario",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Vistas", "label.page-views": "Vistas",
"label.pageTitle": "Page title",
"label.pages": "Páginas", "label.pages": "Páginas",
"label.password": "Contraseña", "label.password": "Contraseña",
"label.powered-by": "Con la ayuda de {name}", "label.powered-by": "Con la ayuda de {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Parámetros de petición", "label.query-parameters": "Parámetros de petición",
"label.realtime": "Tiempo real", "label.realtime": "Tiempo real",
"label.referrer": "Referrer",
"label.referrers": "Referido desde", "label.referrers": "Referido desde",
"label.refresh": "Actualizar", "label.refresh": "Actualizar",
"label.regenerate": "Regenerar", "label.regenerate": "Regenerar",
"label.region": "Region",
"label.regions": "Regiones", "label.regions": "Regiones",
"label.remove": "Quitar", "label.remove": "Quitar",
"label.reports": "Reportes", "label.reports": "Reportes",
"label.required": "Obligatorio", "label.required": "Obligatorio",
"label.reset": "Reiniciar", "label.reset": "Reiniciar",
"label.reset-website": "Reiniciar estadísticas", "label.reset-website": "Reiniciar estadísticas",
"label.retention": "Retention",
"label.role": "Rol", "label.role": "Rol",
"label.run-query": "Ejecutar consulta", "label.run-query": "Ejecutar consulta",
"label.save": "Guardar", "label.save": "Guardar",
@ -99,12 +132,15 @@
"label.settings": "Configuraciones", "label.settings": "Configuraciones",
"label.share-url": "Compartir URL", "label.share-url": "Compartir URL",
"label.single-day": "Un solo día", "label.single-day": "Un solo día",
"label.sum": "Suma",
"label.tablet": "Tableta", "label.tablet": "Tableta",
"label.team": "Equipo", "label.team": "Equipo",
"label.team-guest": "Invitado al equipo", "label.team-guest": "Invitado al equipo",
"label.team-id": "ID de equipo", "label.team-id": "ID de equipo",
"label.team-member": "Miembro del equipo", "label.team-member": "Miembro del equipo",
"label.team-name": "Team name",
"label.team-owner": "Admin. del equipo", "label.team-owner": "Admin. del equipo",
"label.team-websites": "Team websites",
"label.teams": "Equipos", "label.teams": "Equipos",
"label.theme": "Tema", "label.theme": "Tema",
"label.this-month": "Este mes", "label.this-month": "Este mes",
@ -114,14 +150,21 @@
"label.title": "Título", "label.title": "Título",
"label.today": "Hoy", "label.today": "Hoy",
"label.toggle-charts": "Alternar gráficas", "label.toggle-charts": "Alternar gráficas",
"label.total": "Total",
"label.total-records": "Total de registros",
"label.tracking-code": "Código de rastreo", "label.tracking-code": "Código de rastreo",
"label.true": "Verdadero",
"label.type": "Tipo",
"label.unique": "Único",
"label.unique-visitors": "Visitantes únicos", "label.unique-visitors": "Visitantes únicos",
"label.unknown": "Desconocida", "label.unknown": "Desconocida",
"label.untitled": "Sin título",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "Usuario", "label.user": "Usuario",
"label.username": "Nombre de usuario", "label.username": "Nombre de usuario",
"label.users": "Usuarios", "label.users": "Usuarios",
"label.value": "Valor",
"label.view": "Visualizar", "label.view": "Visualizar",
"label.view-details": "Ver detalles", "label.view-details": "Ver detalles",
"label.view-only": "Ver sólo", "label.view-only": "Ver sólo",
@ -132,33 +175,6 @@
"label.websites": "Sitios web", "label.websites": "Sitios web",
"label.window": "Ventana", "label.window": "Ventana",
"label.yesterday": "Ayer", "label.yesterday": "Ayer",
"labels.after": "Después",
"labels.average": "Media",
"labels.before": "Antes",
"labels.breakdown": "Desglose",
"labels.contains": "Contiene",
"labels.create-report": "Crear reporte",
"labels.description": "Descripciones",
"labels.does-not-contain": "No contiene",
"labels.does-not-equal": "No es igual a",
"labels.equals": "Es igual a",
"labels.false": "False",
"labels.filters": "Filtros",
"labels.greater-than": "Mayor que",
"labels.greater-than-equals": "Mayor que o igual a",
"labels.less-than": "Menor que",
"labels.less-than-equals": "Menor que o igual a",
"labels.max": "Máx",
"labels.min": "Mín",
"labels.overview": "Resumen",
"labels.sum": "Suma",
"labels.total": "Total",
"labels.total-records": "Total de registros",
"labels.true": "Verdadero",
"labels.type": "Tipo",
"labels.unique": "Único",
"labels.untitled": "Sin título",
"labels.value": "Valor",
"message.active-users": "{x} {x, plural, one {activo} other {activos}}", "message.active-users": "{x} {x, plural, one {activo} other {activos}}",
"message.confirm-delete": "¿Seguro que quieres eliminar {target}?", "message.confirm-delete": "¿Seguro que quieres eliminar {target}?",
"message.confirm-leave": "¿Seguro que quieres abandonar {target}?", "message.confirm-leave": "¿Seguro que quieres abandonar {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Nombre de usuario o contraseña incorrectos.", "message.incorrect-username-password": "Nombre de usuario o contraseña incorrectos.",
"message.invalid-domain": "Dominio inválido", "message.invalid-domain": "Dominio inválido",
"message.min-password-length": "Longitud mínima de {n} caracteres", "message.min-password-length": "Longitud mínima de {n} caracteres",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "No hay información disponible.", "message.no-data-available": "No hay información disponible.",
"message.no-event-data": "No hay datos de eventos disponibles.", "message.no-event-data": "No hay datos de eventos disponibles.",
"message.no-match-password": "Las contraseñas no coinciden", "message.no-match-password": "Las contraseñas no coinciden",
"message.no-results-found": "No se encontraron resultados.",
"message.no-team-websites": "Este equipo no tiene ningún sitio web configurado.",
"message.no-teams": "No has creado ningún equipo.", "message.no-teams": "No has creado ningún equipo.",
"message.no-users": "No hay usuarios.", "message.no-users": "No hay usuarios.",
"message.no-websites-configured": "No tienes ningún sitio web configurado.",
"message.page-not-found": "Página no encontrada", "message.page-not-found": "Página no encontrada",
"message.reset-website": "Para reiniciar este sitio web, escribe {confirmation} a continuación para confirmar.", "message.reset-website": "Para reiniciar este sitio web, escribe {confirmation} a continuación para confirmar.",
"message.reset-website-warning": "Todas las estadísticas de esta página serán eliminadas, pero el código de rastreo permanecerá intacto.", "message.reset-website-warning": "Todas las estadísticas de esta página serán eliminadas, pero el código de rastreo permanecerá intacto.",
@ -184,12 +204,8 @@
"message.share-url": "Esta es la URL pública para {target}.", "message.share-url": "Esta es la URL pública para {target}.",
"message.team-already-member": "Ya eres miembro de este equipo.", "message.team-already-member": "Ya eres miembro de este equipo.",
"message.team-not-found": "Equipo no encontrado.", "message.team-not-found": "Equipo no encontrado.",
"message.team-websites-info": "Las analíticas de tus sitios web pueden ser vistas por cualquier miembro del equipo.",
"message.tracking-code": "Código de rastreo", "message.tracking-code": "Código de rastreo",
"message.user-deleted": "Usuario eliminado.", "message.user-deleted": "Usuario eliminado.",
"message.visitor-log": "Visitante desde {country} usando {browser} en {os} {device}", "message.visitor-log": "Visitante desde {country} usando {browser} en {os} {device}"
"message.no-results-found": "No se encontraron resultados.",
"message.no-team-websites": "Este equipo no tiene ningún sitio web configurado.",
"message.no-websites-configured": "No tienes ningún sitio web configurado.",
"message.team-websites-info": "Las analíticas de tus sitios web pueden ser vistas por cualquier miembro del equipo.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Nuevo sitio web", "label.add-website": "Nuevo sitio web",
"label.admin": "Administrador", "label.admin": "Administrador",
"label.after": "After",
"label.all": "Todos", "label.all": "Todos",
"label.all-time": "Todos los tiempos", "label.all-time": "Todos los tiempos",
"label.analytics": "Analíticas", "label.analytics": "Analíticas",
"label.average": "Average",
"label.average-visit-time": "Tiempo promedio de visita", "label.average-visit-time": "Tiempo promedio de visita",
"label.back": "Atrás", "label.back": "Atrás",
"label.before": "Before",
"label.bounce-rate": "Porcentaje de rebote", "label.bounce-rate": "Porcentaje de rebote",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Navegadores", "label.browsers": "Navegadores",
"label.cancel": "Cancelar", "label.cancel": "Cancelar",
"label.change-password": "Cambiar contraseña", "label.change-password": "Cambiar contraseña",
"label.cities": "Ciudades", "label.cities": "Ciudades",
"label.city": "City",
"label.clear-all": "Limpiar todo", "label.clear-all": "Limpiar todo",
"label.confirm": "Confirmar", "label.confirm": "Confirmar",
"label.confirm-password": "Confirmar contraseña", "label.confirm-password": "Confirmar contraseña",
"label.contains": "Contains",
"label.continue": "Continuar", "label.continue": "Continuar",
"label.countries": "Países", "label.countries": "Países",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Crear equipo", "label.create-team": "Crear equipo",
"label.create-user": "Crear usuario", "label.create-user": "Crear usuario",
"label.created": "Creado", "label.created": "Creado",
@ -28,16 +37,21 @@
"label.custom-range": "Intervalo personalizado", "label.custom-range": "Intervalo personalizado",
"label.dashboard": "Panel de control", "label.dashboard": "Panel de control",
"label.data": "Datos", "label.data": "Datos",
"label.date": "Date",
"label.date-range": "Intervalo de fechas", "label.date-range": "Intervalo de fechas",
"label.day": "Day",
"label.default-date-range": "Intervalo por defecto", "label.default-date-range": "Intervalo por defecto",
"label.delete": "Eliminar", "label.delete": "Eliminar",
"label.delete-team": "Eliminar team", "label.delete-team": "Eliminar team",
"label.delete-user": "Eliminar usuario", "label.delete-user": "Eliminar usuario",
"label.delete-website": "Eliminar sitio", "label.delete-website": "Eliminar sitio",
"label.description": "Description",
"label.desktop": "Escritorio", "label.desktop": "Escritorio",
"label.details": "Detalles", "label.details": "Detalles",
"label.device": "Device",
"label.devices": "Dispositivos", "label.devices": "Dispositivos",
"label.dismiss": "Ignorar", "label.dismiss": "Ignorar",
"label.does-not-contain": "Does not contain",
"label.domain": "Dominio", "label.domain": "Dominio",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Editar", "label.edit": "Editar",
@ -46,12 +60,20 @@
"label.event": "Evento", "label.event": "Evento",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Eventos", "label.events": "Eventos",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Combinado", "label.filter-combined": "Combinado",
"label.filter-raw": "Personalizado", "label.filter-raw": "Personalizado",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Unir", "label.join": "Unir",
"label.join-team": "Unir a equipo", "label.join-team": "Unir a equipo",
"label.language": "Idioma", "label.language": "Idioma",
@ -61,17 +83,25 @@
"label.last-hours": "Últimas {x} horas", "label.last-hours": "Últimas {x} horas",
"label.leave": "Abandonar", "label.leave": "Abandonar",
"label.leave-team": "Abandonar equipo", "label.leave-team": "Abandonar equipo",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Iniciar sesión", "label.login": "Iniciar sesión",
"label.logout": "Cerrar sesión", "label.logout": "Cerrar sesión",
"label.max": "Max",
"label.members": "Miembros", "label.members": "Miembros",
"label.min": "Min",
"label.mobile": "Móvil", "label.mobile": "Móvil",
"label.more": "Más", "label.more": "Más",
"label.my-websites": "My websites",
"label.name": "Nombre", "label.name": "Nombre",
"label.new-password": "Nueva contraseña", "label.new-password": "Nueva contraseña",
"label.none": "Ninguno", "label.none": "Ninguno",
"label.operating-systems": "Sistemas operativos", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Propietario", "label.owner": "Propietario",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Vistas", "label.page-views": "Vistas",
"label.pageTitle": "Page title",
"label.pages": "Páginas", "label.pages": "Páginas",
"label.password": "Contraseña", "label.password": "Contraseña",
"label.powered-by": "Analíticas de {name}", "label.powered-by": "Analíticas de {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Parámetros de petición", "label.query-parameters": "Parámetros de petición",
"label.realtime": "Tiempo real", "label.realtime": "Tiempo real",
"label.referrer": "Referrer",
"label.referrers": "Referido desde", "label.referrers": "Referido desde",
"label.refresh": "Actualizar", "label.refresh": "Actualizar",
"label.regenerate": "Regenerar", "label.regenerate": "Regenerar",
"label.region": "Region",
"label.regions": "Regiones", "label.regions": "Regiones",
"label.remove": "Quitar", "label.remove": "Quitar",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Obligatorio", "label.required": "Obligatorio",
"label.reset": "Reiniciar", "label.reset": "Reiniciar",
"label.reset-website": "Reiniciar estadísticas", "label.reset-website": "Reiniciar estadísticas",
"label.retention": "Retention",
"label.role": "Rol", "label.role": "Rol",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Guardar", "label.save": "Guardar",
@ -99,12 +132,15 @@
"label.settings": "Configuraciones", "label.settings": "Configuraciones",
"label.share-url": "Compartir URL", "label.share-url": "Compartir URL",
"label.single-day": "Día", "label.single-day": "Día",
"label.sum": "Sum",
"label.tablet": "Tableta", "label.tablet": "Tableta",
"label.team": "Equipo", "label.team": "Equipo",
"label.team-guest": "Invitado de equipo", "label.team-guest": "Invitado de equipo",
"label.team-id": "ID de equipo", "label.team-id": "ID de equipo",
"label.team-member": "Miembro de equipo", "label.team-member": "Miembro de equipo",
"label.team-name": "Team name",
"label.team-owner": "Admin. del equipo", "label.team-owner": "Admin. del equipo",
"label.team-websites": "Team websites",
"label.teams": "Equipos", "label.teams": "Equipos",
"label.theme": "Tema", "label.theme": "Tema",
"label.this-month": "Este mes", "label.this-month": "Este mes",
@ -114,14 +150,21 @@
"label.title": "Título", "label.title": "Título",
"label.today": "Hoy", "label.today": "Hoy",
"label.toggle-charts": "Alternar gráficas", "label.toggle-charts": "Alternar gráficas",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Código de rastreo", "label.tracking-code": "Código de rastreo",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Visitantes únicos", "label.unique-visitors": "Visitantes únicos",
"label.unknown": "Desconocida", "label.unknown": "Desconocida",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "Usuario", "label.user": "Usuario",
"label.username": "Nombre de usuario", "label.username": "Nombre de usuario",
"label.users": "Usuarios", "label.users": "Usuarios",
"label.value": "Value",
"label.view": "Visualizar", "label.view": "Visualizar",
"label.view-details": "Ver detalles", "label.view-details": "Ver detalles",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Sitios", "label.websites": "Sitios",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Ayer", "label.yesterday": "Ayer",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} {x, plural, one {activo} other {activos}}", "message.active-users": "{x} {x, plural, one {activo} other {activos}}",
"message.confirm-delete": "¿Seguro que quieres eliminar {target}?", "message.confirm-delete": "¿Seguro que quieres eliminar {target}?",
"message.confirm-leave": "¿Seguro que quieres abandonar {target}?", "message.confirm-leave": "¿Seguro que quieres abandonar {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Nombre de usuario o contraseña incorrectos.", "message.incorrect-username-password": "Nombre de usuario o contraseña incorrectos.",
"message.invalid-domain": "Dominio inválido", "message.invalid-domain": "Dominio inválido",
"message.min-password-length": "Longitud mínima de {n} caracteres", "message.min-password-length": "Longitud mínima de {n} caracteres",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "No hay información disponible.", "message.no-data-available": "No hay información disponible.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Las contraseñas no coinciden", "message.no-match-password": "Las contraseñas no coinciden",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "Este equipo no tiene ningún sitio web configurado.",
"message.no-teams": "No has creado ningún equipo.", "message.no-teams": "No has creado ningún equipo.",
"message.no-users": "No hay usuarios.", "message.no-users": "No hay usuarios.",
"message.no-websites-configured": "No tienes ningún sitio configurado.",
"message.page-not-found": "Página no encontrada", "message.page-not-found": "Página no encontrada",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Todas las estadísticas de esta página serán eliminadas, pero el código de rastreo permanecerá intacto.", "message.reset-website-warning": "Todas las estadísticas de esta página serán eliminadas, pero el código de rastreo permanecerá intacto.",
@ -184,12 +204,8 @@
"message.share-url": "Esta es la URL compartida públicamente para {target}.", "message.share-url": "Esta es la URL compartida públicamente para {target}.",
"message.team-already-member": "Ya eres miembro de este equipo.", "message.team-already-member": "Ya eres miembro de este equipo.",
"message.team-not-found": "Equipo no encontrado.", "message.team-not-found": "Equipo no encontrado.",
"message.team-websites-info": "Las analíticas de tus sitios pueden verse por cualquier miembro del equipo.",
"message.tracking-code": "Código de rastreo", "message.tracking-code": "Código de rastreo",
"message.user-deleted": "Usuario eliminado.", "message.user-deleted": "Usuario eliminado.",
"message.visitor-log": "Visitante desde {country} usando {browser} en {os} {device}", "message.visitor-log": "Visitante desde {country} usando {browser} en {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "Este equipo no tiene ningún sitio web configurado.",
"message.no-websites-configured": "No tienes ningún sitio configurado.",
"message.team-websites-info": "Las analíticas de tus sitios pueden verse por cualquier miembro del equipo.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "افزودن وب‌سایت", "label.add-website": "افزودن وب‌سایت",
"label.admin": "مدیر", "label.admin": "مدیر",
"label.after": "After",
"label.all": "همه", "label.all": "همه",
"label.all-time": "همه زمان", "label.all-time": "همه زمان",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "میانگین زمان بازدید", "label.average-visit-time": "میانگین زمان بازدید",
"label.back": "برگشت", "label.back": "برگشت",
"label.before": "Before",
"label.bounce-rate": "نرخ Bounce", "label.bounce-rate": "نرخ Bounce",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "مروگرها", "label.browsers": "مروگرها",
"label.cancel": "انصراف", "label.cancel": "انصراف",
"label.change-password": "تغییر رمز", "label.change-password": "تغییر رمز",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "تایید رمز", "label.confirm-password": "تایید رمز",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "کشورها", "label.countries": "کشورها",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "محدوده‌ی دلخواه", "label.custom-range": "محدوده‌ی دلخواه",
"label.dashboard": "داشبورد", "label.dashboard": "داشبورد",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "محدوده‌ی تاریخ", "label.date-range": "محدوده‌ی تاریخ",
"label.day": "Day",
"label.default-date-range": "محدوده‌ی پیشفرض تاریخ", "label.default-date-range": "محدوده‌ی پیشفرض تاریخ",
"label.delete": "حذف", "label.delete": "حذف",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "حذف وب‌سایت", "label.delete-website": "حذف وب‌سایت",
"label.description": "Description",
"label.desktop": "دسکتاپ", "label.desktop": "دسکتاپ",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "دستگاه‌ها", "label.devices": "دستگاه‌ها",
"label.dismiss": "رد کردن", "label.dismiss": "رد کردن",
"label.does-not-contain": "Does not contain",
"label.domain": "دامنه", "label.domain": "دامنه",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "ویرایش", "label.edit": "ویرایش",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "رویدادها", "label.events": "رویدادها",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "ترکیب شده", "label.filter-combined": "ترکیب شده",
"label.filter-raw": "خام", "label.filter-raw": "خام",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "زبان", "label.language": "زبان",
@ -61,17 +83,25 @@
"label.last-hours": "لیست {x} ساعت گذشته", "label.last-hours": "لیست {x} ساعت گذشته",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "ورود", "label.login": "ورود",
"label.logout": "خروج", "label.logout": "خروج",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "موبایل", "label.mobile": "موبایل",
"label.more": "بیشتر", "label.more": "بیشتر",
"label.my-websites": "My websites",
"label.name": "نام", "label.name": "نام",
"label.new-password": "رمز جدید", "label.new-password": "رمز جدید",
"label.none": "None", "label.none": "None",
"label.operating-systems": "سیستم‌عامل‌ها", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "ایجاد شده توسط", "label.owner": "ایجاد شده توسط",
"label.page-of": "Page {current} of {total}",
"label.page-views": "بازدید صفحه", "label.page-views": "بازدید صفحه",
"label.pageTitle": "Page title",
"label.pages": "صفحه‌ها", "label.pages": "صفحه‌ها",
"label.password": "رمز", "label.password": "رمز",
"label.powered-by": "قدرت گرفته توسط {name}", "label.powered-by": "قدرت گرفته توسط {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "آمار زنده", "label.realtime": "آمار زنده",
"label.referrer": "Referrer",
"label.referrers": "ارجاع دهندگان", "label.referrers": "ارجاع دهندگان",
"label.refresh": "به‌روزرسانی", "label.refresh": "به‌روزرسانی",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "ضروری", "label.required": "ضروری",
"label.reset": "بازنشانی", "label.reset": "بازنشانی",
"label.reset-website": "بازنشانی آمار", "label.reset-website": "بازنشانی آمار",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "ذخیره", "label.save": "ذخیره",
@ -99,12 +132,15 @@
"label.settings": "تنظیمات", "label.settings": "تنظیمات",
"label.share-url": "به اشتراک گذاری URL", "label.share-url": "به اشتراک گذاری URL",
"label.single-day": "یک روز", "label.single-day": "یک روز",
"label.sum": "Sum",
"label.tablet": "تبلت", "label.tablet": "تبلت",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "تم", "label.theme": "تم",
"label.this-month": "این ماه", "label.this-month": "این ماه",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "امروز", "label.today": "امروز",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "کد رهگیری", "label.tracking-code": "کد رهگیری",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "بازدیدکننده‌های یکتا", "label.unique-visitors": "بازدیدکننده‌های یکتا",
"label.unknown": "ناشناخته", "label.unknown": "ناشناخته",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "نام کاربری", "label.username": "نام کاربری",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "مشاهده‌ی جزئیات", "label.view-details": "مشاهده‌ی جزئیات",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "وب‌سایت‌ها", "label.websites": "وب‌سایت‌ها",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} هم اکنون {x, plural, one {یک} other {از میان}}", "message.active-users": "{x} هم اکنون {x, plural, one {یک} other {از میان}}",
"message.confirm-delete": "آیا مطمئن هستید می‌خواهید {target} را حذف کنید?", "message.confirm-delete": "آیا مطمئن هستید می‌خواهید {target} را حذف کنید?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "نام کاربری / رمز نادرست است.", "message.incorrect-username-password": "نام کاربری / رمز نادرست است.",
"message.invalid-domain": "دامنه‌ی نامعتبر", "message.invalid-domain": "دامنه‌ی نامعتبر",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "اطلاعاتی موجود نیست.", "message.no-data-available": "اطلاعاتی موجود نیست.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "رمزها یکسان نیستند", "message.no-match-password": "رمزها یکسان نیستند",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "شما هیچ وب‌سایتی را پیکربندی نکرده‌اید.",
"message.page-not-found": "صفحه یافت نشد.", "message.page-not-found": "صفحه یافت نشد.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "تمامی آمارهای این وب‌سایت حذف خواهد شد اما tracking code بدون تغییر باقی می‌ماند.", "message.reset-website-warning": "تمامی آمارهای این وب‌سایت حذف خواهد شد اما tracking code بدون تغییر باقی می‌ماند.",
@ -184,12 +204,8 @@
"message.share-url": "این URL به اشتراک گذاشته شده عمومی برای {target} است.", "message.share-url": "این URL به اشتراک گذاشته شده عمومی برای {target} است.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "کد رهگیری", "message.tracking-code": "کد رهگیری",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "بازدیدکننده از کشور {country} با مروگر {browser} در {os} {device}", "message.visitor-log": "بازدیدکننده از کشور {country} با مروگر {browser} در {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "شما هیچ وب‌سایتی را پیکربندی نکرده‌اید.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Lisää verkkosivu", "label.add-website": "Lisää verkkosivu",
"label.admin": "Järjestelmänvalvoja", "label.admin": "Järjestelmänvalvoja",
"label.after": "After",
"label.all": "Kaikki", "label.all": "Kaikki",
"label.all-time": "Alusta lähtien", "label.all-time": "Alusta lähtien",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Keskimääräinen vierailuaika", "label.average-visit-time": "Keskimääräinen vierailuaika",
"label.back": "Takaisin", "label.back": "Takaisin",
"label.before": "Before",
"label.bounce-rate": "Välitön poistuminen", "label.bounce-rate": "Välitön poistuminen",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Selaimet", "label.browsers": "Selaimet",
"label.cancel": "Peruuta", "label.cancel": "Peruuta",
"label.change-password": "Vaihda salasana", "label.change-password": "Vaihda salasana",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Vahvista salasana", "label.confirm-password": "Vahvista salasana",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Maat", "label.countries": "Maat",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Mukautettu ajanjakso", "label.custom-range": "Mukautettu ajanjakso",
"label.dashboard": "Ohjauspaneeli", "label.dashboard": "Ohjauspaneeli",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Ajanjakso", "label.date-range": "Ajanjakso",
"label.day": "Day",
"label.default-date-range": "Oletusajanjakso", "label.default-date-range": "Oletusajanjakso",
"label.delete": "Poista", "label.delete": "Poista",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Poista verkkosivu", "label.delete-website": "Poista verkkosivu",
"label.description": "Description",
"label.desktop": "Pöytäkone", "label.desktop": "Pöytäkone",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Laitteet", "label.devices": "Laitteet",
"label.dismiss": "Hylkää", "label.dismiss": "Hylkää",
"label.does-not-contain": "Does not contain",
"label.domain": "Verkkotunnus", "label.domain": "Verkkotunnus",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Muokkaa", "label.edit": "Muokkaa",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Tapahtumat", "label.events": "Tapahtumat",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Yhdistetty", "label.filter-combined": "Yhdistetty",
"label.filter-raw": "Käsittelemätön", "label.filter-raw": "Käsittelemätön",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Kieli", "label.language": "Kieli",
@ -61,17 +83,25 @@
"label.last-hours": "Viimeisimmät {x} tuntia", "label.last-hours": "Viimeisimmät {x} tuntia",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Kirjaudu sisään", "label.login": "Kirjaudu sisään",
"label.logout": "Kirjaudu ulos", "label.logout": "Kirjaudu ulos",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Puhelin", "label.mobile": "Puhelin",
"label.more": "Lisää", "label.more": "Lisää",
"label.my-websites": "My websites",
"label.name": "Nimi", "label.name": "Nimi",
"label.new-password": "Uusi salasana", "label.new-password": "Uusi salasana",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Käyttöjärjestelmät", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Omistaja", "label.owner": "Omistaja",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Sivun näyttökerrat", "label.page-views": "Sivun näyttökerrat",
"label.pageTitle": "Page title",
"label.pages": "Sivut", "label.pages": "Sivut",
"label.password": "Salasana", "label.password": "Salasana",
"label.powered-by": "Voimanlähteenä {name}", "label.powered-by": "Voimanlähteenä {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Juuri nyt", "label.realtime": "Juuri nyt",
"label.referrer": "Referrer",
"label.referrers": "Viittaajat", "label.referrers": "Viittaajat",
"label.refresh": "Päivitä", "label.refresh": "Päivitä",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Vaaditaan", "label.required": "Vaaditaan",
"label.reset": "Nollaa", "label.reset": "Nollaa",
"label.reset-website": "Nollaa tilastot", "label.reset-website": "Nollaa tilastot",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Tallenna", "label.save": "Tallenna",
@ -99,12 +132,15 @@
"label.settings": "Asetukset", "label.settings": "Asetukset",
"label.share-url": "Jaa URL", "label.share-url": "Jaa URL",
"label.single-day": "Yksi päivä", "label.single-day": "Yksi päivä",
"label.sum": "Sum",
"label.tablet": "Tabletti", "label.tablet": "Tabletti",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Teema", "label.theme": "Teema",
"label.this-month": "Tämä kuukausi", "label.this-month": "Tämä kuukausi",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Tänään", "label.today": "Tänään",
"label.toggle-charts": "Kytke kaaviot päälle/pois", "label.toggle-charts": "Kytke kaaviot päälle/pois",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Seurantakoodi", "label.tracking-code": "Seurantakoodi",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Yksittäiset kävijät", "label.unique-visitors": "Yksittäiset kävijät",
"label.unknown": "Tuntematon", "label.unknown": "Tuntematon",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Käyttäjänimi", "label.username": "Käyttäjänimi",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Katso tiedot", "label.view-details": "Katso tiedot",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Verkkosivut", "label.websites": "Verkkosivut",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} {x, plural, one {vierailija} other {vierailijaa}}", "message.active-users": "{x} {x, plural, one {vierailija} other {vierailijaa}}",
"message.confirm-delete": "Haluatko varmasti poistaa sivuston {target}?", "message.confirm-delete": "Haluatko varmasti poistaa sivuston {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Väärä käyttäjänimi/salasana.", "message.incorrect-username-password": "Väärä käyttäjänimi/salasana.",
"message.invalid-domain": "Virheellinen verkkotunnus", "message.invalid-domain": "Virheellinen verkkotunnus",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Tietoja ei ole käytettävissä.", "message.no-data-available": "Tietoja ei ole käytettävissä.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Salasanat eivät täsmää", "message.no-match-password": "Salasanat eivät täsmää",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Sinulla ei ole määritettyjä verkkosivustoja.",
"message.page-not-found": "Sivua ei löydetty.", "message.page-not-found": "Sivua ei löydetty.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Kaikki sivuston tilastot poistetaan, mutta seurantakoodi pysyy muuttumattomana.", "message.reset-website-warning": "Kaikki sivuston tilastot poistetaan, mutta seurantakoodi pysyy muuttumattomana.",
@ -184,12 +204,8 @@
"message.share-url": "Tämä on julkisesti jaettu URL sivustolle {target}.", "message.share-url": "Tämä on julkisesti jaettu URL sivustolle {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Seurantakoodi", "message.tracking-code": "Seurantakoodi",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Vierailija maasta {country} selaimella {browser} laitteella {os} {device}", "message.visitor-log": "Vierailija maasta {country} selaimella {browser} laitteella {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Sinulla ei ole määritettyjä verkkosivustoja.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Legg heimasíðu afturat", "label.add-website": "Legg heimasíðu afturat",
"label.admin": "Fyrisitari", "label.admin": "Fyrisitari",
"label.after": "After",
"label.all": "Alt", "label.all": "Alt",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Miðal vitjurnartíð ", "label.average-visit-time": "Miðal vitjurnartíð ",
"label.back": "Aftur", "label.back": "Aftur",
"label.before": "Before",
"label.bounce-rate": "Bounce prosenttal", "label.bounce-rate": "Bounce prosenttal",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Kagar", "label.browsers": "Kagar",
"label.cancel": "Strika", "label.cancel": "Strika",
"label.change-password": "Skift loyniorð", "label.change-password": "Skift loyniorð",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Vátta loyniorð", "label.confirm-password": "Vátta loyniorð",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Lond", "label.countries": "Lond",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Tillaga spenni", "label.custom-range": "Tillaga spenni",
"label.dashboard": "Yvirlitsskíggi", "label.dashboard": "Yvirlitsskíggi",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Vel dato", "label.date-range": "Vel dato",
"label.day": "Day",
"label.default-date-range": "Forsett dato", "label.default-date-range": "Forsett dato",
"label.delete": "Sletta", "label.delete": "Sletta",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Sletta heimasíðu", "label.delete-website": "Sletta heimasíðu",
"label.description": "Description",
"label.desktop": "Borðtelda", "label.desktop": "Borðtelda",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Tóleindir", "label.devices": "Tóleindir",
"label.dismiss": "Lat fara", "label.dismiss": "Lat fara",
"label.does-not-contain": "Does not contain",
"label.domain": "Økisnavn", "label.domain": "Økisnavn",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Ger broyting", "label.edit": "Ger broyting",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Hendingar/tiltøk", "label.events": "Hendingar/tiltøk",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Samansett", "label.filter-combined": "Samansett",
"label.filter-raw": "Óviðgjørt", "label.filter-raw": "Óviðgjørt",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Seinastu {x} tímarnar", "label.last-hours": "Seinastu {x} tímarnar",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Rita inn", "label.login": "Rita inn",
"label.logout": "Rita út", "label.logout": "Rita út",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Telefon", "label.mobile": "Telefon",
"label.more": "Meira", "label.more": "Meira",
"label.my-websites": "My websites",
"label.name": "Navn", "label.name": "Navn",
"label.new-password": "Nýtt loyniorð", "label.new-password": "Nýtt loyniorð",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Stýrikervir", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Opnaðar síðir", "label.page-views": "Opnaðar síðir",
"label.pageTitle": "Page title",
"label.pages": "Síðir", "label.pages": "Síðir",
"label.password": "Loyniorð", "label.password": "Loyniorð",
"label.powered-by": "Powered by {name}", "label.powered-by": "Powered by {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Beinleiðis", "label.realtime": "Beinleiðis",
"label.referrer": "Referrer",
"label.referrers": "Framsendingar", "label.referrers": "Framsendingar",
"label.refresh": "Endurskapa", "label.refresh": "Endurskapa",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Kravt", "label.required": "Kravt",
"label.reset": "Nulstilla", "label.reset": "Nulstilla",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Goym", "label.save": "Goym",
@ -99,12 +132,15 @@
"label.settings": "Stillingar", "label.settings": "Stillingar",
"label.share-url": "Deil leinku", "label.share-url": "Deil leinku",
"label.single-day": "Einkultur dagur", "label.single-day": "Einkultur dagur",
"label.sum": "Sum",
"label.tablet": "Teldil", "label.tablet": "Teldil",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "Hendan mánan", "label.this-month": "Hendan mánan",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Í dag", "label.today": "Í dag",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Spori kota", "label.tracking-code": "Spori kota",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Einsýna vitjanir", "label.unique-visitors": "Einsýna vitjanir",
"label.unknown": "Ókent", "label.unknown": "Ókent",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Brúkaranavn", "label.username": "Brúkaranavn",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Vís frágreiðing", "label.view-details": "Vís frágreiðing",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Heimasíður", "label.websites": "Heimasíður",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} í løtuni {x, plural, one {vitjandi} other { vitjandi }}", "message.active-users": "{x} í løtuni {x, plural, one {vitjandi} other { vitjandi }}",
"message.confirm-delete": "Ert tú sikkur at tú ynskir at strika {target}?", "message.confirm-delete": "Ert tú sikkur at tú ynskir at strika {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Skeivt brúkaranavn/loyniorð.", "message.incorrect-username-password": "Skeivt brúkaranavn/loyniorð.",
"message.invalid-domain": "Ógilt økisnavn", "message.invalid-domain": "Ógilt økisnavn",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Einki data tøk.", "message.no-data-available": "Einki data tøk.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Loyniorðini eru ikki eins", "message.no-match-password": "Loyniorðini eru ikki eins",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Tú hevur ongar heimasíður stillaða til.",
"message.page-not-found": "Síðan bleiv ikki funnin.", "message.page-not-found": "Síðan bleiv ikki funnin.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "Hettar er tann almenna leinkan av {target}.", "message.share-url": "Hettar er tann almenna leinkan av {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Spori kota", "message.tracking-code": "Spori kota",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Vitjandi frá {country} brúkar {browser} á {os} {device}", "message.visitor-log": "Vitjandi frá {country} brúkar {browser} á {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Tú hevur ongar heimasíður stillaða til.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Ajouter une description", "label.add-description": "Ajouter une description",
"label.add-website": "Ajouter un site", "label.add-website": "Ajouter un site",
"label.admin": "Administrateur", "label.admin": "Administrateur",
"label.after": "Après",
"label.all": "Tout", "label.all": "Tout",
"label.all-time": "Toutes les données", "label.all-time": "Toutes les données",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Moyenne",
"label.average-visit-time": "Temps de visite moyen", "label.average-visit-time": "Temps de visite moyen",
"label.back": "Retour", "label.back": "Retour",
"label.before": "Avant",
"label.bounce-rate": "Taux de rebond", "label.bounce-rate": "Taux de rebond",
"label.breakdown": "Répartition",
"label.browser": "Browser",
"label.browsers": "Navigateurs", "label.browsers": "Navigateurs",
"label.cancel": "Annuler", "label.cancel": "Annuler",
"label.change-password": "Changer le mot de passe", "label.change-password": "Changer le mot de passe",
"label.cities": "Villes", "label.cities": "Villes",
"label.city": "City",
"label.clear-all": "Réinitialiser", "label.clear-all": "Réinitialiser",
"label.confirm": "Confirmer", "label.confirm": "Confirmer",
"label.confirm-password": "Confirmation du mot de passe", "label.confirm-password": "Confirmation du mot de passe",
"label.contains": "Contient",
"label.continue": "Continuer", "label.continue": "Continuer",
"label.countries": "Pays", "label.countries": "Pays",
"label.country": "Country",
"label.create-report": "Créer un rapport",
"label.create-team": "Créer une équipe", "label.create-team": "Créer une équipe",
"label.create-user": "Créer un utilisateur", "label.create-user": "Créer un utilisateur",
"label.created": "Créé", "label.created": "Créé",
@ -28,16 +37,21 @@
"label.custom-range": "Période personnalisée", "label.custom-range": "Période personnalisée",
"label.dashboard": "Tableau de bord", "label.dashboard": "Tableau de bord",
"label.data": "Données", "label.data": "Données",
"label.date": "Date",
"label.date-range": "Période", "label.date-range": "Période",
"label.day": "Day",
"label.default-date-range": "Période par défaut", "label.default-date-range": "Période par défaut",
"label.delete": "Supprimer", "label.delete": "Supprimer",
"label.delete-team": "Supprimer l'équipe", "label.delete-team": "Supprimer l'équipe",
"label.delete-user": "Supprimer l'utilisateur", "label.delete-user": "Supprimer l'utilisateur",
"label.delete-website": "Supprimer le site", "label.delete-website": "Supprimer le site",
"label.description": "Description",
"label.desktop": "Ordinateur", "label.desktop": "Ordinateur",
"label.details": "Détails", "label.details": "Détails",
"label.device": "Device",
"label.devices": "Appareils", "label.devices": "Appareils",
"label.dismiss": "Ignorer", "label.dismiss": "Ignorer",
"label.does-not-contain": "Ne contient pas",
"label.domain": "Domaine", "label.domain": "Domaine",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Modifier", "label.edit": "Modifier",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Données d'événements", "label.event-data": "Données d'événements",
"label.events": "Événements", "label.events": "Événements",
"label.false": "Faux",
"label.field": "Champ", "label.field": "Champ",
"label.fields": "Champs", "label.fields": "Champs",
"label.filter-combined": "Combiné", "label.filter-combined": "Combiné",
"label.filter-raw": "Brut", "label.filter-raw": "Brut",
"label.filters": "Filtres",
"label.funnel": "Entonnoir", "label.funnel": "Entonnoir",
"label.greater-than": "Supérieur à",
"label.greater-than-equals": "Supérieur ou égal à",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Est égal",
"label.is-not": "N'est pas égal",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Rejoindre", "label.join": "Rejoindre",
"label.join-team": "Rejoindre une équipe", "label.join-team": "Rejoindre une équipe",
"label.language": "Langue", "label.language": "Langue",
@ -61,17 +83,25 @@
"label.last-hours": "{x} dernières heures", "label.last-hours": "{x} dernières heures",
"label.leave": "Quitter", "label.leave": "Quitter",
"label.leave-team": "Quitter l'équipe", "label.leave-team": "Quitter l'équipe",
"label.less-than": "Inférieur à",
"label.less-than-equals": "Inférieur ou égal à",
"label.login": "Connexion", "label.login": "Connexion",
"label.logout": "Déconnexion", "label.logout": "Déconnexion",
"label.max": "Max",
"label.members": "Membres", "label.members": "Membres",
"label.min": "Min",
"label.mobile": "Téléphone", "label.mobile": "Téléphone",
"label.more": "Plus", "label.more": "Plus",
"label.my-websites": "My websites",
"label.name": "Nom", "label.name": "Nom",
"label.new-password": "Nouveau mot de passe", "label.new-password": "Nouveau mot de passe",
"label.none": "Aucun·e", "label.none": "Aucun·e",
"label.operating-systems": "Systèmes d'exploitation", "label.os": "OS",
"label.overview": "Vue d'ensemble",
"label.owner": "Propriétaire", "label.owner": "Propriétaire",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Pages vues", "label.page-views": "Pages vues",
"label.pageTitle": "Page title",
"label.pages": "Pages", "label.pages": "Pages",
"label.password": "Mot de passe", "label.password": "Mot de passe",
"label.powered-by": "Propulsé par {name}", "label.powered-by": "Propulsé par {name}",
@ -80,15 +110,18 @@
"label.query": "Requête", "label.query": "Requête",
"label.query-parameters": "Paramètres d'URL", "label.query-parameters": "Paramètres d'URL",
"label.realtime": "Temps réel", "label.realtime": "Temps réel",
"label.referrer": "Referrer",
"label.referrers": "Sites référents", "label.referrers": "Sites référents",
"label.refresh": "Rafraîchir", "label.refresh": "Rafraîchir",
"label.regenerate": "Régénérer", "label.regenerate": "Régénérer",
"label.region": "Region",
"label.regions": "Régions", "label.regions": "Régions",
"label.remove": "Retirer", "label.remove": "Retirer",
"label.reports": "Rapports", "label.reports": "Rapports",
"label.required": "Requis", "label.required": "Requis",
"label.reset": "Réinitialiser", "label.reset": "Réinitialiser",
"label.reset-website": "Réinitialiser les statistiques", "label.reset-website": "Réinitialiser les statistiques",
"label.retention": "Retention",
"label.role": "Rôle", "label.role": "Rôle",
"label.run-query": "Éxécuter la requête", "label.run-query": "Éxécuter la requête",
"label.save": "Enregistrer", "label.save": "Enregistrer",
@ -99,12 +132,15 @@
"label.settings": "Paramètres", "label.settings": "Paramètres",
"label.share-url": "URL de partage", "label.share-url": "URL de partage",
"label.single-day": "Journée", "label.single-day": "Journée",
"label.sum": "Somme",
"label.tablet": "Tablette", "label.tablet": "Tablette",
"label.team": "Équipe", "label.team": "Équipe",
"label.team-guest": "Invité dans l'équipe", "label.team-guest": "Invité dans l'équipe",
"label.team-id": "ID d'équipe", "label.team-id": "ID d'équipe",
"label.team-member": "Membre de l'équipe", "label.team-member": "Membre de l'équipe",
"label.team-name": "Team name",
"label.team-owner": "Propriétaire de l'équipe", "label.team-owner": "Propriétaire de l'équipe",
"label.team-websites": "Team websites",
"label.teams": "Équipes", "label.teams": "Équipes",
"label.theme": "Thème", "label.theme": "Thème",
"label.this-month": "Ce mois", "label.this-month": "Ce mois",
@ -114,14 +150,21 @@
"label.title": "Titre", "label.title": "Titre",
"label.today": "Aujourd'hui", "label.today": "Aujourd'hui",
"label.toggle-charts": "Afficher/Masquer les graphiques", "label.toggle-charts": "Afficher/Masquer les graphiques",
"label.total": "Total",
"label.total-records": "Nombre d'enregistrements",
"label.tracking-code": "Code de suivi", "label.tracking-code": "Code de suivi",
"label.true": "Vrai",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Visiteurs uniques", "label.unique-visitors": "Visiteurs uniques",
"label.unknown": "Inconnu", "label.unknown": "Inconnu",
"label.untitled": "Sans titre",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "Utilisateur", "label.user": "Utilisateur",
"label.username": "Nom d'utilisateur", "label.username": "Nom d'utilisateur",
"label.users": "Utilisateurs", "label.users": "Utilisateurs",
"label.value": "Valeur",
"label.view": "Voir", "label.view": "Voir",
"label.view-details": "Voir les détails", "label.view-details": "Voir les détails",
"label.view-only": "Consultation", "label.view-only": "Consultation",
@ -132,33 +175,6 @@
"label.websites": "Sites", "label.websites": "Sites",
"label.window": "Fenêtre", "label.window": "Fenêtre",
"label.yesterday": "Hier", "label.yesterday": "Hier",
"labels.after": "Après",
"labels.average": "Moyenne",
"labels.before": "Avant",
"labels.breakdown": "Répartition",
"labels.contains": "Contient",
"labels.create-report": "Créer un rapport",
"labels.description": "Description",
"labels.does-not-contain": "Ne contient pas",
"labels.does-not-equal": "N'est pas égal",
"labels.equals": "Est égal",
"labels.false": "Faux",
"labels.filters": "Filtres",
"labels.greater-than": "Supérieur à",
"labels.greater-than-equals": "Supérieur ou égal à",
"labels.less-than": "Inférieur à",
"labels.less-than-equals": "Inférieur ou égal à",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Vue d'ensemble",
"labels.sum": "Somme",
"labels.total": "Total",
"labels.total-records": "Nombre d'enregistrements",
"labels.true": "Vrai",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Sans titre",
"labels.value": "Valeur",
"message.active-users": "{x} {x, plural, one {visiteur} other {visiteurs}} actuellement", "message.active-users": "{x} {x, plural, one {visiteur} other {visiteurs}} actuellement",
"message.confirm-delete": "Êtes-vous sûr de vouloir supprimer {target} ?", "message.confirm-delete": "Êtes-vous sûr de vouloir supprimer {target} ?",
"message.confirm-leave": "Êtes-vous sûr de vouloir quitter {target} ?", "message.confirm-leave": "Êtes-vous sûr de vouloir quitter {target} ?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Nom d'utilisateur/Mot de passe incorrect.", "message.incorrect-username-password": "Nom d'utilisateur/Mot de passe incorrect.",
"message.invalid-domain": "Domaine invalide", "message.invalid-domain": "Domaine invalide",
"message.min-password-length": "Taille minimale de {n} caractères", "message.min-password-length": "Taille minimale de {n} caractères",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Aucune donnée disponible.", "message.no-data-available": "Aucune donnée disponible.",
"message.no-event-data": "Aucune donnée d'événement disponible.", "message.no-event-data": "Aucune donnée d'événement disponible.",
"message.no-match-password": "Les mots de passe ne correspondent pas", "message.no-match-password": "Les mots de passe ne correspondent pas",
"message.no-results-found": "Aucun résultat n'a été trouvé.",
"message.no-team-websites": "Cette équipe n'a aucun site.",
"message.no-teams": "Vous n'avez pas créé d'équipe.", "message.no-teams": "Vous n'avez pas créé d'équipe.",
"message.no-users": "Aucun utilisateur.", "message.no-users": "Aucun utilisateur.",
"message.no-websites-configured": "Vous n'avez pas configuré de site.",
"message.page-not-found": "Page non trouvée.", "message.page-not-found": "Page non trouvée.",
"message.reset-website": "Pour réinitialiser ce site, taper {confirmation} ci-dessous pour confirmer.", "message.reset-website": "Pour réinitialiser ce site, taper {confirmation} ci-dessous pour confirmer.",
"message.reset-website-warning": "Toutes les statistiques pour ce site seront supprimées, mais votre code de suivi restera intact.", "message.reset-website-warning": "Toutes les statistiques pour ce site seront supprimées, mais votre code de suivi restera intact.",
@ -184,12 +204,8 @@
"message.share-url": "Les statistiques de votre site sont accessibles publiquement sur cette URL :", "message.share-url": "Les statistiques de votre site sont accessibles publiquement sur cette URL :",
"message.team-already-member": "Vous êtes déjà membre de cette équipe.", "message.team-already-member": "Vous êtes déjà membre de cette équipe.",
"message.team-not-found": "Équipe non trouvée.", "message.team-not-found": "Équipe non trouvée.",
"message.team-websites-info": "Les sites peuvent être vus par tout utilisateur dans l'équipe.",
"message.tracking-code": "Code de suivi", "message.tracking-code": "Code de suivi",
"message.user-deleted": "Utilisateur supprimé.", "message.user-deleted": "Utilisateur supprimé.",
"message.visitor-log": "Visiteur de {country} utilisant {browser} sur {os} {device}", "message.visitor-log": "Visiteur de {country} utilisant {browser} sur {os} {device}"
"message.no-results-found": "Aucun résultat n'a été trouvé.",
"message.no-team-websites": "Cette équipe n'a aucun site.",
"message.no-websites-configured": "Vous n'avez pas configuré de site.",
"message.team-websites-info": "Les sites peuvent être vus par tout utilisateur dans l'équipe.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Engadir sitio web", "label.add-website": "Engadir sitio web",
"label.admin": "Administradora", "label.admin": "Administradora",
"label.after": "After",
"label.all": "Todo", "label.all": "Todo",
"label.all-time": "Sempre", "label.all-time": "Sempre",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Tempo medio de visita", "label.average-visit-time": "Tempo medio de visita",
"label.back": "Atrás", "label.back": "Atrás",
"label.before": "Before",
"label.bounce-rate": "Proporción de rebote", "label.bounce-rate": "Proporción de rebote",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Navegadores", "label.browsers": "Navegadores",
"label.cancel": "Cancelar", "label.cancel": "Cancelar",
"label.change-password": "Mudar contrasinal", "label.change-password": "Mudar contrasinal",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Confirmar contrasinal", "label.confirm-password": "Confirmar contrasinal",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Países", "label.countries": "Países",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Rango personalizado", "label.custom-range": "Rango personalizado",
"label.dashboard": "Taboleiro", "label.dashboard": "Taboleiro",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Rango temporal", "label.date-range": "Rango temporal",
"label.day": "Day",
"label.default-date-range": "Rango temporal por defecto", "label.default-date-range": "Rango temporal por defecto",
"label.delete": "Eliminar", "label.delete": "Eliminar",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Eliminar sitio web", "label.delete-website": "Eliminar sitio web",
"label.description": "Description",
"label.desktop": "Escritorio", "label.desktop": "Escritorio",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Dispositivos", "label.devices": "Dispositivos",
"label.dismiss": "Desbotar", "label.dismiss": "Desbotar",
"label.does-not-contain": "Does not contain",
"label.domain": "Dominio", "label.domain": "Dominio",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Editar", "label.edit": "Editar",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Eventos", "label.events": "Eventos",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Combinado", "label.filter-combined": "Combinado",
"label.filter-raw": "Raw", "label.filter-raw": "Raw",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Idioma", "label.language": "Idioma",
@ -61,17 +83,25 @@
"label.last-hours": "Últimas {x} horas", "label.last-hours": "Últimas {x} horas",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Acceder", "label.login": "Acceder",
"label.logout": "Pechar sesión", "label.logout": "Pechar sesión",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Móbil", "label.mobile": "Móbil",
"label.more": "Máis", "label.more": "Máis",
"label.my-websites": "My websites",
"label.name": "Nome", "label.name": "Nome",
"label.new-password": "Novo contrasinal", "label.new-password": "Novo contrasinal",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Sistemas operativos", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Dona", "label.owner": "Dona",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Vistas de páxinas", "label.page-views": "Vistas de páxinas",
"label.pageTitle": "Page title",
"label.pages": "Páxinas", "label.pages": "Páxinas",
"label.password": "Contrasinal", "label.password": "Contrasinal",
"label.powered-by": "Funciona grazas a {name}", "label.powered-by": "Funciona grazas a {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Agora mesmo", "label.realtime": "Agora mesmo",
"label.referrer": "Referrer",
"label.referrers": "Orixes", "label.referrers": "Orixes",
"label.refresh": "Actualizar", "label.refresh": "Actualizar",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Requerido", "label.required": "Requerido",
"label.reset": "Restablecer", "label.reset": "Restablecer",
"label.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "label.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Gardar", "label.save": "Gardar",
@ -99,12 +132,15 @@
"label.settings": "Axustes", "label.settings": "Axustes",
"label.share-url": "Compartir URL", "label.share-url": "Compartir URL",
"label.single-day": "Un só día", "label.single-day": "Un só día",
"label.sum": "Sum",
"label.tablet": "Tableta", "label.tablet": "Tableta",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Decorado", "label.theme": "Decorado",
"label.this-month": "Este mes", "label.this-month": "Este mes",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Hoxe", "label.today": "Hoxe",
"label.toggle-charts": "Activación das gráficas", "label.toggle-charts": "Activación das gráficas",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Código de seguimento", "label.tracking-code": "Código de seguimento",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Visitas únicas", "label.unique-visitors": "Visitas únicas",
"label.unknown": "Descoñecido", "label.unknown": "Descoñecido",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Identificador", "label.username": "Identificador",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Ver detalles", "label.view-details": "Ver detalles",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Sitios web", "label.websites": "Sitios web",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} actual {x, plural, one {visitante} other {visitantes}}", "message.active-users": "{x} actual {x, plural, one {visitante} other {visitantes}}",
"message.confirm-delete": "Tes a certeza de querer eliminar {target}?", "message.confirm-delete": "Tes a certeza de querer eliminar {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Credenciais incorrectas.", "message.incorrect-username-password": "Credenciais incorrectas.",
"message.invalid-domain": "Dominio non válido", "message.invalid-domain": "Dominio non válido",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Sen datos dispoñibles.", "message.no-data-available": "Sen datos dispoñibles.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Non concordan os contrasinais", "message.no-match-password": "Non concordan os contrasinais",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Non tes sitios web configurados.",
"message.page-not-found": "Páxina non atopada.", "message.page-not-found": "Páxina non atopada.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Vanse eliminar tódalas estatísticas deste sitio web, pero o código de seguimento permanecerá sen cambios.", "message.reset-website-warning": "Vanse eliminar tódalas estatísticas deste sitio web, pero o código de seguimento permanecerá sen cambios.",
@ -184,12 +204,8 @@
"message.share-url": "Este é o URL da compartición pública de {target}.", "message.share-url": "Este é o URL da compartición pública de {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Código de seguimento", "message.tracking-code": "Código de seguimento",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Visitante desde {country} usando {browser} en {os} {device}", "message.visitor-log": "Visitante desde {country} usando {browser} en {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Non tes sitios web configurados.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "הוספת אתר", "label.add-website": "הוספת אתר",
"label.admin": "מנהל", "label.admin": "מנהל",
"label.after": "After",
"label.all": "הכל", "label.all": "הכל",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "זמן ביקור ממוצע", "label.average-visit-time": "זמן ביקור ממוצע",
"label.back": "חזרה", "label.back": "חזרה",
"label.before": "Before",
"label.bounce-rate": "Bounce rate", "label.bounce-rate": "Bounce rate",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "דפדפנים", "label.browsers": "דפדפנים",
"label.cancel": "ביטול", "label.cancel": "ביטול",
"label.change-password": "שינוי סיסמה", "label.change-password": "שינוי סיסמה",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "אישור סיסמה", "label.confirm-password": "אישור סיסמה",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "מדינות", "label.countries": "מדינות",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "טווח מותאם", "label.custom-range": "טווח מותאם",
"label.dashboard": "דשבורד", "label.dashboard": "דשבורד",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "טווח תאריכים", "label.date-range": "טווח תאריכים",
"label.day": "Day",
"label.default-date-range": "טווח תאריכים בברירת מחדל", "label.default-date-range": "טווח תאריכים בברירת מחדל",
"label.delete": "הסרה", "label.delete": "הסרה",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "הסרת אתר", "label.delete-website": "הסרת אתר",
"label.description": "Description",
"label.desktop": "דסקטופ", "label.desktop": "דסקטופ",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "מכשירים", "label.devices": "מכשירים",
"label.dismiss": "שיחרור", "label.dismiss": "שיחרור",
"label.does-not-contain": "Does not contain",
"label.domain": "דומיין", "label.domain": "דומיין",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "עריכה", "label.edit": "עריכה",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "אירועים", "label.events": "אירועים",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "משותף", "label.filter-combined": "משותף",
"label.filter-raw": "גולמי", "label.filter-raw": "גולמי",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "{x} שעות אחרונות", "label.last-hours": "{x} שעות אחרונות",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "התחברות", "label.login": "התחברות",
"label.logout": "התנתקות", "label.logout": "התנתקות",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "מובייל", "label.mobile": "מובייל",
"label.more": "עוד", "label.more": "עוד",
"label.my-websites": "My websites",
"label.name": "שם", "label.name": "שם",
"label.new-password": "סיסמה חדשה", "label.new-password": "סיסמה חדשה",
"label.none": "None", "label.none": "None",
"label.operating-systems": "מערכות הפעלה", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "צפיות בדפים", "label.page-views": "צפיות בדפים",
"label.pageTitle": "Page title",
"label.pages": "דפים", "label.pages": "דפים",
"label.password": "סיסמה", "label.password": "סיסמה",
"label.powered-by": "Powered by {name}", "label.powered-by": "Powered by {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "זמן אמת", "label.realtime": "זמן אמת",
"label.referrer": "Referrer",
"label.referrers": "מפנים", "label.referrers": "מפנים",
"label.refresh": "רענון", "label.refresh": "רענון",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "נדרש", "label.required": "נדרש",
"label.reset": "איפוס", "label.reset": "איפוס",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "שמירה", "label.save": "שמירה",
@ -99,12 +132,15 @@
"label.settings": "הגדרות", "label.settings": "הגדרות",
"label.share-url": "שיתוף URL", "label.share-url": "שיתוף URL",
"label.single-day": "יום בודד", "label.single-day": "יום בודד",
"label.sum": "Sum",
"label.tablet": "טאבלט", "label.tablet": "טאבלט",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "החודש", "label.this-month": "החודש",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "היום", "label.today": "היום",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "קוד מעקב", "label.tracking-code": "קוד מעקב",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "מבקרים ייחודיים", "label.unique-visitors": "מבקרים ייחודיים",
"label.unknown": "לא ידוע", "label.unknown": "לא ידוע",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "שם משתמש", "label.username": "שם משתמש",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "פרטים נוספים", "label.view-details": "פרטים נוספים",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "אתרים", "label.websites": "אתרים",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} נוכחיים {x, plural, one {מבקר} other {מבקרים}}", "message.active-users": "{x} נוכחיים {x, plural, one {מבקר} other {מבקרים}}",
"message.confirm-delete": "האם באמת למחוק את {target}?", "message.confirm-delete": "האם באמת למחוק את {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "שם משתמש או סיסמה לא נכונים", "message.incorrect-username-password": "שם משתמש או סיסמה לא נכונים",
"message.invalid-domain": "דומיין לא תקין", "message.invalid-domain": "דומיין לא תקין",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "אין מידע זמין", "message.no-data-available": "אין מידע זמין",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "סיסמאות לא תואמות", "message.no-match-password": "סיסמאות לא תואמות",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "לא מוגדרים אתרים",
"message.page-not-found": "דף לא נמצא", "message.page-not-found": "דף לא נמצא",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "זהו URL ציבורי עבור {target}", "message.share-url": "זהו URL ציבורי עבור {target}",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "קוד מעקב", "message.tracking-code": "קוד מעקב",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "מבקר ממדינת {country} משתמבש בדפדפן {browser} ב-{os} {device}", "message.visitor-log": "מבקר ממדינת {country} משתמבש בדפדפן {browser} ב-{os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "לא מוגדרים אתרים",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "वेबसाइट", "label.add-website": "वेबसाइट",
"label.admin": "प्रशासक", "label.admin": "प्रशासक",
"label.after": "After",
"label.all": "सब", "label.all": "सब",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "औसत दृश्य समय", "label.average-visit-time": "औसत दृश्य समय",
"label.back": "पीछे", "label.back": "पीछे",
"label.before": "Before",
"label.bounce-rate": "उछाल दर", "label.bounce-rate": "उछाल दर",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "वेब ब्राउज़र", "label.browsers": "वेब ब्राउज़र",
"label.cancel": "रद्द करें", "label.cancel": "रद्द करें",
"label.change-password": "पासवर्ड बदलें", "label.change-password": "पासवर्ड बदलें",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "पासवर्ड की पुष्टि कीजिये", "label.confirm-password": "पासवर्ड की पुष्टि कीजिये",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "देश", "label.countries": "देश",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "कस्टम रेंज", "label.custom-range": "कस्टम रेंज",
"label.dashboard": "नियंत्रण-पट्ट", "label.dashboard": "नियंत्रण-पट्ट",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "तिथि सीमा", "label.date-range": "तिथि सीमा",
"label.day": "Day",
"label.default-date-range": "डिफ़ॉल्ट तिथि सीमा", "label.default-date-range": "डिफ़ॉल्ट तिथि सीमा",
"label.delete": "खाता हटाएं", "label.delete": "खाता हटाएं",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "वेबसाइट हटाएं", "label.delete-website": "वेबसाइट हटाएं",
"label.description": "Description",
"label.desktop": "डेस्कटॉप", "label.desktop": "डेस्कटॉप",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "उपकरण", "label.devices": "उपकरण",
"label.dismiss": "खारिज कीजिये", "label.dismiss": "खारिज कीजिये",
"label.does-not-contain": "Does not contain",
"label.domain": "डोमेन", "label.domain": "डोमेन",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "संपादित करें", "label.edit": "संपादित करें",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "स्पर्धाएँ", "label.events": "स्पर्धाएँ",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "संयुक्त", "label.filter-combined": "संयुक्त",
"label.filter-raw": "रॉ", "label.filter-raw": "रॉ",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "पिछले {x} घंटे", "label.last-hours": "पिछले {x} घंटे",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "लॉग इन", "label.login": "लॉग इन",
"label.logout": "लॉग आउट", "label.logout": "लॉग आउट",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "मोबाइल फोन", "label.mobile": "मोबाइल फोन",
"label.more": "और", "label.more": "और",
"label.my-websites": "My websites",
"label.name": "नाम", "label.name": "नाम",
"label.new-password": "नया पासवर्ड", "label.new-password": "नया पासवर्ड",
"label.none": "None", "label.none": "None",
"label.operating-systems": "ऑपरेटिंग सिस्टम", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "पृष्ठ दृश्य", "label.page-views": "पृष्ठ दृश्य",
"label.pageTitle": "Page title",
"label.pages": "पृष्ठों", "label.pages": "पृष्ठों",
"label.password": "पासवर्ड", "label.password": "पासवर्ड",
"label.powered-by": "{name} द्वारा संचालित", "label.powered-by": "{name} द्वारा संचालित",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "वास्तव काल", "label.realtime": "वास्तव काल",
"label.referrer": "Referrer",
"label.referrers": "सन्दर्भदाता", "label.referrers": "सन्दर्भदाता",
"label.refresh": "रिफ्रेश", "label.refresh": "रिफ्रेश",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "अपेक्षित", "label.required": "अपेक्षित",
"label.reset": "रीसेट", "label.reset": "रीसेट",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "सहेजें", "label.save": "सहेजें",
@ -99,12 +132,15 @@
"label.settings": "समायोजन", "label.settings": "समायोजन",
"label.share-url": "यूआरएल साझा करें", "label.share-url": "यूआरएल साझा करें",
"label.single-day": "एक दिन", "label.single-day": "एक दिन",
"label.sum": "Sum",
"label.tablet": "टैबलेट", "label.tablet": "टैबलेट",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "इस महीने", "label.this-month": "इस महीने",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "आज", "label.today": "आज",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "ट्रैकिंग कोड", "label.tracking-code": "ट्रैकिंग कोड",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "अद्वितीय आगंतुकों", "label.unique-visitors": "अद्वितीय आगंतुकों",
"label.unknown": "अज्ञात", "label.unknown": "अज्ञात",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "उपयोगकर्ता नाम", "label.username": "उपयोगकर्ता नाम",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "विवरण देखें", "label.view-details": "विवरण देखें",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "वेबसाइटों", "label.websites": "वेबसाइटों",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} मौजूद {x, plural, one {आगंतुक} other {आगंतुकों}}", "message.active-users": "{x} मौजूद {x, plural, one {आगंतुक} other {आगंतुकों}}",
"message.confirm-delete": "क्या आप वाकई में {target} हटाना चाहते हैं?", "message.confirm-delete": "क्या आप वाकई में {target} हटाना चाहते हैं?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "ग़लत उपयोगकर्ता नाम / पासवर्ड।", "message.incorrect-username-password": "ग़लत उपयोगकर्ता नाम / पासवर्ड।",
"message.invalid-domain": "अमान्य डोमेन", "message.invalid-domain": "अमान्य डोमेन",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "कोई डेटा उपलब्ध नहीं है।", "message.no-data-available": "कोई डेटा उपलब्ध नहीं है।",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "पासवर्ड मेल नहीं खाते", "message.no-match-password": "पासवर्ड मेल नहीं खाते",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "आपके पास कोई वेबसाइट कॉन्फ़िगर नहीं है।",
"message.page-not-found": "पृष्ठ नहीं मिला।", "message.page-not-found": "पृष्ठ नहीं मिला।",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "यह {target} के लिए सार्वजनिक रूप से साझा किया गया URL है।", "message.share-url": "यह {target} के लिए सार्वजनिक रूप से साझा किया गया URL है।",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "ट्रैकिंग कोड", "message.tracking-code": "ट्रैकिंग कोड",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "{country} का आगंतुक, जो {browser} का उपयोग करता है, {os} यन्त्र पर", "message.visitor-log": "{country} का आगंतुक, जो {browser} का उपयोग करता है, {os} यन्त्र पर"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "आपके पास कोई वेबसाइट कॉन्फ़िगर नहीं है।",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Dodaj web stranicu", "label.add-website": "Dodaj web stranicu",
"label.admin": "Administrator", "label.admin": "Administrator",
"label.after": "After",
"label.all": "Sve", "label.all": "Sve",
"label.all-time": "Svo vrijeme", "label.all-time": "Svo vrijeme",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Average visit time", "label.average-visit-time": "Average visit time",
"label.back": "Natrag ", "label.back": "Natrag ",
"label.before": "Before",
"label.bounce-rate": "Bounce rate", "label.bounce-rate": "Bounce rate",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Browsers", "label.browsers": "Browsers",
"label.cancel": "Odustani", "label.cancel": "Odustani",
"label.change-password": "Promijeni lozinku", "label.change-password": "Promijeni lozinku",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Potvrdi lozinku", "label.confirm-password": "Potvrdi lozinku",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Countries", "label.countries": "Countries",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Prilagođeni raspon", "label.custom-range": "Prilagođeni raspon",
"label.dashboard": "Nadzorna ploča", "label.dashboard": "Nadzorna ploča",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Raspon datuma", "label.date-range": "Raspon datuma",
"label.day": "Day",
"label.default-date-range": "Zadani datumski raspon", "label.default-date-range": "Zadani datumski raspon",
"label.delete": "Obriši", "label.delete": "Obriši",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Obriši web stranicu", "label.delete-website": "Obriši web stranicu",
"label.description": "Description",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Devices", "label.devices": "Devices",
"label.dismiss": "Odbaci", "label.dismiss": "Odbaci",
"label.does-not-contain": "Does not contain",
"label.domain": "Domena", "label.domain": "Domena",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Uredi", "label.edit": "Uredi",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Podaci događaja", "label.event-data": "Podaci događaja",
"label.events": "Events", "label.events": "Events",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Combined", "label.filter-combined": "Combined",
"label.filter-raw": "Raw", "label.filter-raw": "Raw",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Jezik", "label.language": "Jezik",
@ -61,17 +83,25 @@
"label.last-hours": "Zadnjih {x} sati", "label.last-hours": "Zadnjih {x} sati",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Prijava", "label.login": "Prijava",
"label.logout": "Odjava", "label.logout": "Odjava",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Mobile", "label.mobile": "Mobile",
"label.more": "Više", "label.more": "Više",
"label.my-websites": "My websites",
"label.name": "Ime", "label.name": "Ime",
"label.new-password": "Nova lozinka", "label.new-password": "Nova lozinka",
"label.none": "Ništa", "label.none": "Ništa",
"label.operating-systems": "Operating systems", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Vlasnik", "label.owner": "Vlasnik",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Page views", "label.page-views": "Page views",
"label.pageTitle": "Page title",
"label.pages": "Pages", "label.pages": "Pages",
"label.password": "Lozinka", "label.password": "Lozinka",
"label.powered-by": "Powered by {name}", "label.powered-by": "Powered by {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Stvarno vrijeme", "label.realtime": "Stvarno vrijeme",
"label.referrer": "Referrer",
"label.referrers": "Referrers", "label.referrers": "Referrers",
"label.refresh": "Osvježi", "label.refresh": "Osvježi",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Potrebna", "label.required": "Potrebna",
"label.reset": "Resetirati", "label.reset": "Resetirati",
"label.reset-website": "Resetirati web stranicu", "label.reset-website": "Resetirati web stranicu",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Spremi", "label.save": "Spremi",
@ -99,12 +132,15 @@
"label.settings": "Postavke", "label.settings": "Postavke",
"label.share-url": "Podijeli poveznicu", "label.share-url": "Podijeli poveznicu",
"label.single-day": "Jedan dan", "label.single-day": "Jedan dan",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Tema", "label.theme": "Tema",
"label.this-month": "Ovaj mjesec", "label.this-month": "Ovaj mjesec",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Danas", "label.today": "Danas",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Kod za praćenje", "label.tracking-code": "Kod za praćenje",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Unique visitors", "label.unique-visitors": "Unique visitors",
"label.unknown": "Nepoznato", "label.unknown": "Nepoznato",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Korisničko ime", "label.username": "Korisničko ime",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Pogledaj detalje", "label.view-details": "Pogledaj detalje",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Web stranice", "label.websites": "Web stranice",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Jučer", "label.yesterday": "Jučer",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} Trenutno {x, plural, one {posjetitelj} other {posjetitelja}}", "message.active-users": "{x} Trenutno {x, plural, one {posjetitelj} other {posjetitelja}}",
"message.confirm-delete": "Jeste li sigurni da želite obrisati {target}?", "message.confirm-delete": "Jeste li sigurni da želite obrisati {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Neispravno korisničke ime/lozinka.", "message.incorrect-username-password": "Neispravno korisničke ime/lozinka.",
"message.invalid-domain": "Invalid domain. Do not include http/https.", "message.invalid-domain": "Invalid domain. Do not include http/https.",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Nema dostupnih podataka.", "message.no-data-available": "Nema dostupnih podataka.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Passwords do not match.", "message.no-match-password": "Passwords do not match.",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "You do not have any websites configured.",
"message.page-not-found": "Stranica nije pronađena.", "message.page-not-found": "Stranica nije pronađena.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your settings will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your settings will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "Ovo je javno dijeljena poveznica za {target}.", "message.share-url": "Ovo je javno dijeljena poveznica za {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "To track stats for this website, place the following code in the <head>...</head> section of your HTML.", "message.tracking-code": "To track stats for this website, place the following code in the <head>...</head> section of your HTML.",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Visitor from {country} using {browser} on {os} {device}", "message.visitor-log": "Visitor from {country} using {browser} on {os} {device}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "You do not have any websites configured.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Weboldal hozzáadása", "label.add-website": "Weboldal hozzáadása",
"label.admin": "Adminisztrátor", "label.admin": "Adminisztrátor",
"label.after": "After",
"label.all": "Összes", "label.all": "Összes",
"label.all-time": "All time", "label.all-time": "All time",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Átlagos látogatási idő", "label.average-visit-time": "Átlagos látogatási idő",
"label.back": "Vissza", "label.back": "Vissza",
"label.before": "Before",
"label.bounce-rate": "Visszafordulási arány", "label.bounce-rate": "Visszafordulási arány",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Böngészők", "label.browsers": "Böngészők",
"label.cancel": "Mégsem", "label.cancel": "Mégsem",
"label.change-password": "Jelszó módosítása", "label.change-password": "Jelszó módosítása",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Jelszó megerősítése", "label.confirm-password": "Jelszó megerősítése",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Országok", "label.countries": "Országok",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Egyedi tartomány", "label.custom-range": "Egyedi tartomány",
"label.dashboard": "Áttekintés", "label.dashboard": "Áttekintés",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Időintervallum", "label.date-range": "Időintervallum",
"label.day": "Day",
"label.default-date-range": "Alapértelmezett időintervallum", "label.default-date-range": "Alapértelmezett időintervallum",
"label.delete": "Eltávolítás", "label.delete": "Eltávolítás",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Weboldal eltávolítása", "label.delete-website": "Weboldal eltávolítása",
"label.description": "Description",
"label.desktop": "Asztali számítógép", "label.desktop": "Asztali számítógép",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Eszközök", "label.devices": "Eszközök",
"label.dismiss": "Mellőzés", "label.dismiss": "Mellőzés",
"label.does-not-contain": "Does not contain",
"label.domain": "Domain", "label.domain": "Domain",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Módosítás", "label.edit": "Módosítás",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Események", "label.events": "Események",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Összevont", "label.filter-combined": "Összevont",
"label.filter-raw": "Nyers", "label.filter-raw": "Nyers",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Language", "label.language": "Language",
@ -61,17 +83,25 @@
"label.last-hours": "Legutóbbi {x} óra", "label.last-hours": "Legutóbbi {x} óra",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Bejelentkezés", "label.login": "Bejelentkezés",
"label.logout": "Kijelentkezés", "label.logout": "Kijelentkezés",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Telefon", "label.mobile": "Telefon",
"label.more": "Bővebben", "label.more": "Bővebben",
"label.my-websites": "My websites",
"label.name": "Név", "label.name": "Név",
"label.new-password": "Új jelszó", "label.new-password": "Új jelszó",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Operációs rendszerek", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Owner", "label.owner": "Owner",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Oldalmegtekintések", "label.page-views": "Oldalmegtekintések",
"label.pageTitle": "Page title",
"label.pages": "Oldalak", "label.pages": "Oldalak",
"label.password": "Jelszó", "label.password": "Jelszó",
"label.powered-by": "Működteti az {name}", "label.powered-by": "Működteti az {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Valós idejű", "label.realtime": "Valós idejű",
"label.referrer": "Referrer",
"label.referrers": "Hivatkozók", "label.referrers": "Hivatkozók",
"label.refresh": "Frissítés", "label.refresh": "Frissítés",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Kötelező", "label.required": "Kötelező",
"label.reset": "Visszaállítás", "label.reset": "Visszaállítás",
"label.reset-website": "Reset statistics", "label.reset-website": "Reset statistics",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Mentés", "label.save": "Mentés",
@ -99,12 +132,15 @@
"label.settings": "Beállítások", "label.settings": "Beállítások",
"label.share-url": "URL megosztása", "label.share-url": "URL megosztása",
"label.single-day": "Egy nap", "label.single-day": "Egy nap",
"label.sum": "Sum",
"label.tablet": "Táblagép", "label.tablet": "Táblagép",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Theme", "label.theme": "Theme",
"label.this-month": "Ezen hónap", "label.this-month": "Ezen hónap",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Ma", "label.today": "Ma",
"label.toggle-charts": "Toggle charts", "label.toggle-charts": "Toggle charts",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Követési kód", "label.tracking-code": "Követési kód",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Egyedi látogatók", "label.unique-visitors": "Egyedi látogatók",
"label.unknown": "Ismeretlen", "label.unknown": "Ismeretlen",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Felhasználónév", "label.username": "Felhasználónév",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Részletek", "label.view-details": "Részletek",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Weboldalak", "label.websites": "Weboldalak",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} {x, plural, one {látogató} other {latógató}} jelenleg", "message.active-users": "{x} {x, plural, one {látogató} other {latógató}} jelenleg",
"message.confirm-delete": "Biztos, hogy törölni szeretnéd {target} elemet?", "message.confirm-delete": "Biztos, hogy törölni szeretnéd {target} elemet?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Érvénytelen felhasználónév/jelszó.", "message.incorrect-username-password": "Érvénytelen felhasználónév/jelszó.",
"message.invalid-domain": "Érvénytelen domain", "message.invalid-domain": "Érvénytelen domain",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Nincs rendelkezésre álló adat.", "message.no-data-available": "Nincs rendelkezésre álló adat.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "A jelszavak nem egyeznek", "message.no-match-password": "A jelszavak nem egyeznek",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Még nem állítottál be egyetlen weboldalt sem.",
"message.page-not-found": "Oldal nem található.", "message.page-not-found": "Oldal nem található.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
@ -184,12 +204,8 @@
"message.share-url": "{target} nyilvánosan megosztott URL címe.", "message.share-url": "{target} nyilvánosan megosztott URL címe.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Követési kód", "message.tracking-code": "Követési kód",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Látógató {country} területéről, {os} {device} eszközön, {browser} böngészőből.", "message.visitor-log": "Látógató {country} területéről, {os} {device} eszközön, {browser} böngészőből."
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Még nem állítottál be egyetlen weboldalt sem.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

View File

@ -6,21 +6,30 @@
"label.add-description": "Add description", "label.add-description": "Add description",
"label.add-website": "Tambah situs web", "label.add-website": "Tambah situs web",
"label.admin": "Pengelola", "label.admin": "Pengelola",
"label.after": "After",
"label.all": "Semua", "label.all": "Semua",
"label.all-time": "Semua waktu", "label.all-time": "Semua waktu",
"label.analytics": "Analytics", "label.analytics": "Analytics",
"label.average": "Average",
"label.average-visit-time": "Waktu kunjungan rata-rata", "label.average-visit-time": "Waktu kunjungan rata-rata",
"label.back": "Kembali", "label.back": "Kembali",
"label.before": "Before",
"label.bounce-rate": "Rasio pentalan", "label.bounce-rate": "Rasio pentalan",
"label.breakdown": "Breakdown",
"label.browser": "Browser",
"label.browsers": "Peramban", "label.browsers": "Peramban",
"label.cancel": "Batal", "label.cancel": "Batal",
"label.change-password": "Ganti kata sandi", "label.change-password": "Ganti kata sandi",
"label.cities": "Cities", "label.cities": "Cities",
"label.city": "City",
"label.clear-all": "Clear all", "label.clear-all": "Clear all",
"label.confirm": "Confirm", "label.confirm": "Confirm",
"label.confirm-password": "Konfirmasi kata sandi", "label.confirm-password": "Konfirmasi kata sandi",
"label.contains": "Contains",
"label.continue": "Continue", "label.continue": "Continue",
"label.countries": "Negara", "label.countries": "Negara",
"label.country": "Country",
"label.create-report": "Create report",
"label.create-team": "Create team", "label.create-team": "Create team",
"label.create-user": "Create user", "label.create-user": "Create user",
"label.created": "Created", "label.created": "Created",
@ -28,16 +37,21 @@
"label.custom-range": "Rentang khusus", "label.custom-range": "Rentang khusus",
"label.dashboard": "Dasbor", "label.dashboard": "Dasbor",
"label.data": "Data", "label.data": "Data",
"label.date": "Date",
"label.date-range": "Rentang tanggal", "label.date-range": "Rentang tanggal",
"label.day": "Day",
"label.default-date-range": "Rentang tanggal bawaan", "label.default-date-range": "Rentang tanggal bawaan",
"label.delete": "Hapus", "label.delete": "Hapus",
"label.delete-team": "Delete team", "label.delete-team": "Delete team",
"label.delete-user": "Delete user", "label.delete-user": "Delete user",
"label.delete-website": "Hapus situs web", "label.delete-website": "Hapus situs web",
"label.description": "Description",
"label.desktop": "Desktop", "label.desktop": "Desktop",
"label.details": "Details", "label.details": "Details",
"label.device": "Device",
"label.devices": "Perangkat", "label.devices": "Perangkat",
"label.dismiss": "Tutup", "label.dismiss": "Tutup",
"label.does-not-contain": "Does not contain",
"label.domain": "Domain", "label.domain": "Domain",
"label.dropoff": "Dropoff", "label.dropoff": "Dropoff",
"label.edit": "Sunting", "label.edit": "Sunting",
@ -46,12 +60,20 @@
"label.event": "Event", "label.event": "Event",
"label.event-data": "Event data", "label.event-data": "Event data",
"label.events": "Perihal", "label.events": "Perihal",
"label.false": "False",
"label.field": "Field", "label.field": "Field",
"label.fields": "Fields", "label.fields": "Fields",
"label.filter-combined": "Gabungan", "label.filter-combined": "Gabungan",
"label.filter-raw": "Mentah", "label.filter-raw": "Mentah",
"label.filters": "Filters",
"label.funnel": "Funnel", "label.funnel": "Funnel",
"label.greater-than": "Greater than",
"label.greater-than-equals": "Greater than or equals",
"label.insights": "Insights", "label.insights": "Insights",
"label.is": "Is",
"label.is-not": "Is not",
"label.is-not-set": "Is not set",
"label.is-set": "Is set",
"label.join": "Join", "label.join": "Join",
"label.join-team": "Join team", "label.join-team": "Join team",
"label.language": "Bahasa", "label.language": "Bahasa",
@ -61,17 +83,25 @@
"label.last-hours": "{x} jam terakhir", "label.last-hours": "{x} jam terakhir",
"label.leave": "Leave", "label.leave": "Leave",
"label.leave-team": "Leave team", "label.leave-team": "Leave team",
"label.less-than": "Less than",
"label.less-than-equals": "Less than or equals",
"label.login": "Masuk", "label.login": "Masuk",
"label.logout": "Keluar", "label.logout": "Keluar",
"label.max": "Max",
"label.members": "Members", "label.members": "Members",
"label.min": "Min",
"label.mobile": "Ponsel", "label.mobile": "Ponsel",
"label.more": "Lebih banyak", "label.more": "Lebih banyak",
"label.my-websites": "My websites",
"label.name": "Nama", "label.name": "Nama",
"label.new-password": "Kata sandi baru", "label.new-password": "Kata sandi baru",
"label.none": "None", "label.none": "None",
"label.operating-systems": "Sistem Operasi", "label.os": "OS",
"label.overview": "Overview",
"label.owner": "Pemilik", "label.owner": "Pemilik",
"label.page-of": "Page {current} of {total}",
"label.page-views": "Tampilan halaman", "label.page-views": "Tampilan halaman",
"label.pageTitle": "Page title",
"label.pages": "Halaman", "label.pages": "Halaman",
"label.password": "Kata sandi", "label.password": "Kata sandi",
"label.powered-by": "Didukung oleh {name}", "label.powered-by": "Didukung oleh {name}",
@ -80,15 +110,18 @@
"label.query": "Query", "label.query": "Query",
"label.query-parameters": "Query parameters", "label.query-parameters": "Query parameters",
"label.realtime": "Waktu nyata", "label.realtime": "Waktu nyata",
"label.referrer": "Referrer",
"label.referrers": "Perujuk", "label.referrers": "Perujuk",
"label.refresh": "Segarkan", "label.refresh": "Segarkan",
"label.regenerate": "Regenerate", "label.regenerate": "Regenerate",
"label.region": "Region",
"label.regions": "Regions", "label.regions": "Regions",
"label.remove": "Remove", "label.remove": "Remove",
"label.reports": "Reports", "label.reports": "Reports",
"label.required": "Wajib", "label.required": "Wajib",
"label.reset": "Atur ulang", "label.reset": "Atur ulang",
"label.reset-website": "Atur ulang statistik", "label.reset-website": "Atur ulang statistik",
"label.retention": "Retention",
"label.role": "Role", "label.role": "Role",
"label.run-query": "Run query", "label.run-query": "Run query",
"label.save": "Simpan", "label.save": "Simpan",
@ -99,12 +132,15 @@
"label.settings": "Pengaturan", "label.settings": "Pengaturan",
"label.share-url": "Bagikan URL", "label.share-url": "Bagikan URL",
"label.single-day": "Sehari", "label.single-day": "Sehari",
"label.sum": "Sum",
"label.tablet": "Tablet", "label.tablet": "Tablet",
"label.team": "Team", "label.team": "Team",
"label.team-guest": "Team guest", "label.team-guest": "Team guest",
"label.team-id": "Team ID", "label.team-id": "Team ID",
"label.team-member": "Team member", "label.team-member": "Team member",
"label.team-name": "Team name",
"label.team-owner": "Team owner", "label.team-owner": "Team owner",
"label.team-websites": "Team websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Tema", "label.theme": "Tema",
"label.this-month": "Bulan ini", "label.this-month": "Bulan ini",
@ -114,14 +150,21 @@
"label.title": "Title", "label.title": "Title",
"label.today": "Hari ini", "label.today": "Hari ini",
"label.toggle-charts": "Buka grafik", "label.toggle-charts": "Buka grafik",
"label.total": "Total",
"label.total-records": "Total records",
"label.tracking-code": "Kode lacak", "label.tracking-code": "Kode lacak",
"label.true": "True",
"label.type": "Type",
"label.unique": "Unique",
"label.unique-visitors": "Pengunjung unik", "label.unique-visitors": "Pengunjung unik",
"label.unknown": "Tidak diketahui", "label.unknown": "Tidak diketahui",
"label.untitled": "Untitled",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "User", "label.user": "User",
"label.username": "Nama pengguna", "label.username": "Nama pengguna",
"label.users": "Users", "label.users": "Users",
"label.value": "Value",
"label.view": "View", "label.view": "View",
"label.view-details": "Lihat Detil", "label.view-details": "Lihat Detil",
"label.view-only": "View only", "label.view-only": "View only",
@ -132,33 +175,6 @@
"label.websites": "Situs web", "label.websites": "Situs web",
"label.window": "Window", "label.window": "Window",
"label.yesterday": "Yesterday", "label.yesterday": "Yesterday",
"labels.after": "After",
"labels.average": "Average",
"labels.before": "Before",
"labels.breakdown": "Breakdown",
"labels.contains": "Contains",
"labels.create-report": "Create report",
"labels.description": "Description",
"labels.does-not-contain": "Does not contain",
"labels.does-not-equal": "Does not equal",
"labels.equals": "Equals",
"labels.false": "False",
"labels.filters": "Filters",
"labels.greater-than": "Greater than",
"labels.greater-than-equals": "Greater than or equals",
"labels.less-than": "Less than",
"labels.less-than-equals": "Less than or equals",
"labels.max": "Max",
"labels.min": "Min",
"labels.overview": "Overview",
"labels.sum": "Sum",
"labels.total": "Total",
"labels.total-records": "Total records",
"labels.true": "True",
"labels.type": "Type",
"labels.unique": "Unique",
"labels.untitled": "Untitled",
"labels.value": "Value",
"message.active-users": "{x} pengunjung saat ini", "message.active-users": "{x} pengunjung saat ini",
"message.confirm-delete": "Apakah kamu yakin ingin menghapus {target}?", "message.confirm-delete": "Apakah kamu yakin ingin menghapus {target}?",
"message.confirm-leave": "Are you sure you want to leave {target}?", "message.confirm-leave": "Are you sure you want to leave {target}?",
@ -172,11 +188,15 @@
"message.incorrect-username-password": "Nama pengguna/kata sandi salah.", "message.incorrect-username-password": "Nama pengguna/kata sandi salah.",
"message.invalid-domain": "Domain tidak valid", "message.invalid-domain": "Domain tidak valid",
"message.min-password-length": "Minimum length of {n} characters", "message.min-password-length": "Minimum length of {n} characters",
"message.new-version-available": "A new version of Umami {version} is available!",
"message.no-data-available": "Tidak ada data.", "message.no-data-available": "Tidak ada data.",
"message.no-event-data": "No event data is available.", "message.no-event-data": "No event data is available.",
"message.no-match-password": "Kata sandi tidak cocok", "message.no-match-password": "Kata sandi tidak cocok",
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-teams": "You have not created any teams.", "message.no-teams": "You have not created any teams.",
"message.no-users": "There are no users.", "message.no-users": "There are no users.",
"message.no-websites-configured": "Anda tidak memiliki situs web yang dikonfigurasi.",
"message.page-not-found": "Halaman tidak ditemukan.", "message.page-not-found": "Halaman tidak ditemukan.",
"message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.",
"message.reset-website-warning": "Semua statistik pada website ini akan dihapus, tetapi kode lacak akan tetap terpasang", "message.reset-website-warning": "Semua statistik pada website ini akan dihapus, tetapi kode lacak akan tetap terpasang",
@ -184,12 +204,8 @@
"message.share-url": "Ini adalah URL yang dibagikan secara publik untuk {target}.", "message.share-url": "Ini adalah URL yang dibagikan secara publik untuk {target}.",
"message.team-already-member": "You are already a member of the team.", "message.team-already-member": "You are already a member of the team.",
"message.team-not-found": "Team not found.", "message.team-not-found": "Team not found.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.tracking-code": "Kode lacak", "message.tracking-code": "Kode lacak",
"message.user-deleted": "User deleted.", "message.user-deleted": "User deleted.",
"message.visitor-log": "Pengunjung dari {country} dengan {browser} di {device} {os}", "message.visitor-log": "Pengunjung dari {country} dengan {browser} di {device} {os}"
"message.no-results-found": "No results were found.",
"message.no-team-websites": "This team does not have any websites.",
"message.no-websites-configured": "Anda tidak memiliki situs web yang dikonfigurasi.",
"message.team-websites-info": "Websites can be viewed by anyone on the team.",
"message.new-version-available": "A new version of Umami {version} is available!"
} }

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