, Sprachwahl über Cookie und Adresse, und dass die Verwaltung vollständig übersetzt ist. */ putenv('PLUGIN_SITE_CONFIG=' . sys_get_temp_dir() . '/gibtesnicht.php'); putenv('PLUGIN_SITE_STORAGE=' . sys_get_temp_dir() . '/deskhub-site-i18n-' . bin2hex(random_bytes(3))); require_once __DIR__ . '/fixtures/paths.php'; $siteDir = website_dir_or_skip('plugin_website_i18n'); require_once $siteDir . '/inc/i18n.php'; $failures = []; $check = function (bool $ok, string $what) use (&$failures): void { if (!$ok) $failures[] = $what; }; $tr = fn(string $html) => site_translate_html($html, 'en'); // Einfache Texte, Leerraum bleibt erhalten $check($tr("

\n Pakete\n

") === "

\n Packages\n

", 'Text wird übersetzt, Leerraum bleibt'); $check($tr('

Übersicht & mehr

') === '

Übersicht & mehr

', 'Unbekannter Text bleibt deutsch'); $check($tr('') === '', 'Knopf wird übersetzt'); // Attribute $check($tr('') === '', 'placeholder und title werden übersetzt, value nicht'); $check($tr('
') === '
', 'data-confirm wird übersetzt'); // Muster $check($tr('2 veröffentlicht') === '2 published', 'Muster mit Zahl'); $check($tr('0 Downloads') === '0 downloads', 'Muster {#} Downloads'); $check($tr('aktuell 1.3.0') === 'current 1.3.0', 'Muster mit wechselndem Teil'); $check($tr('Übersicht · Verwaltung · DeskHub Plugins und Themen') === 'Übersicht · Verwaltung · DeskHub Plugins und Themen', 'Titel mit unbekanntem Namen bleibt unverändert'); $check($tr('Pakete · Verwaltung · DeskHub Plugins und Themes') === 'Packages · Administration · DeskHub plugins and themes', 'Seitentitel: gefundener Teil wird mitübersetzt'); $check($tr('
Veröffentlicht: authentik 1.2.5 (signiert).
') === '
Published: authentik 1.2.5 (signed).
', 'Meldung mit zwei wechselnden Teilen in der Reihenfolge {1} {2}'); $check($tr('
Version 1.0.0 existiert bereits. Bitte eine neue Versionsnummer verwenden, veröffentlichte Versionen bleiben unverändert.
') === '
Version 1.0.0 already exists. Please use a new version number, published versions stay unchanged.
', 'Fehlermeldung mit Versionsnummer'); $check($tr('
Das Paket ist leer oder größer als 10 MB.
') === '
The package is empty or larger than 10 MB.
', 'Muster mit Zahl in der Mitte'); // Code, Skripte und Vorformatiertes bleiben unberührt; Text daneben wird übersetzt $check($tr('

ZIP-Datei mit plugin.json bzw. Theme-CSS

') === '

ZIP file with plugin.json or theme CSS

', 'Teile neben werden übersetzt, bleibt'); $check($tr('Pakete
Pakete
') === 'Pakete
Pakete
', ',
 und