dorfteich/packages/shared/src/i18n-tools.test.ts
Claude Fable 5 e855192d23 Add i18n with i18next, German and English, and a key-parity check
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>
2026-07-04 19:23:45 +02:00

21 lines
610 B
TypeScript

import { describe, expect, it } from 'vitest';
import { missingTranslationKeys, translationKeys } from './i18n-tools';
describe('i18n tooling', () => {
it('flattens nested keys', () => {
expect(translationKeys({ a: { b: 'x', c: { d: 'y' } }, e: 'z' })).toEqual([
'a.b',
'a.c.d',
'e',
]);
});
it('finds keys missing in one language', () => {
const en = { home: { title: 'Hi', body: 'Text' } };
const de = { home: { title: 'Hallo' } };
expect(missingTranslationKeys(en, de)).toEqual(['home.body']);
expect(missingTranslationKeys(de, en)).toEqual([]);
});
});