src/eric7/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/__init__.py

branch
eric7
changeset 9495
28ab5f487f71
parent 9482
a2bc06a54d9d
child 9653
e67609152c5e
--- 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):

eric ide

mercurial