Ejemplo n.º 1
0
 def __init__(self, parent):
     super(InsertSymbolDialog, self).__init__(parent, )
     # Translators: This is the label for the Insert Symbol dialog.
     # %s is replaced by the language for which symbol pronunciation is being edited.
     self.SetTitle(
         _("Insert Symbol (%s)") % languageHandler.getLanguageDescription(
             self.symbolProcessor.locale))
Ejemplo n.º 2
0
 def script_showCaretSymbol(self, gesture):
     obj = api.getFocusObject()
     treeInterceptor = obj.treeInterceptor
     if isinstance(treeInterceptor,
                   treeInterceptorHandler.DocumentTreeInterceptor
                   ) and not treeInterceptor.passThrough:
         obj = treeInterceptor
     try:
         info = obj.makeTextInfo(textInfos.POSITION_CARET)
     except:
         info = obj.makeTextInfo(textInfos.POSITION_FIRST)
     info.expand(textInfos.UNIT_CHARACTER)
     curLanguage = self._getCurrentLanguageForTextInfo(info)
     text = info.text
     expandedSymbol = characterProcessing.processSpeechSymbol(
         curLanguage, text)
     if expandedSymbol == text:
         # Translators: Reported when there is no replacement for the symbol at the position of the caret.
         ui.message(_("No symbol replacement"))
         return
     # Translators: Character and its replacement used from the "Review current Symbol" command. Example: "Character: ? Replacement: question"
     message = _("Character: {}\nReplacement: {}").format(
         text, expandedSymbol)
     languageDescription = languageHandler.getLanguageDescription(
         curLanguage)
     # Translators: title for expanded symbol dialog. Example: "Expanded symbol (English)"
     title = _("Symbol at the caret position ({})").format(
         languageDescription)
     ui.browseableMessage(message, title)
Ejemplo n.º 3
0
	def test_langsListExpectedFormat(self):
		"""Ensures that for all languages except user default each element of the returned list consists of
		language code, and language  description containing language code
		(necessary since lang descriptions are localized to the default Windows language)."""
		for langCode, langDesc in languageHandler.getAvailableLanguages()[1:]:
			self.assertIn(langCode, langDesc)
			self.assertIn(languageHandler.getLanguageDescription(langCode), langDesc)
Ejemplo n.º 4
0
 def onOCRSettings(self, event):
     # Pop a dialog with available OCR languages to set
     langs = sorted(getAvailableTesseractLanguages())
     curlang = getConfig()['language']
     try:
         select = langs.index(curlang)
     except ValueError:
         select = langs.index('eng')
     choices = [
         languageHandler.getLanguageDescription(
             tesseractLangsToLocales[lang]) or tesseractLangsToLocales[lang]
         for lang in langs
     ]
     log.debug("Available OCR languages: %s", ", ".join(choices))
     dialog = wx.SingleChoiceDialog(gui.mainFrame,
                                    _("Select OCR Language"),
                                    _("OCR Settings"),
                                    choices=choices)
     dialog.SetSelection(select)
     gui.mainFrame.prePopup()
     ret = dialog.ShowModal()
     gui.mainFrame.postPopup()
     if ret == wx.ID_OK:
         lang = langs[dialog.GetSelection()]
         getConfig()['language'] = lang
         try:
             getConfig().write()
         except IOError:
             log.error("Error writing ocr configuration", exc_info=True)
