This commit is contained in:
Mike Cao 2024-08-27 16:23:12 -07:00
commit d310066769
7 changed files with 124 additions and 123 deletions

View File

@ -64,7 +64,7 @@ export function RetentionTable({ days = DAYS }) {
key={day} key={day}
className={classNames(styles.cell, { [styles.empty]: !percentage })} className={classNames(styles.cell, { [styles.empty]: !percentage })}
> >
{percentage ? `${percentage.toFixed(2)}%` : ''} {percentage ? `${Number(percentage).toFixed(2)}%` : ''}
</div> </div>
); );
})} })}

View File

@ -1,9 +1,8 @@
import { useMemo } from 'react';
import { useTheme } from 'components/hooks';
import Chart, { ChartProps } from 'components/charts/Chart';
import { renderNumberLabels } from 'lib/charts';
import { useState } from 'react';
import BarChartTooltip from 'components/charts/BarChartTooltip'; import BarChartTooltip from 'components/charts/BarChartTooltip';
import Chart, { ChartProps } from 'components/charts/Chart';
import { useTheme } from 'components/hooks';
import { renderNumberLabels } from 'lib/charts';
import { useMemo, useState } from 'react';
export interface BarChartProps extends ChartProps { export interface BarChartProps extends ChartProps {
unit: string; unit: string;
@ -36,7 +35,7 @@ export function BarChart(props: BarChartProps) {
x: { x: {
type: XAxisType, type: XAxisType,
stacked: true, stacked: true,
min: unit === 'minute' ? minDate : '', min: minDate && new Date(minDate).getSeconds() === 0 ? minDate : '',
max: maxDate, max: maxDate,
time: { time: {
unit, unit,

View File

@ -47,6 +47,8 @@ export function EventsChart({ websiteId, className }: EventsChartProps) {
return ( return (
<BarChart <BarChart
minDate={startDate.toISOString()}
maxDate={endDate.toISOString()}
className={className} className={className}
data={chartData} data={chartData}
unit={unit} unit={unit}

View File

@ -184,7 +184,7 @@
"label.tablet": "Tauleta", "label.tablet": "Tauleta",
"label.team": "Equip", "label.team": "Equip",
"label.team-id": "ID del equip", "label.team-id": "ID del equip",
"label.team-manager": "Responsable d'Equip", "label.team-manager": "Responsable d'equip",
"label.team-member": "Membre de l'equip", "label.team-member": "Membre de l'equip",
"label.team-name": "Nom de l'equip", "label.team-name": "Nom de l'equip",
"label.team-owner": "Propietari de l'equip", "label.team-owner": "Propietari de l'equip",

View File

@ -66,9 +66,9 @@
"label.edit-member": "Mitglied bearbeiten", "label.edit-member": "Mitglied bearbeiten",
"label.enable-share-url": "Freigabe-URL aktivieren", "label.enable-share-url": "Freigabe-URL aktivieren",
"label.end-step": "Schlussschritt", "label.end-step": "Schlussschritt",
"label.entry": "Eintrags-URL", "label.entry": "Eingangs-URL",
"label.event": "Event", "label.event": "Ereigniss",
"label.event-data": "Eventdaten", "label.event-data": "Ereignissdaten",
"label.events": "Ereignisse", "label.events": "Ereignisse",
"label.exit": "Ausgangs-URL", "label.exit": "Ausgangs-URL",
"label.false": "Falsch", "label.false": "Falsch",
@ -78,9 +78,9 @@
"label.filter-combined": "Kombiniert", "label.filter-combined": "Kombiniert",
"label.filter-raw": "Rohdaten", "label.filter-raw": "Rohdaten",
"label.filters": "Filter", "label.filters": "Filter",
"label.first-seen": "First seen", "label.first-seen": "Erstmalig gesehen",
"label.funnel": "Funnel", "label.funnel": "Trichter",
"label.funnel-description": "Verstehe die Konversions- und Abbruchrate der Nutzer.", "label.funnel-description": "Verstehen Sie die Konversions- und Absprungrate Ihrer Nutzer.",
"label.goal": "Ziel", "label.goal": "Ziel",
"label.goals": "Ziele", "label.goals": "Ziele",
"label.goals-description": "Verfolgen Sie Ihre Ziele für Seitenaufrufe und Ereignisse.", "label.goals-description": "Verfolgen Sie Ihre Ziele für Seitenaufrufe und Ereignisse.",
@ -89,7 +89,7 @@
"label.host": "Host", "label.host": "Host",
"label.hosts": "Hosts", "label.hosts": "Hosts",
"label.insights": "Einblicke", "label.insights": "Einblicke",
"label.insights-description": "Vertiefen Sie Ihre Daten mit Hilfe von Segmenten und Filtern.", "label.insights-description": "Vertiefen Sie sich mit Hilfe von Segmenten und Filtern in Ihre Daten.",
"label.is": "Ist", "label.is": "Ist",
"label.is-not": "Ist nicht", "label.is-not": "Ist nicht",
"label.is-not-set": "Ist nicht gesetzt", "label.is-not-set": "Ist nicht gesetzt",
@ -97,14 +97,14 @@
"label.join": "Beitreten", "label.join": "Beitreten",
"label.join-team": "Team beitreten", "label.join-team": "Team beitreten",
"label.journey": "Reise", "label.journey": "Reise",
"label.journey-description": "Verstehe, wie Nutzer auf der Webseite navigieren", "label.journey-description": "Verstehen Sie, wie Nutzer auf Ihrer Website navigieren.",
"label.language": "Sprache", "label.language": "Sprache",
"label.languages": "Sprachen", "label.languages": "Sprachen",
"label.laptop": "Laptop", "label.laptop": "Laptop",
"label.last-days": "Letzten {x} Tage", "label.last-days": "Letzten {x} Tage",
"label.last-hours": "Letzten {x} Stunden", "label.last-hours": "Letzten {x} Stunden",
"label.last-months": "Letzten {x} Monate", "label.last-months": "Letzten {x} Monate",
"label.last-seen": "Last seen", "label.last-seen": "Zuletzt gesehen",
"label.leave": "Verlassen", "label.leave": "Verlassen",
"label.leave-team": "Team verlassen", "label.leave-team": "Team verlassen",
"label.less-than": "Kleiner als", "label.less-than": "Kleiner als",
@ -120,7 +120,7 @@
"label.mobile": "Handy", "label.mobile": "Handy",
"label.more": "Mehr", "label.more": "Mehr",
"label.my-account": "Mein Account", "label.my-account": "Mein Account",
"label.my-websites": "Meine Webseiten", "label.my-websites": "Meine Websites",
"label.name": "Name", "label.name": "Name",
"label.new-password": "Neues Passwort", "label.new-password": "Neues Passwort",
"label.none": "Keine", "label.none": "Keine",
@ -134,21 +134,21 @@
"label.pageTitle": "Seitentitel", "label.pageTitle": "Seitentitel",
"label.pages": "Seiten", "label.pages": "Seiten",
"label.password": "Passwort", "label.password": "Passwort",
"label.path": "Path", "label.path": "Pfad",
"label.paths": "Paths", "label.paths": "Pfade",
"label.powered-by": "Betrieben durch {name}", "label.powered-by": "Betrieben durch {name}",
"label.previous": "Vorheriges", "label.previous": "Vorherig",
"label.previous-period": "Vorherige Periode", "label.previous-period": "Vorherige Periode",
"label.previous-year": "Vorheriges Jahr", "label.previous-year": "Vorheriges Jahr",
"label.profile": "Profil", "label.profile": "Profil",
"label.properties": "Properties", "label.properties": "Eigenschaften",
"label.property": "Eigentum", "label.property": "Eigentum",
"label.queries": "Abfragen", "label.queries": "Abfragen",
"label.query": "Abfrage", "label.query": "Abfrage",
"label.query-parameters": "Abfrageparameter", "label.query-parameters": "Abfrageparameter",
"label.realtime": "Echtzeit", "label.realtime": "Echtzeit",
"label.referrer": "Referrer", "label.referrer": "Übermittler",
"label.referrers": "Referrer", "label.referrers": "Übermittler",
"label.refresh": "Aktualisieren", "label.refresh": "Aktualisieren",
"label.regenerate": "Erneuern", "label.regenerate": "Erneuern",
"label.region": "Region", "label.region": "Region",
@ -159,11 +159,11 @@
"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": "Bewahrung", "label.retention": "Erhalt",
"label.retention-description": "Messen Sie die Verweildauer auf Ihrer Website, indem Sie verfolgen, wie oft die Nutzer zurückkehren.", "label.retention-description": "Messen Sie die Verweildauer auf Ihrer Website, indem Sie verfolgen, wie oft die Nutzer zurückkehren.",
"label.revenue": "Revenue", "label.revenue": "Umsatz",
"label.revenue-description": "Look into your revenue across time.", "label.revenue-description": "Haben Sie einen Blick auf Ihre Umsätze im Laufe der Zeit.",
"label.revenue-property": "Revenue Property", "label.revenue-property": "Umsatzeigenschaften",
"label.role": "Rolle", "label.role": "Rolle",
"label.run-query": "Abfrage starten", "label.run-query": "Abfrage starten",
"label.save": "Speichern", "label.save": "Speichern",
@ -172,8 +172,8 @@
"label.select": "Auswählen", "label.select": "Auswählen",
"label.select-date": "Datum auswählen", "label.select-date": "Datum auswählen",
"label.select-role": "Rolle auswählen", "label.select-role": "Rolle auswählen",
"label.select-website": "Webseite auswählen", "label.select-website": "Website auswählen",
"label.session": "Session", "label.session": "Sitzung",
"label.sessions": "Sitzungen", "label.sessions": "Sitzungen",
"label.settings": "Einstellungen", "label.settings": "Einstellungen",
"label.share-url": "Freigabe-URL", "label.share-url": "Freigabe-URL",
@ -188,7 +188,7 @@
"label.team-member": "Team-Mitglied", "label.team-member": "Team-Mitglied",
"label.team-name": "Name des Teams", "label.team-name": "Name des Teams",
"label.team-owner": "Team-Eigentümer", "label.team-owner": "Team-Eigentümer",
"label.team-view-only": "Nur für Team sichtbar", "label.team-view-only": "Nur für Team-Mitglieder sichtbar",
"label.team-websites": "Team-Websites", "label.team-websites": "Team-Websites",
"label.teams": "Teams", "label.teams": "Teams",
"label.theme": "Thema", "label.theme": "Thema",
@ -202,25 +202,25 @@
"label.total": "Gesamt", "label.total": "Gesamt",
"label.total-records": "Datensätze insgesamt", "label.total-records": "Datensätze insgesamt",
"label.tracking-code": "Tracking Code", "label.tracking-code": "Tracking Code",
"label.transactions": "Transactions", "label.transactions": "Transaktionen",
"label.transfer": "Übertragung", "label.transfer": "Übertragung",
"label.transfer-website": "Website übertragen", "label.transfer-website": "Website übertragen",
"label.true": "Wahr", "label.true": "Wahr",
"label.type": "Typ", "label.type": "Typ",
"label.unique": "Eindeutig", "label.unique": "Einzigartig",
"label.unique-visitors": "Eindeutige Besucher", "label.unique-visitors": "Einzigartige Besucher",
"label.uniqueCustomers": "Unique Customers", "label.uniqueCustomers": "Einzigartige Kunden",
"label.unknown": "Unbekannt", "label.unknown": "Unbekannt",
"label.untitled": "Unbenannt", "label.untitled": "Unbenannt",
"label.update": "Update", "label.update": "Update",
"label.url": "URL", "label.url": "URL",
"label.urls": "URLs", "label.urls": "URLs",
"label.user": "Benutzer", "label.user": "Benutzer",
"label.user-property": "User Property", "label.user-property": "Benutzereigenschaften",
"label.username": "Benutzername", "label.username": "Benutzername",
"label.users": "Benutzer", "label.users": "Benutzer",
"label.utm": "UTM", "label.utm": "UTM",
"label.utm-description": "Tracke deine Kampagnen mit UTM parameterns.", "label.utm-description": "Tracken Sie Ihre Kampagnen mit UTM Parametern.",
"label.value": "Wert", "label.value": "Wert",
"label.view": "Anzeigen", "label.view": "Anzeigen",
"label.view-details": "Details anzeigen", "label.view-details": "Details anzeigen",
@ -230,9 +230,9 @@
"label.visit-duration": "Durchschn. Besuchszeit", "label.visit-duration": "Durchschn. Besuchszeit",
"label.visitors": "Besucher", "label.visitors": "Besucher",
"label.visits": "Besuche", "label.visits": "Besuche",
"label.website": "Webseite", "label.website": "Website",
"label.website-id": "Webseiten-ID", "label.website-id": "Website-ID",
"label.websites": "Webseiten", "label.websites": "Websites",
"label.window": "Fenster", "label.window": "Fenster",
"label.yesterday": "Gestern", "label.yesterday": "Gestern",
"message.action-confirmation": "Schreibe {confirmation} in die Box zur bestätigung.", "message.action-confirmation": "Schreibe {confirmation} in die Box zur bestätigung.",
@ -242,7 +242,7 @@
"message.confirm-leave": "Sind Sie sicher, dass die {target} verlassen möchten?", "message.confirm-leave": "Sind Sie sicher, dass die {target} verlassen möchten?",
"message.confirm-remove": "Sind Sie sicher, {target} zu entfernen?", "message.confirm-remove": "Sind Sie sicher, {target} zu entfernen?",
"message.confirm-reset": "Sind Sie sicher, dass Sie die Statistiken von {target} zurücksetzen wollen?", "message.confirm-reset": "Sind Sie sicher, dass Sie die Statistiken von {target} zurücksetzen wollen?",
"message.delete-team-warning": "Ein Team zu löschen, wird auch alle Team-Webseiten löschen.", "message.delete-team-warning": "Ein Team zu löschen, wird auch alle Team-Websites löschen.",
"message.delete-website-warning": "Alle zugehörigen Daten werden ebenfalls gelöscht.", "message.delete-website-warning": "Alle zugehörigen Daten werden ebenfalls gelöscht.",
"message.error": "Es ist ein Fehler aufgetreten.", "message.error": "Es ist ein Fehler aufgetreten.",
"message.event-log": "{event} auf {url}", "message.event-log": "{event} auf {url}",
@ -268,12 +268,12 @@
"message.team-not-found": "Team nicht gefunden.", "message.team-not-found": "Team nicht gefunden.",
"message.team-websites-info": "Websites können von jedem im Team eingesehen werden.", "message.team-websites-info": "Websites können von jedem im Team eingesehen werden.",
"message.tracking-code": "Tracking Code", "message.tracking-code": "Tracking Code",
"message.transfer-team-website-to-user": "Diese Webseite zu deinem Account transferieren?", "message.transfer-team-website-to-user": "Diese Website zu Ihrem Account transferieren?",
"message.transfer-user-website-to-team": "Wähle ein Team aus, zu dem die Webseite transferiert werden soll.", "message.transfer-user-website-to-team": "Wählen Sie ein Team aus, zu dem die Website transferiert werden soll.",
"message.transfer-website": "Übertrage die Eigentümerrechte zu deinem Account oder einem anderen Team.", "message.transfer-website": "Übertragen Sie die Eigentümerrechte zu Ihrem Account oder einem anderen Team.",
"message.triggered-event": "Ausgelöstes Event", "message.triggered-event": "Ausgelöstes Ereigniss",
"message.user-deleted": "Benutzer gelöscht.", "message.user-deleted": "Benutzer gelöscht.",
"message.viewed-page": "Besuchte Seite", "message.viewed-page": "Seite besucht",
"message.visitor-log": "Besucher aus {country} benutzt {browser} auf {os} {device}", "message.visitor-log": "Besucher aus {country} benutzt {browser} auf {os} {device}",
"message.visitors-dropped-off": "Besucherverlust" "message.visitors-dropped-off": "Besucherverlust"
} }

View File

@ -1,7 +1,7 @@
{ {
"label.access-code": "액세스 코드", "label.access-code": "액세스 코드",
"label.actions": "액션", "label.actions": "동작",
"label.activity": "활동 기록", "label.activity": "활동",
"label.add": "추가", "label.add": "추가",
"label.add-description": "설명 추가", "label.add-description": "설명 추가",
"label.add-member": "멤버 추가", "label.add-member": "멤버 추가",
@ -20,7 +20,7 @@
"label.browser": "브라우저", "label.browser": "브라우저",
"label.browsers": "브라우저", "label.browsers": "브라우저",
"label.cancel": "취소", "label.cancel": "취소",
"label.change-password": "비밀번호 변경하기", "label.change-password": "비밀번호 변경",
"label.cities": "도시", "label.cities": "도시",
"label.city": "도시", "label.city": "도시",
"label.clear-all": "모두 지우기", "label.clear-all": "모두 지우기",
@ -32,10 +32,10 @@
"label.count": "수", "label.count": "수",
"label.countries": "국가", "label.countries": "국가",
"label.country": "국가", "label.country": "국가",
"label.create": "생성", "label.create": "만들기",
"label.create-report": "리포트 생성", "label.create-report": "보고서 만들기",
"label.create-team": "팀 생성", "label.create-team": "팀 만들기",
"label.create-user": "사용자 생성", "label.create-user": "사용자 만들기",
"label.created": "생성됨", "label.created": "생성됨",
"label.created-by": "작성자", "label.created-by": "작성자",
"label.current": "현재", "label.current": "현재",
@ -48,13 +48,13 @@
"label.day": "일", "label.day": "일",
"label.default-date-range": "기본 날짜 범위", "label.default-date-range": "기본 날짜 범위",
"label.delete": "삭제", "label.delete": "삭제",
"label.delete-report": "리포트 삭제", "label.delete-report": "보고서 삭제",
"label.delete-team": "팀 삭제", "label.delete-team": "팀 삭제",
"label.delete-user": "사용자 삭제", "label.delete-user": "사용자 삭제",
"label.delete-website": "웹사이트 삭제", "label.delete-website": "웹사이트 삭제",
"label.description": "설명", "label.description": "설명",
"label.desktop": "데스크", "label.desktop": "데스크",
"label.details": "세부 사항", "label.details": "세부 정보",
"label.device": "기기", "label.device": "기기",
"label.devices": "기기", "label.devices": "기기",
"label.dismiss": "무시하기", "label.dismiss": "무시하기",
@ -63,9 +63,9 @@
"label.dropoff": "이탈", "label.dropoff": "이탈",
"label.edit": "편집", "label.edit": "편집",
"label.edit-dashboard": "대시보드 편집", "label.edit-dashboard": "대시보드 편집",
"label.edit-member": "회원 편집", "label.edit-member": "멤버 편집",
"label.enable-share-url": "URL 공유 활성화", "label.enable-share-url": "URL 공유 활성화",
"label.end-step": "종료 단계", "label.end-step": "마지막 단계",
"label.entry": "입장 URL", "label.entry": "입장 URL",
"label.event": "이벤트", "label.event": "이벤트",
"label.event-data": "이벤트 데이터", "label.event-data": "이벤트 데이터",
@ -75,15 +75,15 @@
"label.field": "필드", "label.field": "필드",
"label.fields": "필드", "label.fields": "필드",
"label.filter": "필터", "label.filter": "필터",
"label.filter-combined": "합쳐 보기", "label.filter-combined": "합쳐 보기",
"label.filter-raw": "전체 보기", "label.filter-raw": "전체 보기",
"label.filters": "필터", "label.filters": "필터",
"label.first-seen": "First seen", "label.first-seen": "첫 접속",
"label.funnel": "퍼널", "label.funnel": "퍼널",
"label.funnel-description": "사용자 전환율 및 이탈률을 살펴보세요.", "label.funnel-description": "사용자 전환율 및 이탈률을 살펴보세요.",
"label.goal": "목표", "label.goal": "목표",
"label.goals": "목표", "label.goals": "목표",
"label.goals-description": "페이지 및 이벤트 목표를 추적합니다.", "label.goals-description": "페이지 조회 및 이벤트 목표를 추적합니다.",
"label.greater-than": "이상", "label.greater-than": "이상",
"label.greater-than-equals": "이상", "label.greater-than-equals": "이상",
"label.host": "호스트", "label.host": "호스트",
@ -94,17 +94,17 @@
"label.is-not": "해당하지 않음", "label.is-not": "해당하지 않음",
"label.is-not-set": "설정되지 않음", "label.is-not-set": "설정되지 않음",
"label.is-set": "설정됨", "label.is-set": "설정됨",
"label.join": "가입", "label.join": "가입하기",
"label.join-team": "팀 가입", "label.join-team": "팀 가입하기",
"label.journey": "여정", "label.journey": "여정",
"label.journey-description": "사용자가 웹사이트를 탐색하는 경로를 살펴보세요.", "label.journey-description": "사용자가 웹사이트를 탐색하는 경로를 살펴보세요.",
"label.language": "언어", "label.language": "언어",
"label.languages": "언어", "label.languages": "언어",
"label.laptop": "노트북", "label.laptop": "노트북",
"label.last-days": "최근 {x} 일", "label.last-days": "지난 {x}일",
"label.last-hours": "최근 {x} 시간", "label.last-hours": "지난 {x}시간",
"label.last-months": "최근 {x} 개월", "label.last-months": "지난 {x}개월",
"label.last-seen": "Last seen", "label.last-seen": "마지막 접속",
"label.leave": "떠나기", "label.leave": "떠나기",
"label.leave-team": "팀 떠나기", "label.leave-team": "팀 떠나기",
"label.less-than": "미만", "label.less-than": "미만",
@ -124,56 +124,56 @@
"label.name": "이름", "label.name": "이름",
"label.new-password": "새 비밀번호", "label.new-password": "새 비밀번호",
"label.none": "없음", "label.none": "없음",
"label.number-of-records": "{x} {x, plural, one {record} other {레코드}}", "label.number-of-records": "{x}개 레코드",
"label.ok": "확인", "label.ok": "확인",
"label.os": "운영체제", "label.os": "운영 체제",
"label.overview": "개요", "label.overview": "개요",
"label.owner": "소유자", "label.owner": "소유자",
"label.page-of": "{total} 중 {current} 페이지", "label.page-of": "페이지 {current}/{total}",
"label.page-views": "페이지 ", "label.page-views": "페이지 조회",
"label.pageTitle": "페이지 제목", "label.pageTitle": "페이지 제목",
"label.pages": "페이지", "label.pages": "페이지",
"label.password": "비밀번호", "label.password": "비밀번호",
"label.path": "Path", "label.path": "패스",
"label.paths": "Paths", "label.paths": "패스",
"label.powered-by": "이 시스템은 {name}에서 구동되고 있습니다.", "label.powered-by": "Powered by {name}",
"label.previous": "이전", "label.previous": "이전",
"label.previous-period": "이전 기간", "label.previous-period": "이전 기간",
"label.previous-year": "이전 연도", "label.previous-year": "이전 연도",
"label.profile": "프로필", "label.profile": "프로필",
"label.properties": "Properties", "label.properties": "속성",
"label.property": "속성", "label.property": "속성",
"label.queries": "쿼리", "label.queries": "쿼리",
"label.query": "쿼리", "label.query": "쿼리",
"label.query-parameters": "쿼리 매개변수", "label.query-parameters": "쿼리 매개 변수",
"label.realtime": "실시간", "label.realtime": "실시간",
"label.referrer": "리퍼러", "label.referrer": "리퍼러",
"label.referrers": "리퍼러", "label.referrers": "리퍼러",
"label.refresh": "새로고침", "label.refresh": "새로 고침",
"label.regenerate": "다시 생성", "label.regenerate": "다시 생성",
"label.region": "지역", "label.region": "지역",
"label.regions": "지역", "label.regions": "지역",
"label.remove": "제거", "label.remove": "제거",
"label.remove-member": "멤버 제거", "label.remove-member": "멤버 제거",
"label.reports": "리포트", "label.reports": "보고서",
"label.required": "필수", "label.required": "필수",
"label.reset": "리셋", "label.reset": "초기화",
"label.reset-website": "웹사이트 초기화", "label.reset-website": "웹사이트 초기화",
"label.retention": "리텐션", "label.retention": "리텐션",
"label.retention-description": "사용자가 얼마나 자주 돌아오는지를 추적하여 웹사이트의 리텐션을 측정하십시오.", "label.retention-description": "사용자가 얼마나 자주 돌아오는지를 추적하여 웹사이트의 리텐션을 측정하십시오.",
"label.revenue": "Revenue", "label.revenue": "수익",
"label.revenue-description": "Look into your revenue across time.", "label.revenue-description": "시간대별 수익을 살펴보세요.",
"label.revenue-property": "Revenue Property", "label.revenue-property": "수익 속성",
"label.role": "역할", "label.role": "역할",
"label.run-query": "쿼리 실행", "label.run-query": "쿼리 실행",
"label.save": "저장", "label.save": "저장",
"label.screens": "스크린", "label.screens": "화면",
"label.search": "검색", "label.search": "검색",
"label.select": "선택", "label.select": "선택",
"label.select-date": "날짜 선택", "label.select-date": "날짜 선택",
"label.select-role": "역할 선택", "label.select-role": "역할 선택",
"label.select-website": "웹사이트 선택", "label.select-website": "웹사이트 선택",
"label.session": "Session", "label.session": "세션",
"label.sessions": "세션", "label.sessions": "세션",
"label.settings": "설정", "label.settings": "설정",
"label.share-url": "공유 URL", "label.share-url": "공유 URL",
@ -200,43 +200,43 @@
"label.today": "오늘", "label.today": "오늘",
"label.toggle-charts": "차트 전환", "label.toggle-charts": "차트 전환",
"label.total": "합계", "label.total": "합계",
"label.total-records": " 레코드", "label.total-records": "전체 레코드",
"label.tracking-code": "추적 코드", "label.tracking-code": "추적 코드",
"label.transactions": "Transactions", "label.transactions": "거래",
"label.transfer": "전송", "label.transfer": "전송",
"label.transfer-website": "웹사이트 전송", "label.transfer-website": "웹사이트 전송",
"label.true": "참", "label.true": "참",
"label.type": "유형", "label.type": "유형",
"label.unique": "고유", "label.unique": "고유",
"label.unique-visitors": "순방문자(UV)", "label.unique-visitors": "고유 방문자",
"label.uniqueCustomers": "Unique Customers", "label.uniqueCustomers": "고유 고객",
"label.unknown": "알 수 없음", "label.unknown": "알 수 없음",
"label.untitled": "제목 없음", "label.untitled": "제목 없음",
"label.update": "업데이트", "label.update": "업데이트",
"label.url": "URL", "label.url": "URL",
"label.urls": "URL", "label.urls": "URL",
"label.user": "사용자", "label.user": "사용자",
"label.user-property": "User Property", "label.user-property": "사용자 속성",
"label.username": "사용자", "label.username": "사용자 이름",
"label.users": "사용자", "label.users": "사용자",
"label.utm": "UTM", "label.utm": "UTM",
"label.utm-description": "UTM 매개변수를 통해 캠페인을 추적합니다.", "label.utm-description": "UTM 매개변수를 통해 캠페인을 추적합니다.",
"label.value": "값", "label.value": "값",
"label.view": "보기", "label.view": "보기",
"label.view-details": "상세보기", "label.view-details": "자세히 보기",
"label.view-only": "보기 전용", "label.view-only": "보기 전용",
"label.views": "조회", "label.views": "조회",
"label.views-per-visit": "방문당 조회", "label.views-per-visit": "방문당 조회",
"label.visit-duration": "평균 방문 시간", "label.visit-duration": "평균 방문 시간",
"label.visitors": "방문", "label.visitors": "방문",
"label.visits": "방문", "label.visits": "방문",
"label.website": "웹사이트", "label.website": "웹사이트",
"label.website-id": "웹사이트 ID", "label.website-id": "웹사이트 ID",
"label.websites": "웹사이트", "label.websites": "웹사이트",
"label.window": "창", "label.window": "창",
"label.yesterday": "어제", "label.yesterday": "어제",
"message.action-confirmation": "확인을 위해 아래 상자에 {confirmation}을(를) 입력하십시오.", "message.action-confirmation": "확인을 위해 아래 상자에 {confirmation}을(를) 입력하세요.",
"message.active-users": "{x}명의 사용자가 보는 중입니다.", "message.active-users": "현재 방문자 {x}명",
"message.collected-data": "수집된 데이터", "message.collected-data": "수집된 데이터",
"message.confirm-delete": "{target}을(를) 삭제하시겠습니까?", "message.confirm-delete": "{target}을(를) 삭제하시겠습니까?",
"message.confirm-leave": "{target}을(를) 떠나시겠습니까?", "message.confirm-leave": "{target}을(를) 떠나시겠습니까?",
@ -244,36 +244,36 @@
"message.confirm-reset": "{target}을(를) 초기화하시겠습니까?", "message.confirm-reset": "{target}을(를) 초기화하시겠습니까?",
"message.delete-team-warning": "팀을 삭제하면 팀에 등록된 모든 웹사이트도 삭제됩니다.", "message.delete-team-warning": "팀을 삭제하면 팀에 등록된 모든 웹사이트도 삭제됩니다.",
"message.delete-website-warning": "관련된 모든 데이터가 삭제됩니다.", "message.delete-website-warning": "관련된 모든 데이터가 삭제됩니다.",
"message.error": "오류가 발생하였습니다.", "message.error": "오류가 발생습니다.",
"message.event-log": "{event} - {url}", "message.event-log": "{event} - {url}",
"message.go-to-settings": "설정으로 이동", "message.go-to-settings": "설정으로 이동",
"message.incorrect-username-password": "사용자 이름/비밀번호가 잘못되었습니다.", "message.incorrect-username-password": "사용자 이름 또는 비밀번호를 잘못 입력했습니다.",
"message.invalid-domain": "잘못된 도메인", "message.invalid-domain": "잘못된 도메인입니다. http/https를 포함하지 마세요.",
"message.min-password-length": "최소 길이는 {n}자입니다", "message.min-password-length": "최소 {n}자여야 합니다",
"message.new-version-available": "새 버전이 사용 가능합니다! - Umami {version}", "message.new-version-available": "Umami의 새 버전 {version}을(를) 사용할 수 있습니다!",
"message.no-data-available": "사용 가능한 데이터가 없습니다.", "message.no-data-available": "사용할 수 있는 데이터가 없습니다.",
"message.no-event-data": "사용 가능한 이벤트 데이터가 없습니다.", "message.no-event-data": "사용할 수 있는 이벤트 데이터가 없습니다.",
"message.no-match-password": "비밀번호가 일치하지 않", "message.no-match-password": "비밀번호가 일치하지 않습니다.",
"message.no-results-found": "결과를 찾을 수 없습니다.", "message.no-results-found": "결과를 찾을 수 없습니다.",
"message.no-team-websites": "팀에 웹사이트가 없습니다.", "message.no-team-websites": "팀에 웹사이트가 없습니다.",
"message.no-teams": "생성된 팀이 없습니다.", "message.no-teams": "만든 팀이 없습니다.",
"message.no-users": "사용자가 없습니다.", "message.no-users": "사용자가 없습니다.",
"message.no-websites-configured": "설정된 웹사이트가 없습니다.", "message.no-websites-configured": "설정된 웹사이트가 없습니다.",
"message.page-not-found": "페이지를 찾을 수 없습니다.", "message.page-not-found": "페이지를 찾을 수 없",
"message.reset-website": "이 웹사이트를 초기화하려면, 아래 상자에 {confirmation}을(를) 입력하십시오.", "message.reset-website": "이 웹사이트를 초기화하려면 아래 상자에 {confirmation}을(를) 입력하세요.",
"message.reset-website-warning": "이 웹사이트의 모든 통계가 삭제되지만 설정은 그대로 유지됩니다.", "message.reset-website-warning": "이 웹사이트의 모든 통계가 삭제되지만 설정은 그대로 유지됩니다.",
"message.saved": "성공적으로 저장되었습니다.", "message.saved": "저장했습니다.",
"message.share-url": "아래 링크를 통해 웹사이트의 통계를 누구나 볼 수 있습니다.", "message.share-url": "아래 링크를 통해 웹사이트의 통계를 누구나 볼 수 있습니다.",
"message.team-already-member": "이미 팀의 회원입니다.", "message.team-already-member": "이미 팀 멤버입니다.",
"message.team-not-found": "팀을 찾을 수 없습니다.", "message.team-not-found": "팀을 찾을 수 없습니다.",
"message.team-websites-info": "웹사이트는 팀 누구나 볼 수 있습니다.", "message.team-websites-info": "웹사이트는 팀 멤버 누구나 볼 수 있습니다.",
"message.tracking-code": "이 웹사이트의 통계를 추적하려면, 다음 코드를 HTML의 <head>...</head> 섹션에 추가하십시오.", "message.tracking-code": "이 웹사이트의 통계를 추적하려면 다음 코드를 HTML의 <head>...</head> 부분에 추가하세요.",
"message.transfer-team-website-to-user": "이 웹사이트를 당신의 계정으로 전송하시겠습니까?", "message.transfer-team-website-to-user": "이 웹사이트를 당신의 계정으로 전송하시겠습니까?",
"message.transfer-user-website-to-team": "이 웹사이트를 전송받을 팀을 선택하십시오.", "message.transfer-user-website-to-team": "이 웹사이트를 전송받을 팀을 선택하세요.",
"message.transfer-website": "웹사이트 소유권을 계정이나 다른 팀으로 전송합니다.", "message.transfer-website": "웹사이트 소유권을 계정이나 다른 팀으로 전송합니다.",
"message.triggered-event": "트리거된 이벤트", "message.triggered-event": "트리거된 이벤트",
"message.user-deleted": "사용자가 삭제되었습니다.", "message.user-deleted": "사용자를 삭제했습니다.",
"message.viewed-page": "페이지 조회", "message.viewed-page": "조회한 페이지",
"message.visitor-log": "{country}의 {browser} 브라우저를 사용하는 {os} {device} 방문자", "message.visitor-log": "{os} {device}에서 {browser}을(를) 사용하는 {country}의 방문자",
"message.visitors-dropped-off": "방문자가 이탈했습니다" "message.visitors-dropped-off": "방문자 이탈함"
} }

View File

@ -14,17 +14,17 @@ const log = debug('umami:prisma');
const MYSQL_DATE_FORMATS = { const MYSQL_DATE_FORMATS = {
minute: '%Y-%m-%dT%H:%i:00', minute: '%Y-%m-%dT%H:%i:00',
hour: '%Y-%m-%d %H:00:00', hour: '%Y-%m-%d %H:00:00',
day: '%Y-%m-%d', day: '%Y-%m-%d 00:00:00',
month: '%Y-%m-01', month: '%Y-%m-01 00:00:00',
year: '%Y-01-01', year: '%Y-01-01 00:00:00',
}; };
const POSTGRESQL_DATE_FORMATS = { const POSTGRESQL_DATE_FORMATS = {
minute: 'YYYY-MM-DD HH24:MI:00', minute: 'YYYY-MM-DD HH24:MI:00',
hour: 'YYYY-MM-DD HH24:00:00', hour: 'YYYY-MM-DD HH24:00:00',
day: 'YYYY-MM-DD', day: 'YYYY-MM-DD HH24:00:00',
month: 'YYYY-MM-01', month: 'YYYY-MM-01 HH24:00:00',
year: 'YYYY-01-01', year: 'YYYY-01-01 HH24:00:00',
}; };
function getAddIntervalQuery(field: string, interval: string): string { function getAddIntervalQuery(field: string, interval: string): string {