From 7164977f9f4b4865092a27fd627e42c3c817e888 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 7 Sep 2020 21:32:45 -0700 Subject: [PATCH 1/8] Chart labels should update when changing locale. --- components/metrics/BarChart.js | 2 +- components/metrics/PageviewsChart.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/components/metrics/BarChart.js b/components/metrics/BarChart.js index 9cc5b929..a3a3876f 100644 --- a/components/metrics/BarChart.js +++ b/components/metrics/BarChart.js @@ -151,7 +151,7 @@ export default function BarChart({ updateChart(); } } - }, [datasets, unit, animationDuration]); + }, [datasets, unit, animationDuration, locale]); return ( <> diff --git a/components/metrics/PageviewsChart.js b/components/metrics/PageviewsChart.js index 2f38f5bf..9c112798 100644 --- a/components/metrics/PageviewsChart.js +++ b/components/metrics/PageviewsChart.js @@ -12,7 +12,15 @@ export default function PageviewsChart({ websiteId, data, unit, records, classNa } = chart; datasets[0].data = data.uniques; + datasets[0].label = intl.formatMessage({ + id: 'metrics.unique-visitors', + defaultMessage: 'Unique visitors', + }); datasets[1].data = data.pageviews; + datasets[1].label = intl.formatMessage({ + id: 'metrics.page-views', + defaultMessage: 'Page views', + }); chart.update(); }; From d8d15a6d7c66f30bb3d87593f56383d6f53fce51 Mon Sep 17 00:00:00 2001 From: MoltenCoffee <13321277+MoltenCoffee@users.noreply.github.com> Date: Tue, 8 Sep 2020 09:42:43 +0200 Subject: [PATCH 2/8] Added Dutch language --- lang/nl.json | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++ lib/lang.js | 6 +- 2 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 lang/nl.json diff --git a/lang/nl.json b/lang/nl.json new file mode 100644 index 00000000..a10b86b7 --- /dev/null +++ b/lang/nl.json @@ -0,0 +1,236 @@ +{ + "active-users.message": { + "defaultMessage": "{x} actieve {x, plural, one {bezoeker} other {bezoekers}}" + }, + "button.add-account": { + "defaultMessage": "Account toevoegen" + }, + "button.add-website": { + "defaultMessage": "Website toevoegen" + }, + "button.back": { + "defaultMessage": "Terug" + }, + "button.cancel": { + "defaultMessage": "Annuleren" + }, + "button.change-password": { + "defaultMessage": "Wachtwoord wijzigen" + }, + "button.copy-to-clipboard": { + "defaultMessage": "Kopiëer naar klembord" + }, + "button.delete": { + "defaultMessage": "Verwijderen" + }, + "button.edit": { + "defaultMessage": "Bewerken" + }, + "button.login": { + "defaultMessage": "Inloggen" + }, + "button.more": { + "defaultMessage": "Toon meer" + }, + "button.save": { + "defaultMessage": "Opslaan" + }, + "button.view-details": { + "defaultMessage": "Meer details" + }, + "footer.powered-by": { + "defaultMessage": "gesteund door" + }, + "header.nav.dashboard": { + "defaultMessage": "Dashboard" + }, + "header.nav.settings": { + "defaultMessage": "Instellingen" + }, + "label.adminsitrator": { + "defaultMessage": "Administrator" + }, + "label.confirm-password": { + "defaultMessage": "Wachtwoord bevestigen" + }, + "label.current-password": { + "defaultMessage": "Huidig wachtwoord" + }, + "label.domain": { + "defaultMessage": "Domein" + }, + "label.enable-share-url": { + "defaultMessage": "Delen via URL aanzetten" + }, + "label.invalid": { + "defaultMessage": "Ongeldig" + }, + "label.invalid-domain": { + "defaultMessage": "Ongeldig domein" + }, + "label.last-days": { + "defaultMessage": "Laatste {x} dagen" + }, + "label.last-hours": { + "defaultMessage": "Laatste {x} uur" + }, + "label.logged-in-as": { + "defaultMessage": "Ingelogd als {username}" + }, + "label.logout": { + "defaultMessage": "Uitloggen" + }, + "label.name": { + "defaultMessage": "Naam" + }, + "label.new-password": { + "defaultMessage": "Nieuw wachtwoord" + }, + "label.password": { + "defaultMessage": "Wachtwoord" + }, + "label.passwords-dont-match": { + "defaultMessage": "Wachtwoorden komen niet overeen" + }, + "label.required": { + "defaultMessage": "Verplicht" + }, + "label.this-month": { + "defaultMessage": "Deze maand" + }, + "label.this-week": { + "defaultMessage": "Deze week" + }, + "label.this-year": { + "defaultMessage": "Dit jaar" + }, + "label.today": { + "defaultMessage": "Vandaag" + }, + "label.username": { + "defaultMessage": "Gebruikersnaam" + }, + "message.confirm-delete": { + "defaultMessage": "Weet je zeker dat je {target} wilt verwijderen?" + }, + "message.copied": { + "defaultMessage": "Gekopiëerd!" + }, + "message.delete-warning": { + "defaultMessage": "Alle verwante gegezens zullen ook verwijderd worden." + }, + "message.failure": { + "defaultMessage": "Er is iets misgegaan." + }, + "message.incorrect-username-password": { + "defaultMessage": "Incorrecte gebruikersnaam/wachtwoord." + }, + "message.save-success": { + "defaultMessage": "Opslaan succesvol." + }, + "message.share-url": { + "defaultMessage": "Met deze URL kan {target} openbaar gedeeld worden." + }, + "message.track-stats": { + "defaultMessage": "Om statistieken voor {target} bij te houden, plaats je de volgende code in het {head} gedeelte van je website." + }, + "message.type-delete": { + "defaultMessage": "Type {delete} in onderstaande veld om dit te bevestigen." + }, + "metrics.actions": { + "defaultMessage": "Acties" + }, + "metrics.average-visit-time": { + "defaultMessage": "Gemiddelde bezoektijd" + }, + "metrics.bounce-rate": { + "defaultMessage": "Bouncepercentage" + }, + "metrics.browsers": { + "defaultMessage": "Browsers" + }, + "metrics.countries": { + "defaultMessage": "Landen" + }, + "metrics.devices": { + "defaultMessage": "Apparaten" + }, + "metrics.events": { + "defaultMessage": "Gebeurtenissen" + }, + "metrics.filter.combined": { + "defaultMessage": "Gecombineerd" + }, + "metrics.filter.domain-only": { + "defaultMessage": "Alleen domein" + }, + "metrics.filter.raw": { + "defaultMessage": "Ruw" + }, + "metrics.operating-system": { + "defaultMessage": "Besturingssystem" + }, + "metrics.page-views": { + "defaultMessage": "Paginaweergaven" + }, + "metrics.pages": { + "defaultMessage": "Pagina's" + }, + "metrics.referrers": { + "defaultMessage": "Verwijzers" + }, + "metrics.unique-visitors": { + "defaultMessage": "Unieke bezoekers" + }, + "metrics.views": { + "defaultMessage": "Weergaven" + }, + "metrics.visitors": { + "defaultMessage": "Bezoekers" + }, + "placeholder.message.go-to-settings": { + "defaultMessage": "Naar instellingen" + }, + "placeholder.message.no-websites-configured": { + "defaultMessage": "Je hebt geen websites ingesteld." + }, + "settings.accounts": { + "defaultMessage": "Accounts" + }, + "settings.profile": { + "defaultMessage": "Profiel" + }, + "settings.websites": { + "defaultMessage": "Websites" + }, + "title.add-account": { + "defaultMessage": "Account toevoegen" + }, + "title.add-website": { + "defaultMessage": "Website toevoegen" + }, + "title.delete-account": { + "defaultMessage": "Account verwijderen" + }, + "title.delete-website": { + "defaultMessage": "Website verwijderen" + }, + "title.edit-account": { + "defaultMessage": "Account bewerken" + }, + "title.edit-website": { + "defaultMessage": "Website bewerken" + }, + "title.share-url": { + "defaultMessage": "URL delen" + }, + "title.tracking-code": { + "defaultMessage": "Tracking code" + }, + "tooltip.get-share-url": { + "defaultMessage": "Maak openbare URL" + }, + "tooltip.get-tracking-code": { + "defaultMessage": "Maak tracking code" + } +} diff --git a/lib/lang.js b/lib/lang.js index da4f98c9..0b4f3883 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -1,20 +1,24 @@ import enMessages from 'lang-compiled/en.json'; +import nlMessages from 'lang-compiled/nl.json'; import zhCNMessages from 'lang-compiled/zh-CN.json'; import { format } from 'date-fns'; -import { enUS, zhCN } from 'date-fns/locale'; +import { enUS, nl, zhCN } from 'date-fns/locale'; export const messages = { en: enMessages, + nl: nlMessages, 'zh-CN': zhCNMessages, }; export const dateLocales = { en: enUS, + nl: nl, 'zh-CN': zhCN, }; export const menuOptions = [ { label: 'English', value: 'en', display: 'EN' }, + { label: 'Nederlands', value: 'nl', display: 'NL' }, { label: '中文 (Chinese Simplified)', value: 'zh-CN', display: '中文' }, ]; From 1ba9538bc77dab8178430852dcfaa5ad43d02cc9 Mon Sep 17 00:00:00 2001 From: MoltenCoffee <13321277+MoltenCoffee@users.noreply.github.com> Date: Tue, 8 Sep 2020 10:22:26 +0200 Subject: [PATCH 3/8] Slight changes to dutch --- lang/nl.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lang/nl.json b/lang/nl.json index a10b86b7..7db64fca 100644 --- a/lang/nl.json +++ b/lang/nl.json @@ -60,7 +60,7 @@ "defaultMessage": "Domein" }, "label.enable-share-url": { - "defaultMessage": "Delen via URL aanzetten" + "defaultMessage": "Sta delen via openbare URL toe" }, "label.invalid": { "defaultMessage": "Ongeldig" @@ -228,9 +228,9 @@ "defaultMessage": "Tracking code" }, "tooltip.get-share-url": { - "defaultMessage": "Maak openbare URL" + "defaultMessage": "Openbare URL" }, "tooltip.get-tracking-code": { - "defaultMessage": "Maak tracking code" + "defaultMessage": "Tracking code" } } From da1ec3f429a3d48e80aa3da9b24cc76abb3c23d9 Mon Sep 17 00:00:00 2001 From: MoltenCoffee <13321277+MoltenCoffee@users.noreply.github.com> Date: Tue, 8 Sep 2020 10:35:24 +0200 Subject: [PATCH 4/8] Added correct(??) BCP47 codes --- lib/lang.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/lang.js b/lib/lang.js index 0b4f3883..aafc08ec 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -6,19 +6,19 @@ import { enUS, nl, zhCN } from 'date-fns/locale'; export const messages = { en: enMessages, - nl: nlMessages, + 'nl-NL': nlMessages, 'zh-CN': zhCNMessages, }; export const dateLocales = { en: enUS, - nl: nl, + 'nl-NL': nl, 'zh-CN': zhCN, }; export const menuOptions = [ { label: 'English', value: 'en', display: 'EN' }, - { label: 'Nederlands', value: 'nl', display: 'NL' }, + { label: 'Nederlands', value: 'nl-NL', display: 'NL' }, { label: '中文 (Chinese Simplified)', value: 'zh-CN', display: '中文' }, ]; From dd2a2ea8a1e27026ca3a4e44ede2d4f9c725388d Mon Sep 17 00:00:00 2001 From: MoltenCoffee <13321277+MoltenCoffee@users.noreply.github.com> Date: Tue, 8 Sep 2020 10:48:05 +0200 Subject: [PATCH 5/8] Minor string update --- lang/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/nl.json b/lang/nl.json index 7db64fca..3348e7ea 100644 --- a/lang/nl.json +++ b/lang/nl.json @@ -39,7 +39,7 @@ "defaultMessage": "Meer details" }, "footer.powered-by": { - "defaultMessage": "gesteund door" + "defaultMessage": "mogelijk gemaakt door" }, "header.nav.dashboard": { "defaultMessage": "Dashboard" From a31a104577d8ac712edaaf63cdef22497cefb2e9 Mon Sep 17 00:00:00 2001 From: MoltenCoffee <13321277+MoltenCoffee@users.noreply.github.com> Date: Tue, 8 Sep 2020 10:59:56 +0200 Subject: [PATCH 6/8] Used full country code instead of just nl --- lang/{nl.json => nl-NL.json} | 0 lib/lang.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename lang/{nl.json => nl-NL.json} (100%) diff --git a/lang/nl.json b/lang/nl-NL.json similarity index 100% rename from lang/nl.json rename to lang/nl-NL.json diff --git a/lib/lang.js b/lib/lang.js index aafc08ec..63ea9745 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -1,5 +1,5 @@ import enMessages from 'lang-compiled/en.json'; -import nlMessages from 'lang-compiled/nl.json'; +import nlMessages from 'lang-compiled/nl-NL.json'; import zhCNMessages from 'lang-compiled/zh-CN.json'; import { format } from 'date-fns'; import { enUS, nl, zhCN } from 'date-fns/locale'; From 255e9d2e41e3fd56c2343d35d96387a82de6bd07 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 8 Sep 2020 03:18:46 -0700 Subject: [PATCH 7/8] Fixed typo. Added new localization string. --- components/common/Table.js | 6 ++++++ components/common/Table.module.css | 3 +-- components/metrics/MetricsTable.js | 8 ++++++++ components/metrics/MetricsTable.module.css | 3 +-- lang/en.json | 5 ++++- lang/nl-NL.json | 2 +- lang/zh-CN.json | 2 +- 7 files changed, 22 insertions(+), 7 deletions(-) diff --git a/components/common/Table.js b/components/common/Table.js index c169250d..d2c87977 100644 --- a/components/common/Table.js +++ b/components/common/Table.js @@ -1,6 +1,7 @@ import React from 'react'; import classNames from 'classnames'; import styles from './Table.module.css'; +import { FormattedMessage } from 'react-intl'; export default function Table({ columns, rows, empty }) { if (empty && rows.length === 0) { @@ -21,6 +22,11 @@ export default function Table({ columns, rows, empty }) { ))}
+ {rows.length === 0 && ( +
+ +
+ )} {rows.map((row, rowIndex) => (
{columns.map(({ key, render, className, style, cell }) => ( diff --git a/components/common/Table.module.css b/components/common/Table.module.css index 6a069c2e..ada9e195 100644 --- a/components/common/Table.module.css +++ b/components/common/Table.module.css @@ -19,8 +19,7 @@ flex-direction: column; } -.body:empty:before { - content: 'No data available'; +.empty { color: var(--gray500); position: absolute; top: 50%; diff --git a/components/metrics/MetricsTable.js b/components/metrics/MetricsTable.js index 67188e9f..81374f86 100644 --- a/components/metrics/MetricsTable.js +++ b/components/metrics/MetricsTable.js @@ -87,6 +87,14 @@ export default function MetricsTable({
+ {data?.length === 0 && ( +
+ +
+ )} {limit ? rankings.map(row => getRow(row)) : data?.length > 0 && ( diff --git a/components/metrics/MetricsTable.module.css b/components/metrics/MetricsTable.module.css index 7e79c078..697c820a 100644 --- a/components/metrics/MetricsTable.module.css +++ b/components/metrics/MetricsTable.module.css @@ -95,8 +95,7 @@ overflow: hidden; } -.body:empty:before { - content: 'No data available'; +.empty { color: var(--gray500); position: absolute; top: 50%; diff --git a/lang/en.json b/lang/en.json index fd3a42fa..3084be8a 100644 --- a/lang/en.json +++ b/lang/en.json @@ -47,7 +47,7 @@ "header.nav.settings": { "defaultMessage": "Settings" }, - "label.adminsitrator": { + "label.administrator": { "defaultMessage": "Administrator" }, "label.confirm-password": { @@ -125,6 +125,9 @@ "message.incorrect-username-password": { "defaultMessage": "Incorrect username/password." }, + "message.no-data-available": { + "defaultMessage": "No data available." + }, "message.save-success": { "defaultMessage": "Saved successfully." }, diff --git a/lang/nl-NL.json b/lang/nl-NL.json index 3348e7ea..e1b0e948 100644 --- a/lang/nl-NL.json +++ b/lang/nl-NL.json @@ -47,7 +47,7 @@ "header.nav.settings": { "defaultMessage": "Instellingen" }, - "label.adminsitrator": { + "label.administrator": { "defaultMessage": "Administrator" }, "label.confirm-password": { diff --git a/lang/zh-CN.json b/lang/zh-CN.json index 97726fe3..c5c4a271 100644 --- a/lang/zh-CN.json +++ b/lang/zh-CN.json @@ -47,7 +47,7 @@ "header.nav.settings": { "defaultMessage": "设置" }, - "label.adminsitrator": { + "label.administrator": { "defaultMessage": "管理员" }, "label.confirm-password": { From 32581120d5cd7778d53a6cfd2aba9884c4982dd5 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 8 Sep 2020 03:34:29 -0700 Subject: [PATCH 8/8] Bump version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf0988be..59507fcf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "umami", - "version": "0.24.0", + "version": "0.25.0", "description": "A simple, fast, website analytics alternative to Google Analytics. ", "author": "Mike Cao ", "license": "MIT",