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
@@ -6,14 +6,14 @@ using Shouldly;
namespace ClawdDotNet.Core.Tests.Api;
/// <summary>
/// B4, zweiter Teil: Die Preise standen fest im Code, waren veraltet, und ausgerechnet
/// das Standardmodell der Agenten fehlte. CalculateCost gab dafür stillschweigend 0
/// zurück — die Anzeige meldete also 0 €, während echte Kosten anfielen.
/// B4, second part: the prices were hard-coded, outdated, and of all things
/// the agents' default model was missing. CalculateCost silently returned 0 for it
/// — the display thus reported 0 € while real costs were incurred.
/// </summary>
public sealed class ModelPricingTests
{
// ═══════════════════════════════════════════════════════════
// Umrechnung der OpenRouter-Angaben
// Conversion of the OpenRouter figures
// ═══════════════════════════════════════════════════════════
[Theory]
@@ -39,7 +39,7 @@ public sealed class ModelPricingTests
[Fact]
public void Die_Umrechnung_ist_unabhaengig_von_der_Systemsprache()
{
// Mit deutscher Kultur würde "0.000003" sonst als 3 statt als 0,000003 gelesen.
// With German culture "0.000003" would otherwise be read as 3 instead of 0.000003.
var original = Thread.CurrentThread.CurrentCulture;
try
{
@@ -53,7 +53,7 @@ public sealed class ModelPricingTests
}
// ═══════════════════════════════════════════════════════════
// Auslesen aus der API-Antwort
// Reading from the API response
// ═══════════════════════════════════════════════════════════
[Fact]
@@ -78,13 +78,13 @@ public sealed class ModelPricingTests
[InlineData("""{ "id": "x", "pricing": "kostenlos" }""")]
public void Unvollstaendige_Preisangaben_ergeben_null(string json)
{
// Halbe Angaben sind schlimmer als keine — sie ergäben eine plausibel
// aussehende, aber falsche Summe.
// Half the information is worse than none — it would result in a plausible-looking
// but wrong sum.
OpenRouterClient.ReadPricing(JsonDocument.Parse(json).RootElement).ShouldBeNull();
}
// ═══════════════════════════════════════════════════════════
// Katalog und Kostenschätzung
// Catalog and cost estimate
// ═══════════════════════════════════════════════════════════
private static ModelPricingCatalog CatalogWith(params (string Id, decimal In, decimal Out)[] models)
@@ -104,7 +104,7 @@ public sealed class ModelPricingTests
{
var catalog = CatalogWith(("anthropic/claude-sonnet-4-5", 3m, 15m));
// 95.000 Eingabe + 5.000 Ausgabe = 0,285 + 0,075 = 0,36 $
// 95,000 input + 5,000 output = 0.285 + 0.075 = 0.36 $
var estimate = catalog.Estimate("anthropic/claude-sonnet-4-5", 95_000, 5_000);
estimate.IsKnown.ShouldBeTrue();
@@ -114,7 +114,7 @@ public sealed class ModelPricingTests
[Fact]
public void Ein_unbekanntes_Modell_wird_als_unbekannt_gemeldet_statt_als_null_Kosten()
{
// Der Kern des alten Fehlers: 0 sah aus wie kostenlos.
// The core of the old error: 0 looked like free.
var catalog = CatalogWith(("openai/gpt-4o", 2.5m, 10m));
var estimate = catalog.Estimate("anthropic/claude-sonnet-4-5", 100_000, 5_000);