Ejemplo n.º 5
0
    def onImageDescriberSettings(self, event):
        langs = sorted(supportedLocales)
        curlang = getConfig()['language']

        try:
            select = langs.index(curlang)
        except ValueError:
            select = langs.index('en')

        choices = [
            languageHandler.getLanguageDescription(locale) or locale
            for locale in supportedLocales
        ]
        dialog = wx.SingleChoiceDialog(
            gui.mainFrame,
            _("Select image description language, other languages than english are more prone to translation errors"
              ),
            _("Image describer settings"),
            choices=choices)
        dialog.SetSelection(select)
        gui.mainFrame.prePopup()
        ret = dialog.ShowModal()
        gui.mainFrame.postPopup()

        if ret == wx.ID_OK:
            lang = langs[dialog.GetSelection()]
            getConfig()['language'] = lang

            try:
                getConfig().write()
            except IOError:
                log.error("Error writing image describer configuration",
                          exc_info=True)
 def script_sayCurKeyboardLanguage(self, gesture):
     import winUser
     import scriptHandler
     import ctypes
     import languageHandler
     # Getting the handle of the foreground window.
     curWindow = winUser.getForegroundWindow()
     # Getting the threadID.
     threadID = winUser.getWindowThreadProcessID(curWindow)[1]
     # Getting the keyboard layout iD.
     klID = winUser.getKeyboardLayout(threadID)
     # Extract language ID from klID.
     lID = klID & (2**16 - 1)
     # Getting the current keyboard language description from ctypes.windll.kernel32.GetLocaleInfoW.
     # Some language IDs are not available in the local.windows_locale dictionary, it is best to search their description directly in Windows itself
     buf = ctypes.create_unicode_buffer(1024)
     res = ctypes.windll.kernel32.GetLocaleInfoW(
         lID, languageHandler.LOCALE_SLANGUAGE, buf, 1024)
     desc = buf.value
     defaultOsl = locale.getdefaultlocale()[0]
     repeatCount = scriptHandler.getLastScriptRepeatCount()
     if repeatCount == 0:
         ui.message(desc)
     else:
         ui.message(languageHandler.getLanguageDescription(defaultOsl))
Ejemplo n.º 7
0
    def makeSettings(self, sizer):
        settingsSizerHelper = gui.guiHelper.BoxSizerHelper(self, sizer=sizer)

        langs = sorted(self.tlangs)
        choices = [
            languageHandler.getLanguageDescription(
                tesseractLangsToLocales[lang]) or tesseractLangsToLocales[lang]
            for lang in langs
        ]
        log.debug("Available OCR languages: %s", ", ".join(choices))

        curlang = getConfig()['language']
        try:
            select = langs.index(curlang)
        except ValueError:
            select = langs.index('en')
        self.language = settingsSizerHelper.addLabeledControl(
            _("Select OCR Language"), wx.Choice, choices=choices)
        self.language.SetSelection(select)

        curlang2 = getConfig()['language2']
        try:
            select2 = langs.index(curlang2)
        except ValueError:
            select2 = langs.index('en')
        self.language2 = settingsSizerHelper.addLabeledControl(
            _("Select second OCR Language"), wx.Choice, choices=choices)
        self.language2.SetSelection(select2)
Ejemplo n.º 8
0
def g(code):
    """Return an NVDA language description for code, if one is available. Otherwise, return the one from needed_codes. If that fails, return the code."""
    res = getLanguageDescription(code)
    if res is not None: return res
    if code in needed_codes:
        return needed_codes[code]
    return code
Ejemplo n.º 9
0
 def getDocumentationLanguages(self):
     langs = {}
     docDir = os.path.join(baseDir, "..", "..", "doc", "")
     ls = os.listdir(docDir)
     for f in ls:
         if os.path.isfile(os.path.join(docDir,
                                        f)) and f.lower().endswith(".md"):
             lang = f.replace(".md", '')
             langDesc = languageHandler.getLanguageDescription(lang)
             if langDesc: langs[lang] = langDesc
     return langs
