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:
co-authored by
Claude Opus 5.5
parent
da4ceac7d5
commit
837a634a22
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user