From 2d80972f7ebf1befbf3bc0ff44746940c2218c8c Mon Sep 17 00:00:00 2001 From: mgros Date: Tue, 22 Sep 2026 15:03:40 +0200 Subject: [PATCH] de: fix "negativ positiv" --- Rules/Languages/de/ClearSpeak_Rules.yaml | 6 +++--- Rules/Languages/de/definitions.yaml | 4 ++-- tests/Languages/de/ClearSpeak/intervals.rs | 6 +++--- tests/Languages/de/ClearSpeak/mroot.rs | 2 +- .../de/ClearSpeak/symbols_and_adornments.rs | 8 ++++---- tests/Languages/de/mtable.rs | 2 +- tests/Languages/de/shared.rs | 13 +++++++++++++ 7 files changed, 27 insertions(+), 14 deletions(-) diff --git a/Rules/Languages/de/ClearSpeak_Rules.yaml b/Rules/Languages/de/ClearSpeak_Rules.yaml index 0436516f5..eed98a687 100644 --- a/Rules/Languages/de/ClearSpeak_Rules.yaml +++ b/Rules/Languages/de/ClearSpeak_Rules.yaml @@ -108,7 +108,7 @@ then: [pause: short] else: [pause: long] -# The 'negative' rule interacts with the msqrt/mroot rules as those might pick off this case ("the negative square root of x") +# Prefix signs interact with the msqrt/mroot rules as those might pick off this case. - name: negative_and_positive tag: [plus, minus] match: "count(*)=1 and contains(@data-intent-property, ':prefix:')" @@ -122,8 +122,8 @@ - bookmark: "@id" - test: if: "self::m:minus" - then: [T: "negative"] - else: [T: "positive"] + then: [T: "minus"] + else: [T: "plus"] - x: "*[1]" # Fraction rules diff --git a/Rules/Languages/de/definitions.yaml b/Rules/Languages/de/definitions.yaml index 427eec726..bb54a3c82 100644 --- a/Rules/Languages/de/definitions.yaml +++ b/Rules/Languages/de/definitions.yaml @@ -25,8 +25,8 @@ "lim-inf": "prefix=lim inf bei: der untere grenzwert bei : der untere grenzwert bei", "logarithm-with-base": "prefix=logarithmus basis: der logarithmus basis: der logarithmus basis", "natural-logarithm": "function=ln: natürlicher logarithmus: natürlicher logarithmus", - "minus": "infix=minus || prefix=negativ", - "plus": "infix=plus || prefix=positiv", + "minus": "infix=minus || prefix=minus", + "plus": "infix=plus || prefix=plus", "real-part": "function=der reale teil", "transpose": "postfix=transponiert || function=die Transponierte", "magnitude": "function=; Norm: Norm: Norm; Ende Norm", diff --git a/tests/Languages/de/ClearSpeak/intervals.rs b/tests/Languages/de/ClearSpeak/intervals.rs index 3bf359a55..e3a5a8ff1 100644 --- a/tests/Languages/de/ClearSpeak/intervals.rs +++ b/tests/Languages/de/ClearSpeak/intervals.rs @@ -80,7 +80,7 @@ fn interval_negative_infinity_to_open_endpoint() -> Result<()> { "ClearSpeak_Paren", "Interval", expr, - "das Intervall negative unendlich bis d, nicht einschließlich d", + "das Intervall minus unendlich bis d, nicht einschließlich d", ) } @@ -96,7 +96,7 @@ fn interval_negative_infinity_to_closed_endpoint() -> Result<()> { "ClearSpeak_Paren", "Interval", expr, - "das Intervall negative unendlich bis d, einschließlich d", + "das Intervall minus unendlich bis d, einschließlich d", ) } @@ -144,6 +144,6 @@ fn interval_between_infinities_has_no_endpoint_qualifier() -> Result<()> { "ClearSpeak_Paren", "Interval", expr, - "das Intervall negative unendlich bis unendlich", + "das Intervall minus unendlich bis unendlich", ) } diff --git a/tests/Languages/de/ClearSpeak/mroot.rs b/tests/Languages/de/ClearSpeak/mroot.rs index 577c6751a..e237552dc 100644 --- a/tests/Languages/de/ClearSpeak/mroot.rs +++ b/tests/Languages/de/ClearSpeak/mroot.rs @@ -71,7 +71,7 @@ fn neg_without_root() -> Result<()> { let expr = " - x - y "; - test("de", "ClearSpeak", expr, "negative x minus y")?; + test("de", "ClearSpeak", expr, "minus x minus y")?; return Ok(()); } diff --git a/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs b/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs index f0c5cb6b3..535de28ed 100644 --- a/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs +++ b/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs @@ -85,7 +85,7 @@ fn ellipses_auto_start() -> Result<()> { …, -2,-1,0 "; - test("de", "ClearSpeak", expr, "punkt punkt punkt komma negative 2 komma negative 1 komma 0")?; + test("de", "ClearSpeak", expr, "punkt punkt punkt komma minus 2 komma minus 1 komma 0")?; return Ok(()); } @@ -135,7 +135,7 @@ fn ellipses_auto_both() -> Result<()> { ,… "; test_ClearSpeak("de", "ClearSpeak_Ellipses", "Auto", expr, - "punkt punkt punkt komma negative 2 komma negative 1 komma 0 komma 1 komma 2 komma punkt punkt punkt")?; + "punkt punkt punkt komma minus 2 komma minus 1 komma 0 komma 1 komma 2 komma punkt punkt punkt")?; return Ok(()); } @@ -146,7 +146,7 @@ fn ellipses_and_so_on_start() -> Result<()> { …, -2,-1,0 "; - test_ClearSpeak("de", "ClearSpeak_Ellipses", "AndSoOn", expr, "punkt punkt punkt komma negative 2 komma negative 1 komma 0")?; + test_ClearSpeak("de", "ClearSpeak_Ellipses", "AndSoOn", expr, "punkt punkt punkt komma minus 2 komma minus 1 komma 0")?; return Ok(()); } @@ -196,7 +196,7 @@ fn ellipses_and_so_on_both() -> Result<()> { ,… "; test_ClearSpeak("de", "ClearSpeak_Ellipses", "AndSoOn", expr, - "punkt punkt punkt komma negative 2 komma negative 1 komma 0 komma 1 komma 2 komma punkt punkt punkt")?; + "punkt punkt punkt komma minus 2 komma minus 1 komma 0 komma 1 komma 2 komma punkt punkt punkt")?; return Ok(()); } diff --git a/tests/Languages/de/mtable.rs b/tests/Languages/de/mtable.rs index d8ad1aa28..e00273738 100644 --- a/tests/Languages/de/mtable.rs +++ b/tests/Languages/de/mtable.rs @@ -1196,7 +1196,7 @@ fn identity_matrix_false_positive_negative_one() -> Result<()> { ] "; test_prefs("de", "SimpleSpeak", vec![("Verbosity", "Terse")], - expr, "die 2 mal 2 diagonalmatrix; spalte 1; 1; spalte 2; negativ 1")?; + expr, "die 2 mal 2 diagonalmatrix; spalte 1; 1; spalte 2; minus 1")?; Ok(()) } diff --git a/tests/Languages/de/shared.rs b/tests/Languages/de/shared.rs index 93d570108..3b86d7d89 100644 --- a/tests/Languages/de/shared.rs +++ b/tests/Languages/de/shared.rs @@ -37,6 +37,19 @@ fn variable_powers() -> Result<()> { Ok(()) } +#[test] +fn unary_signs_use_plus_and_minus() -> Result<()> { + // Unary signs use their mathematical names rather than adjectival forms. + let signed_numbers = "−5,+5"; + test("de", "ClearSpeak", signed_numbers, "minus 5 komma plus 5")?; + test("de", "SimpleSpeak", signed_numbers, "minus 5 komma plus 5")?; + + let negative_root = "−x"; + test("de", "ClearSpeak", negative_root, "minus die quadratwurzel von x")?; + test("de", "SimpleSpeak", negative_root, "minus die quadratwurzel von x")?; + Ok(()) +} + #[test] fn modified_vars() -> Result<()> { let expr = "