Ejemplo n.º 10
0
    def makeSettings(self, sizer):
        settingsSizerHelper = gui.guiHelper.BoxSizerHelper(self, sizer=sizer)

        self.sound = wx.CheckBox(self,
                                 label=_("&Play sound during recognition"))
        self.sound.SetValue(getConfig()["sound"])
        settingsSizerHelper.addItem(self.sound)

        self.textonly = wx.CheckBox(self, label=_("Recognize &text"))
        self.textonly.SetValue(getConfig()["textonly"])
        settingsSizerHelper.addItem(self.textonly)

        self.imageonly = wx.CheckBox(self, label=_("Recognize &images"))
        self.imageonly.SetValue(getConfig()["imageonly"])
        settingsSizerHelper.addItem(self.imageonly)

        self.qronly = wx.CheckBox(self, label=_("Read &QR / bar code"))
        self.qronly.SetValue(getConfig()["qronly"])
        settingsSizerHelper.addItem(self.qronly)

        self.trtext = wx.CheckBox(self, label=_("Translate text"))
        self.trtext.SetValue(getConfig()["trtext"])
        settingsSizerHelper.addItem(self.trtext)

        langs = sorted(supportedLocales)
        curlang = getConfig()['language']
        try:
            select = langs.index(curlang)
        except ValueError:
            select = langs.index('en')
        choices = [
            languageHandler.getLanguageDescription(locale) or locale
            for locale in supportedLocales
        ]
        self.language = settingsSizerHelper.addLabeledControl(_(
            "Select image description language, other languages than english are more prone to translation errors"
        ),
                                                              wx.Choice,
                                                              choices=choices)
        self.language.SetSelection(select)

        def on_open_visionbot_ru_button(self):
            import webbrowser as wb
            wb.open("https://visionbot.ru/?fromaddon=1&addonversion=" +
                    CloudVisionVersion)

        self.open_visionbot_ru_button = wx.Button(self,
                                                  label=_("Open site") +
                                                  " VISIONBOT.RU")
        self.open_visionbot_ru_button.Bind(wx.EVT_BUTTON,
                                           on_open_visionbot_ru_button)
        settingsSizerHelper.addItem(self.open_visionbot_ru_button)
Ejemplo n.º 11
0
 def _makeVoiceInfo(self, v):
     localeName = self._languageNamesToLocales.get(v.szLanguage.decode(),
                                                   None)
     langDescription = None
     # if we have the locale name use the localized language description from windows:
     if localeName is not None:
         langDescription = languageHandler.getLanguageDescription(
             localeName)
     if not langDescription:
         # For some languages (i.g. scotish english) windows doesn't gives us any description.
         # The synth returned something in english, it is better than nothing.
         langDescription = v.szLanguage.decode()
     name = "%s - %s" % (v.szVoiceName.decode(), langDescription)
     return VoiceInfo(v.szVoiceName.decode(), name, localeName or None)
Ejemplo n.º 12
0
 def localizedName(self):
     """Returns localized name of the language with which this object was initialized."""
     res = self._localizedName
     if res is None:
         res = languageHandler.getLanguageDescription(self._NVDALocaleName)
         if res:
             self.__class__.WindowsLocalizedLangNamesToTesseractLocales[
                 res] = self._TesseractLocaleName
             self.__class__.TesseractLocalesToWindowsLocalizedLangNames[
                 self._TesseractLocaleName] = res
         else:
             # If there is no localized name for the given locale just return a language code.
             # This is better than no name at all.
             res = self._NVDALocaleName
     return res
Ejemplo n.º 13
0
    def getName(self, code: str = '') -> str:
        """Full language name.
		If it is not possible to determine, a short language code is returned.
		It is designed as a separate method for redefining it in child classes of services
		because some services use language codes that do not comply with the ISO standard.
		@param code: language code if not specified, the value of the internal field of the class is taken
		@type code: str
		@return: language name
		@rtype: str
		"""
        lang = code or self._lang
        name = getLanguageDescription(lang)
        if self._lang == '':
            name = "- %s -" % name
        if not name:
            name = self._names.get(lang)
        return name or lang
Ejemplo n.º 14
0
 def script_showReviewCursorSymbol(self, gesture):
     info = api.getReviewPosition().copy()
     info.expand(textInfos.UNIT_CHARACTER)
     curLanguage = self._getCurrentLanguageForTextInfo(info)
     text = info.text
     expandedSymbol = characterProcessing.processSpeechSymbol(
         curLanguage, text)
     if expandedSymbol == text:
         # Translators: Reported when there is no replacement for the symbol at the position of the review cursor.
         ui.message(_("No symbol replacement"))
         return
     # Translators: Character and its replacement used from the "Review current Symbol" command. Example: "Character: ? Replacement: question"
     message = _("Character: {}\nReplacement: {}").format(
         text, expandedSymbol)
     languageDescription = languageHandler.getLanguageDescription(
         curLanguage)
     # Translators: title for expanded symbol dialog. Example: "Expanded symbol (English)"
     title = _("Symbol at the review cursor position ({})").format(
         languageDescription)
     ui.browseableMessage(message, title)
