Stufe 4c (#764): Bezeichner auf Englisch - Typen, Methoden, Felder, Parameter, Locals, Testnamen

Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt).
Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e):
Properties, Record-Parameter, Enum-Member sowie die Parameter der
Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder
anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-10-04 13:18:43 +02:00
co-authored by Claude Opus 5.5
parent 837a634a22
commit 77062facc9
190 changed files with 4813 additions and 4813 deletions
@@ -21,7 +21,7 @@ public sealed class ModelPricingTests
[InlineData("0.000015", 15.0)]
[InlineData("0.0000001", 0.1)]
[InlineData("0", 0.0)]
public void Preise_pro_Token_werden_auf_eine_Million_hochgerechnet(string raw, double expected)
public void Prices_per_token_are_scaled_to_one_million(string raw, double expected)
{
ModelPricing.ParsePerToken(raw).ShouldBe((decimal)expected);
}
@@ -31,13 +31,13 @@ public sealed class ModelPricingTests
[InlineData("")]
[InlineData("keine-zahl")]
[InlineData("-0.001")]
public void Unbrauchbare_Angaben_ergeben_null(string? raw)
public void Unusable_values_give_null(string? raw)
{
ModelPricing.ParsePerToken(raw).ShouldBeNull();
}
[Fact]
public void Die_Umrechnung_ist_unabhaengig_von_der_Systemsprache()
public void The_conversion_is_independent_of_the_system_language()
{
// With German culture "0.000003" would otherwise be read as 3 instead of 0.000003.
var original = Thread.CurrentThread.CurrentCulture;
@@ -57,7 +57,7 @@ public sealed class ModelPricingTests
// ═══════════════════════════════════════════════════════════
[Fact]
public void Preise_werden_aus_der_Modellantwort_gelesen()
public void Prices_are_read_from_the_model_response()
{
var item = JsonDocument.Parse("""
{ "id": "anthropic/claude-sonnet-4-5",
@@ -76,7 +76,7 @@ public sealed class ModelPricingTests
[InlineData("""{ "id": "x", "pricing": {} }""")]
[InlineData("""{ "id": "x", "pricing": { "prompt": "0.000003" } }""")]
[InlineData("""{ "id": "x", "pricing": "kostenlos" }""")]
public void Unvollstaendige_Preisangaben_ergeben_null(string json)
public void Incomplete_prices_give_null(string json)
{
// Half the information is worse than none — it would result in a plausible-looking
// but wrong sum.
@@ -100,7 +100,7 @@ public sealed class ModelPricingTests
}
[Fact]
public void Die_Kosten_werden_aus_Prompt_und_Completion_getrennt_berechnet()
public void The_costs_are_calculated_separately_from_prompt_and_completion()
{
var catalog = CatalogWith(("anthropic/claude-sonnet-4-5", 3m, 15m));
@@ -112,7 +112,7 @@ public sealed class ModelPricingTests
}
[Fact]
public void Ein_unbekanntes_Modell_wird_als_unbekannt_gemeldet_statt_als_null_Kosten()
public void An_unknown_model_is_reported_as_unknown_instead_of_zero_cost()
{
// The core of the old error: 0 looked like free.
var catalog = CatalogWith(("openai/gpt-4o", 2.5m, 10m));
@@ -124,7 +124,7 @@ public sealed class ModelPricingTests
}
[Fact]
public void Grossschreibung_der_Modell_ID_spielt_keine_Rolle()
public void Case_of_the_model_ID_does_not_matter()
{
var catalog = CatalogWith(("openai/gpt-4o", 2.5m, 10m));
@@ -132,7 +132,7 @@ public sealed class ModelPricingTests
}
[Fact]
public void Modelle_ohne_Preisangabe_landen_nicht_im_Katalog()
public void Models_without_price_do_not_end_up_in_the_catalogue()
{
var catalog = new ModelPricingCatalog();
catalog.Load([
@@ -146,13 +146,13 @@ public sealed class ModelPricingTests
}
[Fact]
public void Ein_leerer_Katalog_kennt_kein_Modell()
public void An_empty_catalogue_knows_no_model()
{
new ModelPricingCatalog().Estimate("beliebig", 1000, 100).IsKnown.ShouldBeFalse();
}
[Fact]
public void Erneutes_Laden_aktualisiert_die_Preise()
public void Reloading_updates_the_prices()
{
var catalog = CatalogWith(("m", 1m, 2m));
catalog.Load([new ModelInfo { Id = "m", Pricing = new ModelPricing(5m, 10m) }]);