From d588bdc5411c64786daf63cbb2ca0f63aaf02b29 Mon Sep 17 00:00:00 2001 From: mgros Date: Fri, 7 Aug 2026 01:04:53 +0200 Subject: [PATCH] fix german set grammar --- Rules/Languages/de/ClearSpeak_Rules.yaml | 2 +- Rules/Languages/de/SharedRules/general.yaml | 14 +++++++----- Rules/Languages/de/unicode.yaml | 18 +++++++-------- tests/Languages/de/ClearSpeak/sets.rs | 22 +++++++++---------- .../de/ClearSpeak/symbols_and_adornments.rs | 8 +++---- 5 files changed, 34 insertions(+), 30 deletions(-) diff --git a/Rules/Languages/de/ClearSpeak_Rules.yaml b/Rules/Languages/de/ClearSpeak_Rules.yaml index a4ed1cd1a..a4953b958 100644 --- a/Rules/Languages/de/ClearSpeak_Rules.yaml +++ b/Rules/Languages/de/ClearSpeak_Rules.yaml @@ -501,7 +501,7 @@ - T: "Menge" - test: if: $ClearSpeak_Sets != 'woAll' - then: [T: "alle"] + then: [T: "aller"] - x: "*[1]/*[1]" - T: "so dass" - x: "*[1]/*[3]" diff --git a/Rules/Languages/de/SharedRules/general.yaml b/Rules/Languages/de/SharedRules/general.yaml index 5ed2a7463..a5792c745 100644 --- a/Rules/Languages/de/SharedRules/general.yaml +++ b/Rules/Languages/de/SharedRules/general.yaml @@ -55,17 +55,21 @@ match: "count(*)=0" replace: - bookmark: "@id" + - test: + - if: "$SpeechStyle = 'ClearSpeak' and ($ClearSpeak_SetMemberSymbol = 'In' or ($ClearSpeak_SetMemberSymbol = 'Auto' and ancestor::m:set)) and preceding::m:mo[1][.='∈' or .='∊' or .='∉']" + then: [T: "den"] + else: [T: "die"] - test: - if: ".='ℂ'" - then: [T: "die komplexen zahlen"] # phrase('the complex numbers' include 2 parts) + then: [T: "komplexen zahlen"] # phrase('the complex numbers' include 2 parts) - else_if: ".='ℕ'" - then: [T: "die natürlichen zahlen"] # phrase('the natural numbers' begin at 1) + then: [T: "natürlichen zahlen"] # phrase('the natural numbers' begin at 1) - else_if: ".='ℚ'" - then: [T: "die rationalen zahlen"] # phrase('the rational numbers' are the fraction of 2 integers) + then: [T: "rationalen zahlen"] # phrase('the rational numbers' are the fraction of 2 integers) - else_if: ".='ℝ'" - then: [T: "die reellen zahlen"] # phrase('the real numbers' can be both positive and negative) + then: [T: "reellen zahlen"] # phrase('the real numbers' can be both positive and negative) - else_if: ".='ℤ'" - then: [T: "die ganzen zahlen"] # phrase('the integers' are natural numbers above 0) + then: [T: "ganzen zahlen"] # phrase('the integers' are natural numbers above 0) else: [x: "text()"] # shouldn't happen - name: real-part diff --git a/Rules/Languages/de/unicode.yaml b/Rules/Languages/de/unicode.yaml index 142069a4c..bdd89fc76 100644 --- a/Rules/Languages/de/unicode.yaml +++ b/Rules/Languages/de/unicode.yaml @@ -320,9 +320,9 @@ else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [T: "in"] # (google translation) - - else_if: $ClearSpeak_SetMemberSymbol = 'Member' + - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' + then: [T: "in"] + - else_if: $ClearSpeak_SetMemberSymbol = 'Member' then: [T: "element von"] # (en: 'member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' then: [T: "element von"] # (en: 'element of', google translation) @@ -344,9 +344,9 @@ else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [T: "nicht in"] # (en: 'not in', google translation) - - else_if: $ClearSpeak_SetMemberSymbol = 'Member' + - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' + then: [T: "nicht in"] + - else_if: $ClearSpeak_SetMemberSymbol = 'Member' then: [T: "nicht element von"] # (en: 'not member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' then: [T: "nicht element von"] # (en: 'not element of', google translation) @@ -367,9 +367,9 @@ else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [T: "in"] # (google translation) - - else_if: $ClearSpeak_SetMemberSymbol = 'Member' + - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' + then: [T: "in"] + - else_if: $ClearSpeak_SetMemberSymbol = 'Member' then: [T: "element von"] # (en: 'member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' then: [T: "element von"] # (en: 'element of', google translation) diff --git a/tests/Languages/de/ClearSpeak/sets.rs b/tests/Languages/de/ClearSpeak/sets.rs index 2b7ad5cde..e8911f33f 100644 --- a/tests/Languages/de/ClearSpeak/sets.rs +++ b/tests/Languages/de/ClearSpeak/sets.rs @@ -205,7 +205,7 @@ fn set_with_colon() -> Result<()> { let expr = " { x:x>2 } "; - test("de", "ClearSpeak", expr, "die Menge alle x so dass x ist größer als 2")?; + test("de", "ClearSpeak", expr, "die Menge aller x so dass x ist größer als 2")?; return Ok(()); } @@ -215,7 +215,7 @@ fn set_with_bar() -> Result<()> { let expr = " { x|x>2 } "; - test("de", "ClearSpeak", expr, "die Menge alle x so dass x ist größer als 2")?; + test("de", "ClearSpeak", expr, "die Menge aller x so dass x ist größer als 2")?; return Ok(()); } @@ -263,7 +263,7 @@ fn complicated_set_with_colon() -> Result<()> { 7 } "; - test("de", "ClearSpeak", expr, "die Menge alle x in die ganzen zahlen so dass 2 ist kleiner als x ist kleiner als 7")?; + test("de", "ClearSpeak", expr, "die Menge aller x in den ganzen zahlen so dass 2 ist kleiner als x ist kleiner als 7")?; return Ok(()); } @@ -279,7 +279,7 @@ fn complicated_set_with_mtext() -> Result<()> { } "; test("de", "ClearSpeak", expr, - "die Menge alle x in die natürlichen zahlen so dass x is an even number")?; + "die Menge aller x in den natürlichen zahlen so dass x is an even number")?; return Ok(()); } @@ -299,7 +299,7 @@ fn set_with_bar_member() -> Result<()> { } "; test_ClearSpeak("de", "ClearSpeak_SetMemberSymbol", "Member", - expr, "die Menge alle x element von die ganzen zahlen so dass x ist größer als 5")?; + expr, "die Menge aller x element von die ganzen zahlen so dass x ist größer als 5")?; return Ok(()); } @@ -348,7 +348,7 @@ fn set_with_bar_element() -> Result<()> { } "; test_ClearSpeak("de", "ClearSpeak_SetMemberSymbol", "Element", - expr, "die Menge alle x element von die ganzen zahlen so dass x ist größer als 5")?; + expr, "die Menge aller x element von die ganzen zahlen so dass x ist größer als 5")?; return Ok(()); } @@ -396,7 +396,7 @@ fn set_with_bar_in() -> Result<()> { } "; test_ClearSpeak("de", "ClearSpeak_SetMemberSymbol", "In", - expr, "die Menge alle x in die ganzen zahlen so dass x ist größer als 5")?; + expr, "die Menge aller x in den ganzen zahlen so dass x ist größer als 5")?; return Ok(()); } @@ -407,7 +407,7 @@ fn element_alone_in() -> Result<()> { 3+2i "; test_ClearSpeak("de", "ClearSpeak_SetMemberSymbol", "In", - expr, "3 plus 2 i, ist nicht in die reellen zahlen")?; + expr, "3 plus 2 i, ist nicht in den reellen zahlen")?; return Ok(()); } @@ -425,7 +425,7 @@ fn element_under_sum_in() -> Result<()> { "; test_ClearSpeak("de", "ClearSpeak_SetMemberSymbol", "In", - expr, "die summe durch i ist in die ganzen zahlen von; der bruch mit zähler 1; und nenner i quadrat")?; + expr, "die summe durch i ist in den ganzen zahlen von; der bruch mit zähler 1; und nenner i quadrat")?; return Ok(()); } @@ -444,7 +444,7 @@ fn set_with_bar_belongs() -> Result<()> { } "; test_ClearSpeak("de", "ClearSpeak_SetMemberSymbol", "Belongs", - expr, "die Menge alle x element von die ganzen zahlen so dass x ist größer als 5")?; + expr, "die Menge aller x element von die ganzen zahlen so dass x ist größer als 5")?; return Ok(()); } @@ -524,7 +524,7 @@ fn silent_bracket() -> Result<()> { {x|x>2} "; test_ClearSpeak("de", "ClearSpeak_Sets", "SilentBracket", expr, - "die Menge alle x so dass x ist größer als 2")?; + "die Menge aller x so dass x ist größer als 2")?; return Ok(()); } diff --git a/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs b/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs index 05529529d..ac1f7c2f3 100644 --- a/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs +++ b/tests/Languages/de/ClearSpeak/symbols_and_adornments.rs @@ -237,7 +237,7 @@ fn vertical_line_set() -> Result<()> { } "; test_ClearSpeak("de", "ClearSpeak_VerticalLine", "Auto", expr, - "die Menge alle x so dass x ist größer als 0")?; + "die Menge aller x so dass x ist größer als 0")?; return Ok(()); } @@ -257,7 +257,7 @@ fn vertical_line_set_such_that() -> Result<()> { } "; test_ClearSpeak("de", "ClearSpeak_VerticalLine", "SuchThat", expr, - "die Menge alle x so dass x ist größer als 0")?; + "die Menge aller x so dass x ist größer als 0")?; return Ok(()); } @@ -277,7 +277,7 @@ fn vertical_line_set_given() -> Result<()> { "; // the rules for set will override all the options -- ClearSpeak spec should be clarified test_ClearSpeak("de", "ClearSpeak_VerticalLine", "Given", expr, - "die Menge alle x so dass x ist größer als 0")?; + "die Menge aller x so dass x ist größer als 0")?; return Ok(()); } @@ -300,7 +300,7 @@ fn vertical_line_set_and_abs() -> Result<()> { } "; test_ClearSpeak("de", "ClearSpeak_VerticalLine", "Auto", expr, - "die Menge alle x so dass der Betrag von x; ist größer als 2")?; + "die Menge aller x so dass der Betrag von x; ist größer als 2")?; return Ok(()); }