Ejemplo n.º 15
0
def getAvailableLanguages(path):
    """generates a list of locale names, plus their full localized language and country names.
	@rtype: list of tuples
	"""
    #Make a list of all the locales found in NVDA's locale dir
    l = [x for x in os.listdir(path + '/locale') if not x.startswith('.')]
    l = [x for x in l if os.path.isfile(path + '/locale/%s/unicode.dic' % x)]
    #Make sure that en (english) is in the list as it may not have any locale files, but is default
    if 'en' not in l:
        l.append('en')
        l.sort()
    #For each locale, ask Windows for its human readable display name
    d = []
    for i in l:
        desc = getLanguageDescription(i)
        label = "%s, %s" % (desc, i) if desc else i
        d.append(label)
    #include a 'user default, windows' language, which just represents the default language for this user account
    l.append("Windows")
    # Translators: the label for the Windows default NVDA interface language.
    d.append(_("User default"))
    #return a zipped up version of both the lists (a list with tuples of locale,label)
    return list(zip(l, d))
Ejemplo n.º 16
0
 def __init__(self, id):
     """Given a language ID (locale name) the description is automatically calculated."""
     displayName = languageHandler.getLanguageDescription(id)
     super(LanguageInfo, self).__init__(id, displayName)
Ejemplo n.º 17
0
 def __init__(self, ID):
     """Given a language ID (locale name) the description is automatically calculated."""
     name = languageHandler.getLanguageDescription(ID)
     super(LanguageInfo, self).__init__(ID, name)
Ejemplo n.º 18
0
	def __init__(self,ID):
		"""Given a language ID (locale name) the description is automatically calculated."""
		name=languageHandler.getLanguageDescription(ID)
		super(LanguageInfo,self).__init__(ID,name)
