Files
Multi-Hoster-Upload/tests/i18n.test.js
T
Sucukdeluxe 7c97915d64 fix: complete localized accessible UI audit
Localize dynamic renderer and shell text in English and German, replace native prompts with safe styled dialogs, align empty and dirty states, restore compact responsive information, and add keyboard support for queue, account, menu, and sorting interactions. Version the verified patch as 2.1.6.
2026-08-11 09:36:41 +02:00

64 lines
3.4 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const { normalizeLanguage, translateText } = require('../renderer/i18n');
test('English is the fallback language and German remains selectable', () => {
assert.equal(normalizeLanguage(), 'en');
assert.equal(normalizeLanguage('fr'), 'en');
assert.equal(normalizeLanguage('en'), 'en');
assert.equal(normalizeLanguage('de'), 'de');
});
test('translations cover static labels and interpolated status text in both languages', () => {
assert.equal(translateText('Einstellungen', 'en'), 'Settings');
assert.equal(translateText('Update v2.1.0 verfügbar', 'en'), 'Update v2.1.0 available');
assert.equal(translateText('Settings', 'de'), 'Einstellungen');
assert.equal(translateText('Update v2.1.0 available', 'de'), 'Update v2.1.0 verfügbar');
});
test('sidebar hierarchy uses distinct English and German kicker labels', () => {
assert.equal(translateText('Arbeitsbereich', 'en'), 'Workspace');
assert.equal(translateText('Accounts verwalten', 'en'), 'Manage accounts');
assert.equal(translateText('Archiv', 'en'), 'Archive');
assert.equal(translateText('Workspace', 'de'), 'Arbeitsbereich');
assert.equal(translateText('Manage accounts', 'de'), 'Accounts verwalten');
assert.equal(translateText('Archive', 'de'), 'Archiv');
});
test('runtime queue, account, toast, and shutdown copy translates completely', () => {
const cases = [
['Wartet', 'Waiting'],
['Abgebrochen', 'Canceled'],
['Fehlgeschlagen: Verbindung verloren', 'Failed: Connection lost'],
['Retry 2/3 · Primär nicht verfügbar', 'Retry 2/3 · Primary unavailable'],
['Link kopiert', 'Link copied'],
['Kopiert!', 'Copied!'],
['Sende…', 'Sending…'],
['Lade…', 'Loading…'],
['Upload-Statistiken', 'Upload statistics'],
['Ruhezustand in 30s...', 'Sleep in 30s...'],
['Herunterfahren in 30s...', 'Shut down in 30s...']
];
for (const [german, english] of cases) {
assert.equal(translateText(german, 'en'), english);
assert.equal(translateText(english, 'de'), german);
}
});
test('English copy uses complete actions and correct singular plurals', () => {
assert.equal(translateText('Fehlgeschlagene erneut', 'en'), 'Retry failed uploads');
assert.equal(translateText('Suche Aktualisierungen', 'en'), 'Check for updates');
assert.equal(translateText('1 Job zum erneuten Upload zurückgesetzt', 'en'), '1 job reset for upload');
assert.equal(translateText('2 Jobs zum erneuten Upload zurückgesetzt', 'en'), '2 jobs reset for upload');
assert.equal(translateText('1 Verlaufseintrag wird dauerhaft entfernt.', 'en'), '1 history entry will be permanently removed.');
assert.equal(translateText('2 Verlaufseinträge werden dauerhaft entfernt.', 'en'), '2 history entries will be permanently removed.');
assert.equal(translateText('Wiederholungen', 'en'), 'Retries');
assert.equal(translateText('Maximale Geschwindigkeit (MB/s)', 'en'), 'Maximum speed (MB/s)');
assert.equal(translateText('Neustart unter (kB/s)', 'en'), 'Restart below (kB/s)');
assert.equal(translateText('Maximale Größe (MB)', 'en'), 'Maximum size (MB)');
assert.equal(translateText('Aktiv auf Port 9100 — 1 Client verbunden', 'en'), 'Active on port 9100 — 1 client connected');
assert.equal(translateText('Aktiv auf Port 9100 — 2 Clients verbunden', 'en'), 'Active on port 9100 — 2 clients connected');
});