diff --git a/weblate/trans/templatetags/translations.py b/weblate/trans/templatetags/translations.py
index 34664378fa3e..6bb7fe6aaa8b 100644
--- a/weblate/trans/templatetags/translations.py
+++ b/weblate/trans/templatetags/translations.py
@@ -420,13 +420,12 @@ def format_generator(self) -> Generator[str]:
if pos in tags:
current = tags[pos]
- # Special case for single whitespace char in diff
+ # Special case for leading whitespace char in diff
if (
current
and value[pos] == " "
and "" in current
and SPACE_START not in current
- and "" in tags[pos + 1]
):
current.append(SPACE_START)
tags[pos + 1].insert(0, SPACE_END)
diff --git a/weblate/trans/tests/test_suggestions.py b/weblate/trans/tests/test_suggestions.py
index 9c886dbc2547..80833dda366c 100644
--- a/weblate/trans/tests/test_suggestions.py
+++ b/weblate/trans/tests/test_suggestions.py
@@ -106,7 +106,11 @@ def test_change_diff_for_deleted_suggestion(self, **kwargs) -> None:
response = self.client.get(translate_url)
self.assertNotContains(response, "Suggestion removed")
# 1st diff occurrence is in the "Suggestions" tab, the 2nd in "History" tab
- self.assertContains(response, "Nazdar svete!", count=2)
+ self.assertContains(
+ response,
+ """Nazdar svete!""",
+ count=2,
+ )
suggestions = self.get_unit().suggestions.values_list("pk", flat=True)
self.assertEqual(len(suggestions), 1)
@@ -119,7 +123,11 @@ def test_change_diff_for_deleted_suggestion(self, **kwargs) -> None:
self.assertContains(response, "Suggestion added", count=1)
# both diff occurrence are in "History" tab,
# as suggestion is no longer visible in the "Suggestion" tab
- self.assertContains(response, "Nazdar svete!", count=2)
+ self.assertContains(
+ response,
+ """Nazdar svete!""",
+ count=2,
+ )
def test_delete_spam(self) -> None:
self.test_delete(spam="1")
diff --git a/weblate/trans/tests/test_templatetags.py b/weblate/trans/tests/test_templatetags.py
index e4ddf229a5aa..5a4f4deeba64 100644
--- a/weblate/trans/tests/test_templatetags.py
+++ b/weblate/trans/tests/test_templatetags.py
@@ -388,6 +388,20 @@ def test_diff_changed_whitespace(self) -> None:
""",
)
+ def test_diff_whitespace_leading_added(self) -> None:
+ self.assertHTMLEqual(
+ format_translation(
+ ["新增 :http:get:"],
+ self.component.source_language,
+ diff="新增:http:get:",
+ )["items"][0]["content"],
+ """新增
+ :
+ :
+ http:get:
+ """,
+ )
+
def test_glossary(self) -> None:
self.assertHTMLEqual(
format_translation(