Skip to content

Commit 87a6fa1

Browse files
authored
feat(notifications): add translation activity summary notification (#19517)
This allows users to follow activity without being overwhelmed with all the details. Fixes #13071
1 parent e9bea83 commit 87a6fa1

10 files changed

Lines changed: 496 additions & 6 deletions

File tree

docs/changes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Weblate 2026.5
77

88
* Added :ref:`file_format_params` for :ref:`markdown`, including ``line_max_length``, ``md_extract_code_blocks``, ``md_extract_frontmatter``, and ``md_no_placeholders``.
99
* Added :ref:`mdx` support for translating Markdown text while preserving JSX syntax.
10+
* Added a digest-only translation activity summary notification, see :ref:`notifications`.
1011
* :ref:`CSV <csv>` and :ref:`XLSX <xlsx>` downloads in :ref:`download` now export plural strings as separate plural-form rows that can be imported back.
1112
* :ref:`file_format_params` now include ``po_set_language_team``, ``po_set_last_translator``, ``po_set_x_generator``, and ``po_report_msgid_bugs_to`` to control whether Weblate updates the ``Language-Team``, ``Last-Translator``, ``X-Generator``, and ``Report-Msgid-Bugs-To`` headers in Gettext PO and POT files.
1213
* Added a :ref:`backup-management-command` to run configured backup services synchronously.

docs/specs/openapi.yaml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/user/profile.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ example about new strings to translate), while some trigger at component level
170170
(for example merge errors). These two groups of notifications are visually
171171
separated in the settings.
172172

173+
The :guilabel:`Translation activity summary` notification is digest-only and
174+
summarizes added, updated, translated, approved, needs editing, and unfinished
175+
strings.
176+
173177
You can toggle notifications for watched projects and administered projects and it
174178
can be further tweaked (or muted) per project and component. Visit the component
175179
overview page and select appropriate choice from the :guilabel:`Watching` menu.

weblate/accounts/data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
(
3535
NotificationScope.SCOPE_WATCHED,
3636
NotificationFrequency.FREQ_WEEKLY,
37-
"NewStringNotificaton",
37+
"TranslationActivitySummaryNotification",
3838
),
3939
(
4040
NotificationScope.SCOPE_ADMIN,
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Copyright © Michal Čihař <michal@weblate.org>
2+
#
3+
# SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
# Generated by Django 6.0.5 on 2026-05-12 13:58
6+
7+
from django.db import migrations, models
8+
9+
10+
class Migration(migrations.Migration):
11+
dependencies = [
12+
("accounts", "0028_alter_profile_codesite_alter_profile_fediverse_and_more"),
13+
]
14+
15+
operations = [
16+
migrations.AlterField(
17+
model_name="subscription",
18+
name="notification",
19+
field=models.CharField(
20+
choices=[
21+
(
22+
"RepositoryNotification",
23+
"Operation was performed in the repository",
24+
),
25+
("LockNotification", "Component was locked or unlocked"),
26+
("LicenseNotification", "License was changed"),
27+
("ParseErrorNotification", "Parse error occurred"),
28+
("NewStringNotificaton", "String is available for translation"),
29+
(
30+
"TranslationActivitySummaryNotification",
31+
"Translation activity summary",
32+
),
33+
(
34+
"NewContributorNotificaton",
35+
"Contributor made their first translation",
36+
),
37+
("NewSuggestionNotificaton", "Suggestion was added"),
38+
("LanguageTranslatedNotificaton", "Language was translated"),
39+
("ComponentTranslatedNotificaton", "Component was translated"),
40+
("NewCommentNotificaton", "Comment was added"),
41+
("MentionCommentNotificaton", "You were mentioned in a comment"),
42+
(
43+
"LastAuthorCommentNotificaton",
44+
"Your translation received a comment",
45+
),
46+
("TranslatedStringNotificaton", "String was edited by user"),
47+
("ApprovedStringNotificaton", "String was approved"),
48+
("ChangedStringNotificaton", "String was changed"),
49+
(
50+
"NewTranslationNotificaton",
51+
"New language was added or requested",
52+
),
53+
(
54+
"NewComponentNotificaton",
55+
"New translation component was created",
56+
),
57+
("NewAnnouncementNotificaton", "Announcement was published"),
58+
("NewAlertNotificaton", "New alert emerged in a component"),
59+
("MergeFailureNotification", "Repository operation failed"),
60+
("PendingSuggestionsNotification", "Pending suggestions exist"),
61+
("ToDoStringsNotification", "Unfinished strings exist"),
62+
],
63+
max_length=100,
64+
),
65+
),
66+
]

0 commit comments

Comments
 (0)