Coverage for app/venv/lib/python3.14/site-packages/weblate/trans/management/commands/list_translators.py: 0%
26 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
1# Copyright © Michal Čihař <michal@weblate.org>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
4from __future__ import annotations
6from typing import TYPE_CHECKING
8from weblate.trans.management.commands import WeblateComponentCommand
10if TYPE_CHECKING:
11 from django.core.management.base import CommandParser
14class Command(WeblateComponentCommand):
15 help = "List translators for a component"
17 def add_arguments(self, parser: CommandParser) -> None:
18 super().add_arguments(parser)
19 parser.add_argument(
20 "--language-code",
21 action="store_true",
22 dest="code",
23 default=False,
24 help="Use language code instead of language name",
25 )
27 def handle(self, *args, **options) -> None:
28 data = []
29 for component in self.get_components(*args, **options):
30 for translation in component.translation_set.iterator():
31 authors = translation.change_set.authors_list()
32 if not authors:
33 continue
34 if options["code"]:
35 key = translation.language.code
36 else:
37 key = translation.language.name
38 data.append({key: sorted(set(authors))})
39 for language in data:
40 name, translators = language.popitem()
41 self.stdout.write(f"[{name}]\n")
42 for translator in translators:
43 self.stdout.write("{1} <{0}>\n".format(*translator))