Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 27 additions & 18 deletions addon/globalPlugins/instantTranslate/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from .interface import InstantTranslateSettingsPanel
from .langslist import g
from .speechOnDemand import getSpeechOnDemandParameter, executeWithSpeakOnDemand
from locale import getdefaultlocale
from locale import getlocale
from time import sleep
from tones import beep
from .translator import Translator
Expand All @@ -36,29 +36,32 @@
from speech import LangChangeCommand
import braille
import wx
import speech
import speechViewer
from versionInfo import version_year
try:
# For NVDA 2021.1 and above
from speech import speech
except ImportError:
# For NVDA 2020.4 and below
import speech


_curAddon = addonHandler.getCodeAddon()
addonName = _curAddon.name.lower()
_addonSummary = _curAddon.manifest['summary']
addonHandler.initTranslation()

lo_lang = getdefaultlocale()
s = lo_lang[0]
if s == "zh_HK":
lo_lang = "zh-TW"
elif s.startswith("zh"):
lo_lang = s.replace('_', '-')
else:
lo_lang = s[0:s.find("_")]

speechModule = speech.speech if version_year>=2021 else speech
def getLocaleLanguage():
lang, _unused = getlocale()
if lang == "zh_HK":
return "zh-TW"
elif lang.startswith("zh"):
return lang.replace('_', '-')
else:
return lang.split("_")[0]

confspec = {
"from": "string(default=auto)",
"into": f"string(default={lo_lang})",
"into": f"string(default={getLocaleLanguage()})",
"swap": "string(default=en)",
"copytranslatedtext": "boolean(default=true)",
"autoswap": "boolean(default=true)",
Expand Down Expand Up @@ -112,8 +115,8 @@ def __init__(self, *args, **kwargs):
self.lastTranslation = None
InstantTranslateSettingsPanel.addonConf = self.addonConf
gui.settingsDialogs.NVDASettingsDialog.categoryClasses.append(InstantTranslateSettingsPanel)
self._speak = speechModule.speak
speechModule.speak = self._localSpeak
self._speak = speech.speak
speech.speak = self._localSpeak
self.lastSpokenText = ''
self.settings = {"lang_from": "from", "lang_to": "into", "lang_swap": "swap", "copyTranslation": "copytranslatedtext", "autoSwap": "autoswap", "isAutoSwapped": "isautoswapped", "replaceUnderscores": "replaceUnderscores", "useMirror": "useMirror"}
[setattr(self.__class__, propertyMethod, property(lambda self, propertyName=propertyName: self.addonConf[propertyName], lambda self, value, propertyName=propertyName: self.addonConf.__setitem__(propertyName, value))) for propertyMethod, propertyName in self.settings.items()]
Expand Down Expand Up @@ -150,7 +153,7 @@ def script_ITLayer(self, gesture):

def terminate(self):
gui.settingsDialogs.NVDASettingsDialog.categoryClasses.remove(InstantTranslateSettingsPanel)
speechModule.speak = self._speak
speech.speak = self._speak

@scriptHandler.script(
# Translators: message presented in input help mode, when user presses the shortcut keys for this addon.
Expand Down Expand Up @@ -367,7 +370,13 @@ def script_displayHelp(self, gesture):
description=_("Opens Instant Translate settings dialog."),
)
def script_showSettings(self, gesture):
wx.CallAfter(gui.mainFrame._popupSettingsDialog, gui.settingsDialogs.NVDASettingsDialog, InstantTranslateSettingsPanel)
try:
# NVDA version >= 2023.2
popupSettingsDialog = gui.mainFrame.popupSettingsDialog
except:
# NVDA version < 2023.2
popupSettingsDialog = gui.mainFrame._popupSettingsDialog
wx.CallAfter(popupSettingsDialog, gui.settingsDialogs.NVDASettingsDialog, InstantTranslateSettingsPanel)

@scriptHandler.script(
# Translators: Presented in input help mode.
Expand Down
12 changes: 10 additions & 2 deletions addon/globalPlugins/instantTranslate/donate_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,26 @@

import addonHandler
import gui
try:
# NVDA version >= 2025.1
from gui.message import MessageDialog, DialogType
DIALOG_TYPE_WARNING = DialogType.WARNING
except ImportError:
# NVDA version < 2025.1
from gui.nvdaControls import MessageDialog
DIALOG_TYPE_WARNING = MessageDialog.DIALOG_TYPE_WARNING
import webbrowser
import wx

addonHandler.initTranslation()


class DonationDialog(gui.nvdaControls.MessageDialog):
class DonationDialog(MessageDialog):
YOOMONEY_URL = "https://yoomoney.ru/to/4100117727255296"
PAYPAL_URL = "https://paypal.me/gozaltech"

def __init__(self, parent, title, message):
super().__init__(parent, title, message, dialogType=gui.nvdaControls.MessageDialog.DIALOG_TYPE_WARNING)
super().__init__(parent, title, message, dialogType=DIALOG_TYPE_WARNING)

def _addButtons(self, buttonHelper):
paypalBtn = buttonHelper.addButton(self, label=_("Donate via Paypal"), name="PAYPAL_URL")
Expand Down