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

Sat, 22 May 2021 18:51:46 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 22 May 2021 18:51:46 +0200
branch
eric7
changeset 8356
68ec9c3d4de5
parent 8318
962bce857696
child 8358
144a6b854f70
permissions
-rw-r--r--

Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.

# -*- coding: utf-8 -*-

# Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Package containing the various translation engines.
"""

import os

from PyQt6.QtCore import QCoreApplication
from PyQt6.QtGui import QIcon

from E5Gui.EricApplication import ericApp

import UI.PixmapCache


def supportedEngineNames():
    """
    Module function to get the list of supported translation engines.
    
    @return names of supported engines (list of string)
    """
    return ["googlev1", "mymemory", "glosbe", "promt", "yandex", "googlev2",
            "microsoft", "deepl", "ibm_watson"]


def engineDisplayName(name):
    """
    Module function to get a translated name for an engine.
    
    @param name name of a translation engine (string)
    @return translated engine name (string)
    """
    return {
        "googlev1":
            QCoreApplication.translate("TranslatorEngines", "Google V.1"),
        "googlev2":
            QCoreApplication.translate("TranslatorEngines", "Google V.2"),
        "mymemory":
            QCoreApplication.translate("TranslatorEngines", "MyMemory"),
        "glosbe":
            QCoreApplication.translate("TranslatorEngines", "Glosbe"),
        "promt":
            QCoreApplication.translate("TranslatorEngines", "PROMT"),
        "yandex":
            QCoreApplication.translate("TranslatorEngines", "Yandex"),
        "microsoft":
            QCoreApplication.translate("TranslatorEngines", "Microsoft"),
        "deepl":
            QCoreApplication.translate("TranslatorEngines", "DeepL Pro"),
        "ibm_watson":
            QCoreApplication.translate("TranslatorEngines", "IBM Watson")
    }.get(
        name,
        QCoreApplication.translate(
            "TranslatorEngines", "Unknow translation service name ({0})"
        ).format(name)
    )


def getTranslationEngine(name, plugin, parent=None):
    """
    Module function to instantiate an engine object for the named service.
    
    @param name name of the online translation service (string)
    @param plugin reference to the plugin object (TranslatorPlugin)
    @param parent reference to the parent object
    @return translation engine (TranslatorEngine)
    """
    if name == "googlev1":
        from .GoogleV1Engine import GoogleV1Engine
        engine = GoogleV1Engine(plugin, parent)
    elif name == "mymemory":
        from .MyMemoryEngine import MyMemoryEngine
        engine = MyMemoryEngine(plugin, parent)
    elif name == "glosbe":
        from .GlosbeEngine import GlosbeEngine
        engine = GlosbeEngine(plugin, parent)
    elif name == "promt":
        from .PromtEngine import PromtEngine
        engine = PromtEngine(plugin, parent)
    elif name == "yandex":
        from .YandexEngine import YandexEngine
        engine = YandexEngine(plugin, parent)
    elif name == "googlev2":
        from .GoogleV2Engine import GoogleV2Engine
        engine = GoogleV2Engine(plugin, parent)
    elif name == "microsoft":
        from .MicrosoftEngine import MicrosoftEngine
        engine = MicrosoftEngine(plugin, parent)
    elif name == "deepl":
        from .DeepLEngine import DeepLEngine
        engine = DeepLEngine(plugin, parent)
    elif name == "ibm_watson":
        from .IbmWatsonEngine import IbmWatsonEngine
        engine = IbmWatsonEngine(plugin, parent)
    else:
        engine = None
    return engine


def getEngineIcon(name):
    """
    Module function to get the icon of the named engine.
    
    @param name name of the translation engine
    @type str
    @return engine icon
    @rtype QIcon
    """
    iconSuffix = "dark" if ericApp().usesDarkPalette() else "light"
    if name in supportedEngineNames():
        icon = UI.PixmapCache.getIcon(os.path.join(
            os.path.dirname(__file__), "..", "icons", "engines",
            "{0}-{1}".format(name, iconSuffix)))
        if icon.isNull():
            # try variant without suffix
            icon = UI.PixmapCache.getIcon(os.path.join(
                os.path.dirname(__file__), "..", "icons", "engines",
                "{0}".format(name)))
        return icon
    else:
        return QIcon()


def getKeyUrl(name):
    """
    Module function to get an URL to request a user key.
    
    @param name name of the online translation service (string)
    @return key request URL (string)
    """
    return {
        "googlev2":
            "https://console.developers.google.com/",
        "mymemory":
            "http://mymemory.translated.net/doc/keygen.php",
        "yandex":
            "http://api.yandex.com/key/form.xml?service=trnsl",
        "microsoft":
            "https://portal.azure.com",
        "deepl":
            "https://www.deepl.com/pro-registration.html",
        "ibm_watson":
            "https://www.ibm.com/watson/services/language-translator/"
    }.get(name, "")

eric ide

mercurial