Skip to content

Commit

Permalink
Merge pull request umami-software#268 from mikecao/dev
Browse files Browse the repository at this point in the history
v0.75.0 New languages
  • Loading branch information
mikecao authored Oct 3, 2020
2 parents c906f01 + 7b5330c commit 82b41f9
Show file tree
Hide file tree
Showing 18 changed files with 329 additions and 23 deletions.
2 changes: 2 additions & 0 deletions components/common/Loading.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

.loading {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 50%;
left: 50%;
Expand Down
2 changes: 1 addition & 1 deletion components/common/Menu.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
border: 1px solid var(--gray500);
border-radius: 4px;
overflow: hidden;
z-index: 2;
z-index: 100;
}

.option {
Expand Down
2 changes: 1 addition & 1 deletion components/common/MenuButton.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export default function MenuButton({
</Button>
{showMenu && (
<Menu
className={classNames(styles.menu, menuClassname)}
className={menuClassname}
options={options}
selectedOption={selectedOption}
onSelect={handleSelect}
Expand Down
4 changes: 0 additions & 4 deletions components/common/MenuButton.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
border-radius: 4px;
}

.menu {
z-index: 100;
}

.text {
font-size: var(--font-size-small);
}
Expand Down
9 changes: 5 additions & 4 deletions components/layout/Footer.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import React from 'react';
import classNames from 'classnames';
import { FormattedMessage } from 'react-intl';
import Link from 'components/common/Link';
import styles from './Footer.module.css';
Expand All @@ -8,9 +9,9 @@ export default function Footer() {
const { current } = useVersion();
return (
<footer className="container">
<div className={styles.footer}>
<div />
<div>
<div className={classNames(styles.footer, 'row')}>
<div className="col-12 col-md-4" />
<div className="col-12 col-md-4">
<FormattedMessage
id="message.powered-by"
defaultMessage="Powered by {name}"
Expand All @@ -23,7 +24,7 @@ export default function Footer() {
}}
/>
</div>
<div>{`v${current}`}</div>
<div className={classNames(styles.version, 'col-12 col-md-4')}>{`v${current}`}</div>
</div>
</footer>
);
Expand Down
11 changes: 11 additions & 0 deletions components/layout/Footer.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,15 @@
align-items: center;
font-size: var(--font-size-small);
min-height: 100px;
text-align: center;
}

.version {
text-align: right;
}

@media only screen and (max-width: 768px) {
.version {
text-align: center;
}
}
1 change: 1 addition & 0 deletions components/metrics/MetricsBar.module.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.bar {
display: flex;
cursor: pointer;
min-height: 80px;
}

.bar > div + div {
Expand Down
15 changes: 14 additions & 1 deletion components/settings/LanguageButton.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,18 @@

.menu div {
border-radius: 5px;
min-width: 33%;
min-width: calc(100% / 3);
}

@media only screen and (max-width: 992px) {
.menu {
min-width: 90vw;
transform: translateX(calc(40vw));
}
}

@media only screen and (max-width: 768px) {
.menu div {
min-width: 50%;
}
}
97 changes: 97 additions & 0 deletions lang/id-ID.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{
"button.add-account": "Tambah akun",
"button.add-website": "Tambah situs web",
"button.back": "Kembali",
"button.cancel": "Batal",
"button.change-password": "Ganti password",
"button.copy-to-clipboard": "Salin ke papan klip",
"button.date-range": "Rentang tanggal",
"button.delete": "Hapus",
"button.dismiss": "Tutup",
"button.edit": "Sunting",
"button.login": "Masuk",
"button.more": "Lebih banyak",
"button.refresh": "Segarkan",
"button.reset": "Atur ulang",
"button.save": "Simpan",
"button.single-day": "Sehari",
"button.view-details": "Lihat Detil",
"label.accounts": "Akun",
"label.administrator": "Pengelola",
"label.confirm-password": "Konfirmasi kata sandi",
"label.current-password": "Kata sandi sekarang",
"label.custom-range": "Rentang khusus",
"label.dashboard": "Dasbor",
"label.default-date-range": "Rentang tanggal default",
"label.domain": "Domain",
"label.enable-share-url": "Aktifkan URL berbagi",
"label.invalid": "Tidak valid",
"label.invalid-domain": "Domain tidak valid",
"label.last-days": "{x} hari terakhir",
"label.last-hours": "{x} jam terakhir",
"label.logged-in-as": "Masuk sebagai {username}",
"label.logout": "Keluar",
"label.name": "Nama",
"label.new-password": "Kata sandi baru",
"label.password": "Kata sandi",
"label.passwords-dont-match": "Kata sandi tidak cocok",
"label.profile": "Profil",
"label.required": "Wajib",
"label.settings": "Pengaturan",
"label.this-month": "Bulan ini",
"label.this-week": "Minggu ini",
"label.this-year": "Tahun ini",
"label.timezone": "Zona waktu",
"label.today": "Hari ini",
"label.unknown": "Tidak diketahui",
"label.username": "Nama pengguna",
"label.websites": "Situs web",
"message.active-users": "{x} pengunjung saat ini",
"message.confirm-delete": "Apakah kamu yakin ingin menghapus {target}?",
"message.copied": "Tersalin!",
"message.delete-warning": "Semua data terkait juga akan dihapus.",
"message.failure": "Ada yang salah.",
"message.get-share-url": "Dapatkan URL berbagi",
"message.get-tracking-code": "Dapatkan kode pelacakan",
"message.go-to-settings": "Pergi ke pengaturan",
"message.incorrect-username-password": "Nama pengguna/kata sandi salah.",
"message.new-version-available": "Versi terbaru umami {version} telah tersedia!",
"message.no-data-available": "Tidak ada data.",
"message.no-websites-configured": "Anda tidak memiliki situs web yang dikonfigurasi.",
"message.page-not-found": "Halaman tidak ditemukan.",
"message.powered-by": "Didukung oleh {name}",
"message.save-success": "Berhasil disimpan.",
"message.share-url": "Ini adalah URL yang dibagikan secara publik untuk {target}.",
"message.track-stats": "Untuk melacak statistik {target}, tempatkan kode berikut di bagian {head} situs web anda.",
"message.type-delete": "Ketikkan {delete} pada kotak di bawah untuk konfirmasi.",
"metrics.actions": "Aksi",
"metrics.average-visit-time": "Waktu kunjungan rata-rata",
"metrics.bounce-rate": "Tingkat bouncing",
"metrics.browsers": "Browser",
"metrics.countries": "Negara",
"metrics.device.desktop": "Desktop",
"metrics.device.laptop": "Laptop",
"metrics.device.mobile": "Ponsel",
"metrics.device.tablet": "Tablet",
"metrics.devices": "Perangkat",
"metrics.events": "Perihal",
"metrics.filter.combined": "Gabungan",
"metrics.filter.domain-only": "Hanya domain",
"metrics.filter.raw": "Raw",
"metrics.operating-systems": "Sistem Operasi",
"metrics.page-views": "Tampilan halaman",
"metrics.pages": "Halaman",
"metrics.referrers": "Perujuk",
"metrics.unique-visitors": "Pengunjung unik",
"metrics.views": "Tampilan",
"metrics.visitors": "Pengunjung",
"title.add-account": "Tambah akun",
"title.add-website": "Tambah situs web",
"title.change-password": "Ganti kata sandi",
"title.delete-account": "Hapus akun",
"title.delete-website": "Hapus situs web",
"title.edit-account": "Sunting akun",
"title.edit-website": "Sunting situs web",
"title.share-url": "Bagikan URL",
"title.tracking-code": "Kode lacak"
}
97 changes: 97 additions & 0 deletions lang/uk-UA.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{
"button.add-account": "Додати обліковий запис",
"button.add-website": "Додати веб-сайт",
"button.back": "Назад",
"button.cancel": "Відмінити",
"button.change-password": "Змінити пароль",
"button.copy-to-clipboard": "Копіювати до буферу обміну",
"button.date-range": "Діапазон дат",
"button.delete": "Видалити",
"button.dismiss": "Відхилити",
"button.edit": "Редагувати",
"button.login": "Увійти",
"button.more": "Більше",
"button.refresh": "Оновити",
"button.reset": "Скинути",
"button.save": "Зберегти",
"button.single-day": "Один день",
"button.view-details": "Переглянути деталі",
"label.accounts": "Облікові записи",
"label.administrator": "Адміністратор",
"label.confirm-password": "Підтвердити пароль",
"label.current-password": "Поточний пароль",
"label.custom-range": "Довільний період",
"label.dashboard": "Інформаційна панель",
"label.default-date-range": "Діапазон дат за умовчанням",
"label.domain": "Домен",
"label.enable-share-url": "Дозволити ділитися посиланням",
"label.invalid": "Некоректний",
"label.invalid-domain": "Некоректний домен",
"label.last-days": "Останні {x} днів",
"label.last-hours": "Останні {x} годин",
"label.logged-in-as": "Ви увійшли як {username}",
"label.logout": "Вийти",
"label.name": "Ім'я",
"label.new-password": "Новий пароль",
"label.password": "Пароль",
"label.passwords-dont-match": "Паролі не співпадають",
"label.profile": "Профіль",
"label.required": "Обов'язкове",
"label.settings": "Налаштування",
"label.this-month": "Поточний місяць",
"label.this-week": "Поточний тиждень",
"label.this-year": "Поточний рік",
"label.timezone": "Часовий пояс",
"label.today": "Сьогодні",
"label.unknown": "Невідомо",
"label.username": "Ім'я користувача",
"label.websites": "Веб-сайти",
"message.active-users": "{x} поточних відвідувачів",
"message.confirm-delete": "Ви впевнені, що бажаєте видалити {target}?",
"message.copied": "Скопійовано!",
"message.delete-warning": "Усі пов'язані дані будуть видалені також.",
"message.failure": "Щось пішло не так.",
"message.get-share-url": "Отримати публічне посилання",
"message.get-tracking-code": "Отримати код для відслідковування",
"message.go-to-settings": "Перейти до налаштувань",
"message.incorrect-username-password": "Невірне ім'я користувача або пароль.",
"message.new-version-available": "Нова версія umami {version} доступна!",
"message.no-data-available": "Немає даних.",
"message.no-websites-configured": "У вас немає налаштованих веб-сайтів.",
"message.page-not-found": "Сторінку не знайдено.",
"message.powered-by": "На базі {name}",
"message.save-success": "Збережено успішно.",
"message.share-url": "Це публічне посилання для {target}.",
"message.track-stats": "Або відслідковувати статистику для {target}, розмістіть наступний код у {head} секції вашого веб-сайту.",
"message.type-delete": "Введіть {delete} у полі нижче щоб підтвердити.",
"metrics.actions": "Дії",
"metrics.average-visit-time": "Середній час візиту",
"metrics.bounce-rate": "Показник відмов",
"metrics.browsers": "Браузери",
"metrics.countries": "Країни",
"metrics.device.desktop": "Настільний комп'ютер",
"metrics.device.laptop": "Ноутбук",
"metrics.device.mobile": "Мобільний",
"metrics.device.tablet": "Планшет",
"metrics.devices": "Пристрої",
"metrics.events": "Події",
"metrics.filter.combined": "Об'єднані",
"metrics.filter.domain-only": "Лише домен",
"metrics.filter.raw": "Сирі дані",
"metrics.operating-systems": "Операційна система",
"metrics.page-views": "Перегляди сторінок",
"metrics.pages": "Сторінки",
"metrics.referrers": "Джерела",
"metrics.unique-visitors": "Унікальні відвідувачі",
"metrics.views": "Перегляди",
"metrics.visitors": "Відвідувачі",
"title.add-account": "Додати обліковий запис",
"title.add-website": "Додати website",
"title.change-password": "Змінити пароль",
"title.delete-account": "Видалити обліковий запис",
"title.delete-website": "Видалити веб-сайт",
"title.edit-account": "Редагувати обліковий запис",
"title.edit-website": "Редагувати веб-сайт",
"title.share-url": "Поділитися посилання",
"title.tracking-code": "Код для відслідковування"
}
28 changes: 27 additions & 1 deletion lib/lang.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
import { format } from 'date-fns';
import { enUS, nl, zhCN, tr, ru, de, ja, es, fr, da, sv, el, pt, ro, nb } from 'date-fns/locale';
import {
enUS,
nl,
zhCN,
tr,
ru,
de,
ja,
es,
fr,
da,
sv,
el,
pt,
ro,
nb,
id,
uk,
} from 'date-fns/locale';
import enMessages from 'lang-compiled/en-US.json';
import nlMessages from 'lang-compiled/nl-NL.json';
import zhCNMessages from 'lang-compiled/zh-CN.json';
Expand All @@ -17,6 +35,8 @@ import foMessages from 'lang-compiled/fo-FO.json';
import ptMessages from 'lang-compiled/pt-PT.json';
import roMessages from 'lang-compiled/ro-RO.json';
import nbNOMessages from 'lang-compiled/nb-NO.json';
import idMessages from 'lang-compiled/id-ID.json';
import ukMessages from 'lang-compiled/uk-UA.json';

export const messages = {
'en-US': enMessages,
Expand All @@ -36,6 +56,8 @@ export const messages = {
'pt-PT': ptMessages,
'ro-RO': roMessages,
'nb-NO': nbNOMessages,
'id-ID': idMessages,
'uk-UA': ukMessages,
};

export const dateLocales = {
Expand All @@ -56,6 +78,8 @@ export const dateLocales = {
'pt-PT': pt,
'ro-RO': ro,
'nb-NO': nb,
'id-ID': id,
'uk-UA': uk,
};

export const menuOptions = [
Expand All @@ -67,6 +91,7 @@ export const menuOptions = [
{ label: 'Føroyskt', value: 'fo-FO', display: 'fo' },
{ label: 'Français', value: 'fr-FR', display: 'fr' },
{ label: 'Ελληνικά', value: 'el-GR', display: 'el' },
{ label: 'Bahasa Indonesia', value: 'id-ID', display: 'id' },
{ label: '日本語', value: 'ja-JP', display: 'ja' },
{ label: 'Монгол', value: 'mn-MN', display: 'mn' },
{ label: 'Nederlands', value: 'nl-NL', display: 'nl' },
Expand All @@ -76,6 +101,7 @@ export const menuOptions = [
{ label: 'Română', value: 'ro-RO', display: 'ro' },
{ label: 'Svenska', value: 'sv-SE', display: 'sv' },
{ label: 'Türkçe', value: 'tr-TR', display: 'tr' },
{ label: 'українська', value: 'uk-UA', display: 'uk' },
];

export function dateFormat(date, str, locale) {
Expand Down
12 changes: 10 additions & 2 deletions lib/session.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { getWebsiteByUuid, getSessionByUuid, createSession } from 'lib/queries';
import { getClientInfo } from 'lib/request';
import { uuid, isValidUuid } from 'lib/crypto';
import { uuid, isValidUuid, parseToken } from 'lib/crypto';

export async function getSession(req) {
const { payload } = req.body;
Expand All @@ -9,7 +9,15 @@ export async function getSession(req) {
throw new Error('Invalid request');
}

const { website: website_uuid, hostname, screen, language } = payload;
const { website: website_uuid, hostname, screen, language, cache } = payload;

if (cache) {
const result = await parseToken(cache);

if (result) {
return result;
}
}

if (!isValidUuid(website_uuid)) {
throw new Error(`Invalid website: ${website_uuid}`);
Expand Down
Loading

0 comments on commit 82b41f9

Please sign in to comment.