generated from knso/webklar-preview-template
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>
38 lines
1.3 KiB
TypeScript
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);
|
|
}
|
|
});
|
|
});
|