diff --git a/Rules/Languages/de/ClearSpeak_Rules.yaml b/Rules/Languages/de/ClearSpeak_Rules.yaml
index 8d23c3502..d2551ffef 100644
--- a/Rules/Languages/de/ClearSpeak_Rules.yaml
+++ b/Rules/Languages/de/ClearSpeak_Rules.yaml
@@ -1,4 +1,19 @@
---
+- name: pause
+ tag: "!*"
+ match: "not(self::m:math) and not($MatchingPause) and @data-intent-property[contains(., ':pause')]"
+ replace:
+ - with:
+ variables: [MatchingPause: "true()"]
+ replace:
+ - test:
+ - if: "contains(@data-intent-property, ':pause-long')"
+ then: [pause: long]
+ - else_if: "contains(@data-intent-property, ':pause-short')"
+ then: [pause: short]
+ else: [pause: medium]
+ - x: "."
+
- name: intent-literal-silent
tag: [mi, mo, mn]
match: "contains(@data-intent-property, ':silent:')"
diff --git a/tests/Languages/de/intent.rs b/tests/Languages/de/intent.rs
index a93e49d2d..62e711db6 100644
--- a/tests/Languages/de/intent.rs
+++ b/tests/Languages/de/intent.rs
@@ -3,6 +3,27 @@
use crate::common::*;
use anyhow::Result;
+#[test]
+fn clear_speak_short_pause_intent() -> Result<()> {
+ // A short pause intent should survive intent inference and render as a comma.
+ let expr = "";
+ test("de", "ClearSpeak", expr, "x, y")
+}
+
+#[test]
+fn clear_speak_medium_pause_intent() -> Result<()> {
+ // An unsuffixed pause intent requests the default medium pause.
+ let expr = "";
+ test("de", "ClearSpeak", expr, "x; y")
+}
+
+#[test]
+fn clear_speak_long_pause_intent() -> Result<()> {
+ // A long pause intent should be preserved in ClearSpeak text output.
+ let expr = "";
+ test("de", "ClearSpeak", expr, "x; y")
+}
+
#[test]
fn silent_intent() -> Result<()> {