Files
beh-rde-brief/src/utils/__tests__/sprachen.test.ts
T
JUSNandClaude Opus 5 464e9b109f App: Sprachen von 9 auf 27 erweitert + RTL-Darstellung repariert
Neue Zielsprachen fuer die groessten Sprachgemeinschaften in Deutschland,
u. a. Kurdisch (Kurmanci), Bulgarisch, Kroatisch/Serbisch/Bosnisch,
Albanisch, Italienisch, Griechisch, Spanisch, Vietnamesisch, Hindi, Urdu,
Paschtu, Tigrinya, Somali, Chinesisch. Liste nach Groesse der Gemeinschaft
in Deutschland sortiert.

Ausserdem: Sprache bekommt ein rtl-Flag. Arabisch und Farsi wurden bisher
linksbuendig dargestellt, was bei diesen Schriften falsch ist — jetzt
laufen Kernaussage, Erklaerung, To-dos und Fachbegriff-Erklaerungen bei
ar/fa/ur/ps von rechts nach links (der deutsche Fachbegriff bleibt links).

Neuer Test sprachen.test.ts schuetzt vor doppelten Codes (die wuerden den
Uebersetzungs-Cache ueberschreiben). 35 Tests gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 15:13:59 +02:00

38 lines
1.3 KiB
TypeScript

/**
* Schützt die Sprachliste vor stillen Fehlern. Besonders wichtig: doppelte
* Codes — Übersetzungen werden pro Code gecacht (brief.uebersetzungen[code]),
* zwei gleiche Codes würden sich gegenseitig überschreiben.
*/
import { SPRACHEN } from '../../types';
describe('SPRACHEN', () => {
it('hat keine doppelten Sprachcodes', () => {
const codes = SPRACHEN.map((s) => s.code);
expect(new Set(codes).size).toBe(codes.length);
});
it('enthält kein Deutsch (das ist die Ausgangssprache, nicht Zielsprache)', () => {
expect(SPRACHEN.some((s) => s.code === 'de')).toBe(false);
});
it('hat für jede Sprache Code, Name und Eigenname', () => {
for (const s of SPRACHEN) {
expect(s.code).toMatch(/^[a-z]{2,3}$/);
expect(s.name.trim().length).toBeGreaterThan(0);
expect(s.eigenname.trim().length).toBeGreaterThan(0);
}
});
it('markiert genau die Rechts-nach-links-Sprachen', () => {
const rtl = SPRACHEN.filter((s) => s.rtl).map((s) => s.code).sort();
expect(rtl).toEqual(['ar', 'fa', 'ps', 'ur']);
});
it('bietet die für Deutschland wichtigsten Sprachen an', () => {
const codes = SPRACHEN.map((s) => s.code);
for (const pflicht of ['tr', 'ar', 'ru', 'uk', 'pl', 'ro', 'en', 'fa']) {
expect(codes).toContain(pflicht);
}
});
});