--- a/src/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/__init__.py Wed Nov 09 08:53:26 2022 +0100 +++ b/src/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/__init__.py Wed Nov 09 09:42:19 2022 +0100 @@ -7,6 +7,8 @@ Package containing the various translation engines. """ +import contextlib +import importlib import os from PyQt6.QtCore import QCoreApplication @@ -72,37 +74,22 @@ @return translation engine @rtype TranslatorEngine """ - if name == "deepl": - from .DeepLEngine import DeepLEngine # __IGNORE_WARNING_I101__ - - engine = DeepLEngine(plugin, parent) - elif name == "googlev1": - from .GoogleV1Engine import GoogleV1Engine # __IGNORE_WARNING_I101__ - - engine = GoogleV1Engine(plugin, parent) - elif name == "googlev2": - from .GoogleV2Engine import GoogleV2Engine # __IGNORE_WARNING_I101__ - - engine = GoogleV2Engine(plugin, parent) - elif name == "ibm_watson": - from .IbmWatsonEngine import IbmWatsonEngine # __IGNORE_WARNING_I101__ + engineMapping = { + "deepl": ".DeepLEngine", + "googlev1": ".GoogleV1Engine", + "googlev2": ".GoogleV2Engine", + "ibm_watson": ".IbmWatsonEngine", + "microsoft": ".MicrosoftEngine", + "mymemory": ".MyMemoryEngine", + "yandex": ".YandexEngine", + } - engine = IbmWatsonEngine(plugin, parent) - elif name == "microsoft": - from .MicrosoftEngine import MicrosoftEngine # __IGNORE_WARNING_I101__ - - engine = MicrosoftEngine(plugin, parent) - elif name == "mymemory": - from .MyMemoryEngine import MyMemoryEngine # __IGNORE_WARNING_I101__ + with contextlib.suppress(KeyError): + mod = importlib.import_module(engineMapping[name], __package__) + if mod: + return mod.createEngine(plugin, parent) - engine = MyMemoryEngine(plugin, parent) - elif name == "yandex": - from .YandexEngine import YandexEngine # __IGNORE_WARNING_I101__ - - engine = YandexEngine(plugin, parent) - else: - engine = None - return engine + return None def getEngineIcon(name):