diff --git a/components/common/HamburgerButton.js b/components/common/HamburgerButton.js index 4277c48d..97050a2a 100644 --- a/components/common/HamburgerButton.js +++ b/components/common/HamburgerButton.js @@ -1,30 +1,31 @@ import { Button, Icon } from 'react-basics'; import { useState } from 'react'; -import { FormattedMessage } from 'react-intl'; import MobileMenu from './MobileMenu'; import Icons from 'components/icons'; +import useMessages from 'hooks/useMessages'; import styles from './HamburgerButton.module.css'; -const menuItems = [ - { - label: , - value: '/dashboard', - }, - { label: , value: '/realtime' }, - { - label: , - value: '/input', - }, - { - label: , - value: '/input/profile', - }, - { label: , value: '/logout' }, -]; - export default function HamburgerButton() { + const { formatMessage, labels } = useMessages(); const [active, setActive] = useState(false); + const menuItems = [ + { + label: formatMessage(labels.dashboard), + value: '/dashboard', + }, + { label: formatMessage(labels.realtime), value: '/realtime' }, + { + label: formatMessage(labels.settings), + value: '/settings', + }, + { + label: formatMessage(labels.profile), + value: '/settings/profile', + }, + { label: formatMessage(labels.logout), value: '/logout' }, + ]; + function handleClick() { setActive(state => !state); } diff --git a/components/common/NoData.js b/components/common/NoData.js index 4a23675d..686ab4f2 100644 --- a/components/common/NoData.js +++ b/components/common/NoData.js @@ -1,12 +1,12 @@ import classNames from 'classnames'; -import { FormattedMessage } from 'react-intl'; import styles from './NoData.module.css'; +import useMessages from 'hooks/useMessages'; function NoData({ className }) { + const { formatMessage, messages } = useMessages(); + return ( -
- -
+
{formatMessage(messages.noData)}
); } diff --git a/components/metrics/BrowsersTable.js b/components/metrics/BrowsersTable.js index 013491d8..c205ca99 100644 --- a/components/metrics/BrowsersTable.js +++ b/components/metrics/BrowsersTable.js @@ -1,9 +1,11 @@ -import { FormattedMessage } from 'react-intl'; import FilterLink from 'components/common/FilterLink'; import MetricsTable from 'components/metrics/MetricsTable'; import { BROWSERS } from 'lib/constants'; +import useMessages from 'hooks/useMessages'; export default function BrowsersTable({ websiteId, ...props }) { + const { formatMessage, labels } = useMessages(); + function renderLink({ x: browser }) { return ; } @@ -11,9 +13,9 @@ export default function BrowsersTable({ websiteId, ...props }) { return ( } + title={formatMessage(labels.browsers)} type="browser" - metric={} + metric={formatMessage(labels.visitors)} websiteId={websiteId} renderLabel={renderLink} /> diff --git a/components/metrics/DataTable.js b/components/metrics/DataTable.js index da77868e..4a132780 100644 --- a/components/metrics/DataTable.js +++ b/components/metrics/DataTable.js @@ -7,6 +7,7 @@ import { FormattedMessage } from 'react-intl'; import NoData from 'components/common/NoData'; import { formatNumber, formatLongNumber } from 'lib/format'; import styles from './DataTable.module.css'; +import useMessages from '../../hooks/useMessages'; export default function DataTable({ data = [], @@ -14,11 +15,11 @@ export default function DataTable({ metric, className, renderLabel, - height, animate = true, virtualize = false, showPercentage = true, }) { + const { formatMessage, labels } = useMessages(); const [ref, bounds] = useMeasure(); const [format, setFormat] = useState(true); const formatFunc = format ? formatLongNumber : formatNumber; @@ -31,11 +32,7 @@ export default function DataTable({ return ( - } + label={renderLabel ? renderLabel(row) : label ?? formatMessage(labels.unknown)} value={value} percent={percent} animate={animate && !virtualize} diff --git a/components/metrics/ScreenTable.js b/components/metrics/ScreenTable.js index bc3e39de..35fe42d2 100644 --- a/components/metrics/ScreenTable.js +++ b/components/metrics/ScreenTable.js @@ -1,13 +1,15 @@ import MetricsTable from './MetricsTable'; -import { FormattedMessage } from 'react-intl'; +import useMessages from 'hooks/useMessages'; export default function ScreenTable({ websiteId, ...props }) { + const { formatMessage, labels } = useMessages(); + return ( } + title={formatMessage(labels.screens)} type="screen" - metric={} + metric={formatMessage(labels.visitors)} websiteId={websiteId} /> ); diff --git a/package.json b/package.json index ba76f180..b63935a2 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "update-db": "prisma migrate deploy", "check-db": "node scripts/check-db.js", "copy-db-files": "node scripts/copy-db-files.js", - "generate-lang": "npm-run-all extract-lang merge-lang", - "extract-lang": "formatjs extract \"{pages,components}/**/*.js\" --out-file build/messages.json", - "merge-lang": "node scripts/merge-lang.js", + "extract-messages": "formatjs extract \"{pages,components}/**/*.js\" --out-file build/messages.json", + "merge-messages": "node scripts/merge-messages.js", + "generate-lang": "npm-run-all extract-messages merge-messages", "format-lang": "node scripts/format-lang.js", "compile-lang": "formatjs compile-folder --ast build public/intl/messages", "check-lang": "node scripts/check-lang.js", diff --git a/scripts/merge-lang.js b/scripts/merge-messages.js similarity index 100% rename from scripts/merge-lang.js rename to scripts/merge-messages.js