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 = "";
- 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 = "";
+ test("de", "ClearSpeak", signed_numbers, "minus 5 komma plus 5")?;
+ test("de", "SimpleSpeak", signed_numbers, "minus 5 komma plus 5")?;
+
+ let negative_root = "";
+ 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 = "