Stufe 4c (#764): Kommentare in C#, WebUI-Skripten, CSS und HTML auf Englisch

Rund 2.600 Kommentarblöcke in 310 C#-Dateien übersetzt, Begründungen vollständig
erhalten: blockweise gleiche Anzahl wie vorher, kein Block unter 60 % seiner
Länge, der Code außerhalb der Kommentare per Tokenizer byte-identisch geprüft.
Zitate deutscher Oberflächentexte und Testdaten bleiben deutsch.

WebUI: Kommentare in JS/CSS/HTML übersetzt, JSDoc-@param an die in 4b
umbenannten Parameter angeglichen.

Dabei behoben:
- 4b hatte "tag" (HTML-Tag) als deutsches "Tag" gelesen und zu "dayValue"
  gemacht (makeElement, svg, Tagesübersicht) - zurück auf tag/day.
- Aufgaben "InProgress" bekamen die Plakettenart "laufend", für die es nie eine
  CSS-Klasse gab - jetzt "success" wie laufende Instanzen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-10-04 12:45:03 +02:00
co-authored by Claude Opus 5.5
parent da4ceac7d5
commit 837a634a22
311 changed files with 7238 additions and 7252 deletions
@@ -10,15 +10,15 @@ using Shouldly;
namespace ClawdDotNet.Core.Tests.Backup;
/// <summary>
/// Die Sicherung, verschlüsselt mit dem Lizenzschlüssel.
/// The backup, encrypted with the license key.
///
/// <para><b>Worum es geht.</b> Eine Sicherung soll einen Maschinenwechsel überstehen,
/// ohne dass eine Passphrase gespeichert oder eingetippt werden muss. Der Lizenzschlüssel
/// ist ohnehin da. Und ein Archiv auf einem FTP-Server oder einem USB-Stick soll niemandem
/// nützen, der es nur findet.</para>
/// <para><b>What this is about.</b> A backup should survive a change of machine
/// without a passphrase having to be stored or typed in. The license key
/// is there anyway. And an archive on an FTP server or a USB stick should be of no use
/// to anyone who merely finds it.</para>
///
/// <para>Läuft in <see cref="SecretKeyCollection"/>: Der Maschinenwechsel wird über den
/// statischen Schlüsselspeicher nachgestellt.</para>
/// <para>Runs in <see cref="SecretKeyCollection"/>: the change of machine is reproduced via the
/// static key store.</para>
/// </summary>
[Collection(SecretKeyCollection.Name)]
public sealed class LicenseBackupTests : IDisposable
@@ -42,7 +42,7 @@ public sealed class LicenseBackupTests : IDisposable
SecretKeyStore.UseDirectory(null);
ClawdDotNet.Core.Storage.SqliteStorage.ReleasePooledConnections(_root);
try { Directory.Delete(_root, recursive: true); }
catch { /* Aufräumen ist Nebensache */ }
catch { /* Cleaning up is secondary */ }
}
private string Quelle(byte[] inhalt)
@@ -52,11 +52,11 @@ public sealed class LicenseBackupTests : IDisposable
return pfad;
}
// ─── Der Behälter ───
// ─── The container ───
/// <summary>
/// Mehr als ein Stück: Die Stückelung ist der Teil, an dem ein Fehler Daten
/// verschluckt, ohne dass es auffällt.
/// More than one chunk: the chunking is the part where an error swallows data
/// without it being noticed.
/// </summary>
[Fact]
public void Ein_Archiv_ueber_mehrere_Stuecke_kommt_unveraendert_zurueck()
@@ -79,8 +79,8 @@ public sealed class LicenseBackupTests : IDisposable
}
/// <summary>
/// Ein anderer Schlüssel wird am Kopf erkannt — bevor irgendetwas entschlüsselt und
/// vor allem bevor eine Instanz dafür angehalten wird.
/// A different key is recognized at the header — before anything is decrypted and
/// above all before an instance is stopped for it.
/// </summary>
[Fact]
public void Ein_fremder_Schluessel_wird_erkannt_bevor_etwas_geschrieben_wird()
@@ -97,8 +97,8 @@ public sealed class LicenseBackupTests : IDisposable
}
/// <summary>
/// Im Wiederherstellungsdialog tippt ein Mensch einen fremden Schlüssel ab. Ein
/// Leerzeichen oder ein kleiner Buchstabe dürfen dort nicht über „verloren" entscheiden.
/// In the restore dialog a human types in a foreign key. A
/// space or a lowercase letter must not decide about "lost" there.
/// </summary>
[Fact]
public void Schreibweise_und_Leerzeichen_des_Schluessels_spielen_keine_Rolle()
@@ -119,8 +119,8 @@ public sealed class LicenseBackupTests : IDisposable
}
/// <summary>
/// Fehlt hinten ein ganzes Stück, muss das auffallen. Ohne Endmarke hielte man den Rest
/// für vollständig und bekäme ein ZIP, das beim Auspacken irgendwo abbricht.
/// If a whole chunk is missing at the end, that must be noticed. Without the end marker you would consider the rest
/// complete and get a ZIP that aborts somewhere when unpacking.
/// </summary>
[Fact]
public void Ein_fehlendes_letztes_Stueck_faellt_auf()
@@ -130,7 +130,7 @@ public sealed class LicenseBackupTests : IDisposable
LicenseBackupCipher.Encrypt(Quelle(inhalt), manifest, Datei("a.clawdbak"), Lizenz);
// Kopf 8+1+16, Manifest 12+4+16+len, erstes Stueck 12+4+16+1 MiB - danach kappen.
// Header 8+1+16, manifest 12+4+16+len, first chunk 12+4+16+1 MiB - cut after that.
var bisErstesStueck = 25 + (32 + Encoding.UTF8.GetByteCount(manifest)) + (32 + 1024 * 1024);
var voll = File.ReadAllBytes(Datei("a.clawdbak"));
File.WriteAllBytes(Datei("a.clawdbak"), voll[..bisErstesStueck]);
@@ -153,7 +153,7 @@ public sealed class LicenseBackupTests : IDisposable
LicenseBackupCipher.DecryptTo(Datei("a.clawdbak"), Datei("zurueck.bin"), Lizenz));
}
// ─── Die Sicherung als Ganzes ───
// ─── The backup as a whole ───
private string Instanz()
{
@@ -185,9 +185,9 @@ public sealed class LicenseBackupTests : IDisposable
}
/// <summary>
/// Der Fall, um den es geht: Sichern auf Maschine A, zurückspielen auf Maschine B, und
/// der API-Schlüssel ist danach lesbar — ohne Passphrase, allein mit dem
/// Lizenzschlüssel.
/// The case this is about: back up on machine A, restore on machine B, and
/// the API key is readable afterwards — without a passphrase, solely with the
/// license key.
/// </summary>
[Fact]
public async Task Eine_Sicherung_ueberlebt_den_Maschinenwechsel()
@@ -207,8 +207,8 @@ public sealed class LicenseBackupTests : IDisposable
}
/// <summary>
/// In der Datei steht nichts im Klartext — weder der Schlüssel noch, dass es überhaupt
/// einen gibt.
/// Nothing is in plain text in the file — neither the key nor that there is
/// one at all.
/// </summary>
[Fact]
public async Task Die_Sicherung_verraet_keinen_Klartext()
@@ -224,7 +224,7 @@ public sealed class LicenseBackupTests : IDisposable
}
/// <summary>
/// Mit fremdem Schlüssel wird nichts geschrieben — nicht halb, nicht teilweise.
/// With a foreign key nothing is written — not half, not partially.
/// </summary>
[Fact]
public async Task Mit_fremdem_Schluessel_bleibt_das_Ziel_unberuehrt()