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

1# Copyright © Michal Čihař <michal@weblate.org> 

2# 

3# SPDX-License-Identifier: GPL-3.0-or-later 

4from __future__ import annotations 

5 

6from typing import TYPE_CHECKING 

7 

8from weblate.trans.management.commands import WeblateComponentCommand 

9 

10if TYPE_CHECKING: 

11 from django.core.management.base import CommandParser 

12 

13 

14class Command(WeblateComponentCommand): 

15 help = "List translators for a component" 

16 

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 ) 

26 

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))