Ejemplo n.º 19
0
    def makeSettings(self, settingsSizer):
        sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
        # Translators: Label of a  combobox used to choose a recognition language
        recogLanguageLabel = _("Recognition &language")
        # Get the dict of available langs
        self.availableLangs = {
            languageHandler.getLanguageDescription(
                tesseractLangsToLocales[lang])
            or tesseractLangsToLocales[lang]: lang
            for lang in getAvailableTesseractLanguages()
        }
        self.recogLanguageCB = sHelper.addLabeledControl(
            recogLanguageLabel,
            wx.Choice,
            choices=list(self.availableLangs.keys()),
            style=wx.CB_SORT)
        tessLangsToDescs = {v: k for k, v in self.availableLangs.items()}
        try:
            if config.conf["tesseractOCR"]["language"]:
                # Record exist, so use it...
                curlang = config.conf["tesseractOCR"]["language"]
                if curlang not in list(self.availableLangs.values()):
                    curlang = lng
        except:
            # Record do not exist, so use NVDA language
            curlang = lng
        try:
            # Get lang description
            select = tessLangsToDescs[curlang]
        except ValueError:
            # Do not exist, so use english...
            select = tessLangsToDescs['eng']
        except KeyError:
            # Do not exist, so use english...
            select = tessLangsToDescs['eng']
        # Get the index of the language
        select = self.recogLanguageCB.FindString(select)
        # Set selection to the index of lang
        self.recogLanguageCB.SetSelection(select)

        # Translators: Label of a  combobox used to choose a second recognition language
        recogLanguage2Label = _("&Second recognition language")
        self.recogLanguage2CB = sHelper.addLabeledControl(
            recogLanguage2Label,
            wx.Choice,
            choices=list(self.availableLangs.keys()),
            style=wx.CB_SORT)
        tessLangsToDescs = {v: k for k, v in self.availableLangs.items()}
        try:
            if config.conf["tesseractOCR"]["language2"]:
                # Record exist, so use it...
                curlang = config.conf["tesseractOCR"]["language2"]
                if curlang not in list(self.availableLangs.keys()):
                    pass
                select = tessLangsToDescs[curlang]
                # Get the index of the language
                select = self.recogLanguage2CB.FindString(select)
                # Set selection to the index of lang
                self.recogLanguage2CB.SetSelection(select)
        except:
            pass

        # Translators: A button to delete the second language key
        self.delButton = sHelper.addItem(
            wx.Button(self, label=_("&Forget second language")))
        self.delButton.Bind(wx.EVT_BUTTON, self.delSecondLang)

        global missingTrainedData, availableTrainedDataList, tesseractLangsList
        # Get the available trainedData from the folder
        availableTrainedDataList = getAvailableTesseractLanguages()
        tesseractLangsList = []
        for lang in tesseractLangs:
            tesseractLangsList.append(lang)
        missingTrainedData = []
        n = 0
        while n < len(tesseractLangsList):
            if tesseractLangsList[n] not in availableTrainedDataList:
                # False, so join to missing trainedData list...
                missingTrainedData.append(tesseractLangsList[n])
                # And delete from available trainedData list
                del tesseractLangsList[n]
                # To allow to check all list since we have deleted the item with number n...
                n -= 1
            n += 1

        # Translators: Label of a  combobox used to choose a recognition language to import the data files
        importLanguageLabel = _("&Import language")
        self.availableTrainedDataDict = {
            languageHandler.getLanguageDescription(
                tesseractLangsToLocales[lang])
            or tesseractLangsToLocales[lang]: lang
            for lang in missingTrainedData
        }
        self.importLanguageCB = sHelper.addLabeledControl(
            importLanguageLabel,
            wx.Choice,
            choices=list(self.availableTrainedDataDict.keys()),
            style=wx.CB_SORT)

        # Translators: Label of a  combobox used to choose a type of document to recognize
        recogDocTypeLabel = _("&Type of document")
        DOC_OSD = 1
        DOC_ALL = 3
        DOC_TEXT = 6
        DOC_LABELS = {
            # Translators: The entry for various docs,  with auto-orientation...
            DOC_OSD: pgettext("docType", _("With auto-orientation")),
            # Translators: The entry for various types of docs, invoices, bills, magazines and so on...
            DOC_ALL: pgettext("docType", _("Various")),
            # Translators: The entry for text only, like books and letters for instance...
            DOC_TEXT: pgettext("docType", _("Text"))
        }
        self.docTypesLabel = (DOC_OSD, DOC_ALL, DOC_TEXT)
        self.docTypesChoices = [
            DOC_LABELS[Type] for Type in self.docTypesLabel
        ]
        self.recogDocTypeCB = sHelper.addLabeledControl(
            recogDocTypeLabel,
            wx.Choice,
            choices=list(self.docTypesChoices),
            style=wx.CB_SORT)
        curLevel = int(config.conf["tesseractOCR"]["docType"])
        self.recogDocTypeCB.SetSelection(self.docTypesLabel.index(curLevel))

        # Translators: Checkbox name in the configuration dialog
        self.shouldUpdateChk = sHelper.addItem(
            wx.CheckBox(self, label=_("Check for updates at startup")))
        self.shouldUpdateChk.SetValue(config.conf[ourAddon.name]["isUpgrade"])
        if config.conf.profiles[-1].name:
            self.shouldUpdateChk.Disable()
Ejemplo n.º 20
0
 def _getLocaleReadableName(self, locale):
     description = languageHandler.getLanguageDescription(locale)
     return "%s" % (description) if description else locale
Ejemplo n.º 21
0
	def __init__(self, id):
		"""Given a language ID (locale name) the description is automatically calculated."""
		displayName = languageHandler.getLanguageDescription(id)
		super(LanguageInfo,self).__init__(id, displayName)