Translation resources live in packages/shared/i18n/<lang>/<ns>.json (common, errors) and ship with de and en. The web app initializes react-i18next with bundled resources (?lng= wins, then the browser language); all shell components use useTranslation and the temporary t() stub is gone. The api localizes its uniform error bodies via a minimal i18next instance negotiated from Accept-Language. `pnpm i18n:check` fails CI when any key is missing in any language, backed by tested helpers in @dorfteich/shared. Closes #5 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
14 lines
327 B
TypeScript
14 lines
327 B
TypeScript
import { useTranslation } from 'react-i18next';
|
|
import { Link } from 'react-router-dom';
|
|
|
|
export function NotFoundPage(): React.JSX.Element {
|
|
const { t } = useTranslation();
|
|
return (
|
|
<>
|
|
<h1>{t('notFound.title')}</h1>
|
|
<p>{t('notFound.body')}</p>
|
|
<Link to="/">{t('notFound.home')}</Link>
|
|
</>
|
|
);
|
|
}
|