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
@@ -4,17 +4,17 @@ using Shouldly;
namespace ClawdDotNet.App.Tests.Settings;
/// <summary>
/// Was mit den Einstellungen geschieht, die es hier nicht mehr gibt (#528, Stufe 1).
/// What happens to the settings that no longer exist here (#528, stage 1).
///
/// <para><b>Der Anlass.</b> Fünf Schlüssel sind aus <see cref="AppSettings"/> in die
/// Instanz gewandert. System.Text.Json überliest unbekannte Schlüssel wortlos, und
/// <c>Save</c> schreibt sie danach nicht wieder — wer ein eigenes Log- oder
/// Sicherungsverzeichnis eingetragen hatte, verlöre den Wert also, ohne es zu erfahren.
/// Ein Umzug ohne Ausweichlogik ist in Ordnung; einer ohne Ansage nicht.</para>
/// <para><b>The occasion.</b> Five keys moved from <see cref="AppSettings"/> into the
/// instance. System.Text.Json silently skips unknown keys, and
/// <c>Save</c> does not write them again afterwards — whoever had entered their own log or
/// backup directory would therefore lose the value without finding out.
/// A move without fallback logic is fine; one without an announcement is not.</para>
///
/// <para>Bewusst keine Übernahme in die Instanzen: Ein anwendungsweiter Pfad, in alle
/// Instanzen kopiert, wäre wieder derselbe Ordner für alle — also genau der Zustand, den
/// Stufe 1 beseitigt.</para>
/// <para>Deliberately no takeover into the instances: an application-wide path, copied into all
/// instances, would again be the same folder for all — i.e. exactly the state
/// stage 1 eliminates.</para>
/// </summary>
public sealed class SettingsManagerTests : IDisposable
{
@@ -28,7 +28,7 @@ public sealed class SettingsManagerTests : IDisposable
public void Dispose()
{
try { Directory.Delete(_dir, recursive: true); }
catch { /* Ein liegengebliebener Testordner faerbt keinen Lauf rot. */ }
catch { /* A leftover test folder does not turn a run red. */ }
}
private SettingsManager Geladen(string json)
@@ -62,7 +62,7 @@ public sealed class SettingsManagerTests : IDisposable
[Fact]
public void Was_die_Datei_sonst_enthaelt_wird_weiter_gelesen()
{
// Die Ansage darf nichts daran ändern, dass der Rest ankommt.
// The announcement must not change the fact that the rest arrives.
var manager = Geladen("""
{
"logDirectory": "/var/log/clawd",
@@ -89,7 +89,7 @@ public sealed class SettingsManagerTests : IDisposable
File.ReadAllText(Datei).ShouldNotContain("logDirectory");
// Und der zweite Ladevorgang hat nichts mehr zu melden.
// And the second load has nothing more to report.
var erneut = new SettingsManager(_dir);
erneut.Load();
erneut.AbandonedKeys.ShouldBeEmpty();