Skip to content
Open
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
40 changes: 24 additions & 16 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,37 @@
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("_")]
def getLoLang():
lang = getlocale()[0]

if not lang:
return None

if lang == "zh_HK":
return "zh-TW"
elif lang.startswith("zh"):
return lang.replace('_', '-')
else:
return lang.split('_', 1)[0]

speechModule = speech.speech if version_year>=2021 else speech

confspec = {
"from": "string(default=auto)",
"into": f"string(default={lo_lang})",
"into": f"string(default={getLoLang()})",
"swap": "string(default=en)",
"copytranslatedtext": "boolean(default=true)",
"autoswap": "boolean(default=true)",
Expand Down Expand Up @@ -112,8 +120,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 +158,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