Coverage for app/venv/lib/python3.14/site-packages/weblate/memory/management/commands/import_memory.py: 0%
30 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 pathlib import Path
7from typing import TYPE_CHECKING
9from django.core.management.base import CommandError
11from weblate.memory.models import Memory, MemoryImportError
12from weblate.utils.management.base import BaseCommand
14if TYPE_CHECKING:
15 from django.core.management.base import CommandParser
18class Command(BaseCommand):
19 """Command for importing translation memory."""
21 help = "imports translation memory"
23 def add_arguments(self, parser: CommandParser) -> None:
24 super().add_arguments(parser)
25 parser.add_argument(
26 "--language-map",
27 help="Map language codes in the TMX to Weblate, for example en_US:en",
28 )
29 parser.add_argument(
30 "--source-language",
31 required=False,
32 help="Source language of the document when not specified in file",
33 )
34 parser.add_argument(
35 "--target-language",
36 required=False,
37 help="Target language of the document when not specified in file",
38 )
40 parser.add_argument("file", type=Path, help="File to import (TMX or JSON)")
42 def handle(self, *args, **options) -> None:
43 """Perform translation memory import."""
44 langmap = None
45 if options["language_map"]:
46 langmap = dict(z.split(":", 1) for z in options["language_map"].split(","))
48 try:
49 with options["file"].open("rb") as handle:
50 try:
51 Memory.objects.import_file(
52 None,
53 handle,
54 langmap,
55 source_language=options["source_language"],
56 target_language=options["target_language"],
57 )
58 except MemoryImportError as error:
59 msg = f"Import failed: {error}"
60 raise CommandError(msg) from error
61 except OSError as error:
62 msg = f"Could not open file: {error}"
63 raise CommandError(msg) from error