From a2e6420be4739c185000f5919ee34407238130e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 2 Jan 2020 09:25:52 +0100
Subject: [PATCH 01/87] Initial implementation
---
.../globalPlugins/brailleExtender/__init__.py | 6 +++
.../brailleExtender/converter.py | 43 +++++++++++++++++++
2 files changed, 49 insertions(+)
create mode 100644 addon/globalPlugins/brailleExtender/converter.py
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 182cedee..00e8a5f9 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -45,6 +45,7 @@
import ui
import versionInfo
import virtualBuffers
+from . import converter
from . import configBE
config.conf.spec["brailleExtender"] = configBE.getConfspec()
from . import utils
@@ -1377,6 +1378,10 @@ def script_showBrailleViewSaved(self, gesture):
else: ui.message(_("Buffer empty"))
script_showBrailleViewSaved.__doc__ = _("Show the saved braille view through a flash message.")+HLP_browseModeInfo
+ def script_converter(self, gesture):
+ gui.mainFrame._popupSettingsDialog(converter.Converter)
+ script_converter.__doc__ = _("Start braille converter")
+
# section autoTest
autoTestPlayed = False
autoTestTimer = None
@@ -1505,6 +1510,7 @@ def script_addDictionaryEntry(self, gesture):
__gestures["kb:nvda+alt+u"] = "translateInBRU"
__gestures["kb:nvda+alt+i"] = "charsToCellDescriptions"
__gestures["kb:nvda+alt+o"] = "cellDescriptionsToChars"
+ __gestures["kb:nvda+alt+p"] = "converter"
__gestures["kb:nvda+alt+y"] = "addDictionaryEntry"
__gestures["kb:nvda+shift+j"] = "toggleAttribra"
diff --git a/addon/globalPlugins/brailleExtender/converter.py b/addon/globalPlugins/brailleExtender/converter.py
new file mode 100644
index 00000000..f794606a
--- /dev/null
+++ b/addon/globalPlugins/brailleExtender/converter.py
@@ -0,0 +1,43 @@
+# coding: utf-8
+# Part of BrailleExtender addon for NVDA
+# Copyright 2016-2019 André-Abush CLAUSE, released under GPL.
+
+from __future__ import unicode_literals
+import gui
+import wx
+from logHandler import log
+import brailleTables
+import config
+
+class Converter(gui.settingsDialogs.SettingsDialog):
+
+ title = "Braille converter"
+ tables = brailleTables.listTables()
+ tablesFN = [table.fileName for table in tables if table.output]
+
+ def makeSettings(self, sizer):
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=sizer)
+ label = _("&Source type")
+ choices = [
+ "BRF",
+ "Braille Unicode",
+ "Dot patterns",
+ "Normal text"
+ ]
+ self.sourceType = sHelper.addItem(wx.RadioBox(self, label=label, choices=choices))
+ label = _("&Target type")
+ self.targetType = sHelper.addItem(wx.RadioBox(self, label=label, choices=choices))
+ self.sourceType.Bind(wx.EVT_RADIOBOX , self.onTypes)
+ self.targetType.Bind(wx.EVT_RADIOBOX , self.onTypes)
+ label = _("Braille table")
+ choices = [table.displayName for table in self.tables if table.output]
+ self.brailleTable = sHelper.addLabeledControl(label, wx.Choice, choices=choices)
+ self.onTypes()
+
+ def onTypes(self, evt=None):
+ if self.sourceType.GetSelection() == 3 or self.targetType.GetSelection() == 3:
+ self.brailleTable.Enable()
+ toSelect = self.tablesFN.index(config.conf["braille"]["translationTable"])
+ self.brailleTable.SetSelection(toSelect)
+ else:
+ self.brailleTable.Disable()
From 6e360dd2d58e1b7444ee384217abec947bed524e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 14 Jan 2020 16:39:32 +0100
Subject: [PATCH 02/87] Various code improvements
---
addon/globalPlugins/brailleExtender/patchs.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index e195fe37..6b5568ba 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -438,7 +438,7 @@ def _createTablesString(tablesList):
configBE.loadPreTable()
# applying patches
-braille.Region.update = update
+#braille.Region.update = update
braille.TextInfoRegion.previousLine = previousLine
braille.TextInfoRegion.nextLine = nextLine
inputCore.InputManager.executeGesture = executeGesture
From 2195a969c6cae653b36ae697f56cc47444e9c3fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Mon, 2 Dec 2019 21:16:19 +0100
Subject: [PATCH 03/87] First implementation of HUC converter HUC8 is
hard-enabled in this commit Bug (to fix): - cursor positions broken, - does
not work well with Python 2 (we probably disable the feature for NVDA 2019.2
and earlier) TODO: allow to choose/implement between other representation
(HUC6, liblouis-style, etc.)
---
.../globalPlugins/brailleExtender/__init__.py | 11 +-
.../globalPlugins/brailleExtender/configBE.py | 57 -----
addon/globalPlugins/brailleExtender/huc.py | 195 ++++++++++++++++++
addon/globalPlugins/brailleExtender/patchs.py | 174 +++++++++-------
.../globalPlugins/brailleExtender/settings.py | 4 -
addon/globalPlugins/brailleExtender/utils.py | 36 ----
6 files changed, 297 insertions(+), 180 deletions(-)
create mode 100644 addon/globalPlugins/brailleExtender/huc.py
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 4ff6adcf..9341669f 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -14,6 +14,8 @@
import os
import re
import subprocess
+import sys
+isPy3 = True if sys.version_info >= (3, 0) else False
import time
import urllib
import gui
@@ -50,6 +52,8 @@
config.conf.spec["brailleExtender"] = configBE.getConfspec()
from . import utils
from .updateCheck import *
+from . import dictionaries
+from . import huc
from . import patchs
from .common import *
@@ -131,8 +135,7 @@ def addTextWithFields_edit(self, info, formatConfig, isSelection=False):
fn(self, info, conf, isSelection)
def update(self):
- try: fn(self)
- except BaseException as e: log.error("Fatal error: %s" % e)
+ fn(self)
if not attribraEnabled(): return
DOT7 = 64
DOT8 = 128
@@ -651,7 +654,7 @@ def script_charsToCellDescriptions(self, gesture):
table = ''
if self.BRFMode: table = os.path.join(configBE.baseDir, "res", "brf.ctb").encode("UTF-8")
t = utils.getTextInBraille('', table)
- t = utils.unicodeBrailleToDescription(t)
+ t = huc.unicodeBrailleToDescription(t)
if not t.strip(): return ui.message(_("No text selection"))
ui.browseableMessage(t, _("Braille Unicode to cell descriptions")+(" (%.2f s)" % (time.time()-tm)))
script_charsToCellDescriptions.__doc__ = _("Convert text selection in braille cell descriptions and display it in a browseable message")
@@ -660,7 +663,7 @@ def script_cellDescriptionsToChars(self, gesture):
tm = time.time()
t = utils.getTextSelection()
if not t.strip(): return ui.message(_("No text selection"))
- t = utils.descriptionToUnicodeBraille(t)
+ t = huc.cellDescriptionsToUnicodeBraille(t)
ui.browseableMessage(t, _("Cell descriptions to braille Unicode")+(" (%.2f s)" % (time.time()-tm)))
script_cellDescriptionsToChars.__doc__ = _("Braille cell description to Unicode Braille. E.g.: in a edit field type '125-24-0-1-123-123'. Then select this text and execute this command")
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 0e85d397..40e1982f 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -347,63 +347,6 @@ def isContractedTable(table):
if brailleTables.listTables()[tablePos].contracted: return True
return False
-def loadPostTable():
- global postTable
- postTable = []
- postTableValid = True if config.conf["brailleExtender"]["postTable"] in tablesFN else False
- if postTableValid:
- postTable.append(os.path.join(brailleTables.TABLES_DIR, config.conf["brailleExtender"]["postTable"]).encode("UTF-8"))
- log.debug('Secondary table enabled: %s' % config.conf["brailleExtender"]["postTable"])
- else:
- if config.conf["brailleExtender"]["postTable"] != "None":
- log.error("Invalid secondary table")
- tableChangesFile = os.path.join(configDir, "brailleDicts", "undefinedChar.cti")
- defUndefinedChar = "undefined %s\n" % config.conf["brailleExtender"]["undefinedCharRepr"]
- if config.conf["brailleExtender"]["preventUndefinedCharHex"] and not os.path.exists(tableChangesFile):
- log.debug("File not found, creating undefined char file")
- createTableChangesFile(tableChangesFile, defUndefinedChar)
- if config.conf["brailleExtender"]["preventUndefinedCharHex"] and os.path.exists(tableChangesFile):
- f = open(tableChangesFile, "r")
- if f.read() != defUndefinedChar:
- log.debug("Difference, creating undefined char file...")
- if createTableChangesFile(tableChangesFile, defUndefinedChar):
- postTable.append(tableChangesFile.encode("UTF-8"))
- else:
- postTable.append(tableChangesFile.encode("UTF-8"))
- f.close()
-
-
-def createTableChangesFile(f, c):
- try:
- f = open(f, "w")
- f.write(c)
- f.close()
- return True
- except BaseException as e:
- log.error("Error while creating tab file (%s)" % e)
- return False
-
-def loadPreTable():
- global preTable
- preTable = []
- tableChangesFile = os.path.join(configDir, "brailleDicts", "changes.cti")
- defTab = 'space \\t ' + \
- ('0-' * int(config.conf["brailleExtender"]["tabSize_%s" % curBD]))[:-1] + '\n'
- if config.conf["brailleExtender"]['tabSpace'] and not os.path.exists(tableChangesFile):
- log.debug("File not found, creating table changes file")
- createTableChangesFile(tableChangesFile, defTab)
- if config.conf["brailleExtender"]['tabSpace'] and os.path.exists(tableChangesFile):
- f = open(tableChangesFile, "r")
- if f.read() != defTab:
- log.debug('Difference, creating tab file...')
- if createTableChangesFile(tableChangesFile, defTab):
- preTable.append(tableChangesFile.encode("UTF-8"))
- else:
- preTable.append(tableChangesFile.encode("UTF-8"))
- log.debug('Tab as spaces enabled')
- f.close()
- else: log.debug('Tab as spaces disabled')
-
def getKeyboardLayout():
if (config.conf["brailleExtender"]["keyboardLayout_%s" % curBD] is not None
and config.conf["brailleExtender"]["keyboardLayout_%s" % curBD] in iniProfile['keyboardLayouts'].keys()):
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
new file mode 100644
index 00000000..366777c4
--- /dev/null
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -0,0 +1,195 @@
+#!/usr/bin/env python3
+# coding: UTF-8
+from __future__ import print_function, unicode_literals
+import re
+import sys
+isPy3 = True if sys.version_info >= (3, 0) else False
+if not isPy3: chr = unichr
+
+HUC6_patterns = {
+ "⠿": (0x000000, 0x00FFFF),
+ "⠿": (0x010000, 0x01FFFF),
+ "⠿…⠇": (0x020000, 0x02FFFF),
+ "⠿…⠍": (0x030000, 0x03FFFF),
+ "⠿…⠝": (0x040000, 0x04FFFF),
+ "⠿…⠕": (0x050000, 0x05FFFF),
+ "⠿…⠏": (0x060000, 0x06FFFF),
+ "⠿…⠟": (0x070000, 0x07FFFF),
+ "⠿…⠗": (0x080000, 0x08FFFF),
+ "⠿…⠎": (0x090000, 0x09FFFF),
+ "⠿…⠌": (0x0A0000, 0x0AFFFF),
+ "⠿…⠜": (0x0B0000, 0x0BFFFF),
+ "⠿…⠖": (0x0C0000, 0x0CFFFF),
+ "⠿…⠆": (0x0D0000, 0x0DFFFF),
+ "⠿…⠔": (0x0E0000, 0x0EFFFF),
+ "⠿…⠄": (0x0F0000, 0x0FFFFF),
+ "⠿…⠥": (0x100000, 0x10FFFF),
+}
+
+HUC8_patterns = {
+ '⣥': (0x000000, 0x00FFFF),
+ '⣭': (0x010000, 0x01FFFF),
+ '⣽': (0x020000, 0x02FFFF),
+ "⣵⠾": (0x030000, 0x03FFFF),
+ "⣵⢾": (0x040000, 0x04FFFF),
+ "⣵⢞": (0x050000, 0x05FFFF),
+ "⣵⡾": (0x060000, 0x06FFFF),
+ "⣵⣾": (0x070000, 0x07FFFF),
+ "⣵⣞": (0x080000, 0x08FFFF),
+ "⣵⡺": (0x090000, 0x09FFFF),
+ "⣵⠺": (0x0A0000, 0x0AFFFF),
+ "⣵⢺": (0x0B0000, 0x0BFFFF),
+ "⣵⣚": (0x0C0000, 0x0CFFFF),
+ "⣵⡚": (0x0D0000, 0x0DFFFF),
+ "⣵⢚": (0x0E0000, 0x0EFFFF),
+ "⣵⠚": (0x0F0000, 0x0FFFFF),
+ "⣵⣡": (0x100000, 0x10FFFF)
+}
+
+hexVals = [
+ "245", '1', "12", "14",
+ "145", "15", "124", "1245",
+ "125", "24", "4", "45",
+ "25", '2', '5', '0'
+]
+
+print_ = print
+
+def cellDescToChar(cell):
+ if not re.match("^[0-8]+$", cell):
+ return '?'
+ toAdd = 0
+ for dot in cell:
+ toAdd += 1 << int(dot) - 1 if int(dot) > 0 else 0
+ return chr(0x2800 + toAdd)
+
+def charToCellDesc(ch):
+ """
+ Return a description of an unicode braille char
+ @param ch: the unicode braille character to describe
+ must be between 0x2800 and 0x28FF included
+ @type ch: str
+ @return: the list of dots describing the braille cell
+ @rtype: str
+ @example: "d" -> "145"
+ """
+ res = ""
+ if len(ch) != 1: raise ValueError("Param size can only be one char (currently: %d)" % len(ch))
+ p = ord(ch)
+ if p >= 0x2800 and p <= 0x28FF: p -= 0x2800
+ if p > 255: raise ValueError(r"It is not an unicode braille (%d)" % p)
+ dots ={1: 1, 2: 2, 4: 3, 8: 4, 16: 5, 32: 6, 64: 7, 128: 8}
+ i = 1
+ while p != 0:
+ if p - (128 / i) >= 0:
+ res += str(dots[(128/i)])
+ p -= (128 / i)
+ i *= 2
+ return res[::-1] if len(res) > 0 else '0'
+
+
+def unicodeBrailleToDescription(t, sep='-'):
+ return ''.join([('-'+charToCellDesc(ch)) if ord(ch) >= 0x2800 and ord(ch) <= 0x28FF and ch not in ['\n','\r'] else ch for ch in t]).strip(sep)
+
+
+def cellDescriptionsToUnicodeBraille(t):
+ return re.sub(r'([0-8]+)\-?', lambda m: cellDescToChar(m.group(1)), t)
+
+
+def getPrefixAndSuffix(c, HUC6=False):
+ ord_ = ord(c)
+ patterns = HUC6_patterns if HUC6 else HUC8_patterns
+ for pattern in patterns.items():
+ if pattern[1][1] >= ord_: return pattern[0]
+ return '?'
+
+def convertHUC6(dots, debug=False):
+ ref1 = "1237"
+ ref2 = "4568"
+ data = dots.split('-')
+ offset = 0
+ linedCells1 = []
+ linedCells2 = []
+ for cell in data:
+ for dot in "12345678":
+ if dot not in cell:
+ if dot in ref1: linedCells1.append('0')
+ if dot in ref2: linedCells2.append('0')
+ else:
+ dotTemp = '0'
+ if dot in ref1:
+ dotIndexTemp = (ref1.index(dot) + offset) % 3
+ dotTemp = ref1[dotIndexTemp]
+ linedCells1.append(dotTemp)
+ elif dot in ref2:
+ dotIndexTemp = (ref2.index(dot) + offset) % 3
+ dotTemp = ref2[dotIndexTemp]
+ linedCells2.append(dotTemp)
+ offset = (offset + 1) % 3
+ out = []
+ i = 0
+ for l1, l2 in zip(linedCells1, linedCells2):
+ if i % 3 == 0: out.append("")
+ cellTemp = (l1 if l1 != '0' else '') + (l2 if l2 != '0' else '')
+ cellTemp = ''.join(sorted(cellTemp))
+ out[-1] += cellTemp if cellTemp else '0'
+ out[-1] = ''.join(sorted([dot for dot in out[-1] if dot != '0']))
+ if not out[-1]: out[-1] = '0'
+ i += 1
+ if debug: print_(":convertHUC6:", dots, "->", repr(out))
+ out = '-'.join(out)
+ return out
+
+def convertHUC8(dots, debug=False):
+ out = ""
+ newDots = "037168425"
+ for dot in dots: out += newDots[int(dot)]
+ out = ''.join(sorted(out))
+ if debug: print_(":convertHUC8:", dots, "->", out)
+ return out
+
+
+def convert(t, HUC6=False, unicodeBraille=True, debug=False):
+ out = ""
+ for c in t:
+ pattern = getPrefixAndSuffix(c, HUC6)
+ if not unicodeBraille: pattern = unicodeBrailleToDescription(pattern)
+ if '…' not in pattern: pattern += '…'
+ if not unicodeBraille: pattern = pattern.replace('…', "-…")
+ ord_ = ord(c)
+ hexVal = hex(ord_)[2:][-4:].upper()
+ if len(hexVal) < 4: hexVal = ("%4s" % hexVal).replace(' ', '0')
+ if debug: print_(":hexVal:", c, hexVal)
+ out_ = ""
+ beg = ""
+ for i, l in enumerate(hexVal):
+ j = int(l, 16)
+ if i % 2:
+ end = convertHUC8(hexVals[j], debug)
+ cleanCell = ''.join(sorted((beg + end))).replace('0', '')
+ if not cleanCell: cleanCell = '0'
+ if debug: print_(":cell %d:" % ((i+1)//2), cleanCell)
+ out_ += cleanCell
+ else:
+ if i != 0: out_ += "-"
+ beg = hexVals[j]
+ if HUC6:
+ out_ = convertHUC6(out_, debug)
+ if ord_ <= 0xFFFF: toAdd = '3'
+ elif ord_ <= 0x1FFFF: toAdd = '6'
+ else: toAdd = "36"
+ patternLastCell = "^.+-([0-6]+)$"
+ lastCell = re.sub(patternLastCell, r"\1", out_)
+ newLastCell = ''.join(sorted(toAdd + lastCell)).replace('0', '')
+ out_ = re.sub("-([0-6]+)$", '-'+newLastCell, out_)
+ if unicodeBraille: out_ = cellDescriptionsToUnicodeBraille(out_)
+ out_ = pattern.replace('…', out_.strip('-'))
+ if out and not unicodeBraille: out += '-'
+ out += out_
+ return out
+
+
+if __name__ == "__main__":
+ t = input("Text to convert: ")
+ print("HUC8:\n- %s\n- %s" % (convert(t), convert(t, unicodeBraille=False)))
+ print("HUC6:\n- %s\n- %s" % (convert(t, HUC6=True), convert(t, HUC6=True, unicodeBraille=False)))
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 6b5568ba..caf0e140 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -6,6 +6,7 @@
from __future__ import unicode_literals
import os
+import re
import sys
import time
import api
@@ -31,6 +32,7 @@
import addonHandler
addonHandler.initTranslation()
from . import dictionaries
+from . import huc
from .utils import getCurrentChar, getTether
from .common import *
if isPy3: import louisHelper
@@ -64,7 +66,7 @@ def sayCurrentLine():
def getCurrentBrailleTables(input_=False):
if input_:
- if instanceGP.BRFMode and not errorTable:
+ if instanceGP and instanceGP.BRFMode and not errorTable:
tables = [
os.path.join(baseDir, "res", "brf.ctb").encode("UTF-8"),
os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
@@ -78,12 +80,12 @@ def getCurrentBrailleTables(input_=False):
]
else:
if errorTable:
- if instanceGP.BRFMode: instanceGP.BRFMode = False
+ if instanceGP and instanceGP.BRFMode: instanceGP.BRFMode = False
tables = [
os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"]),
os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
]
- elif instanceGP.BRFMode:
+ elif instanceGP and instanceGP.BRFMode:
tables = [
os.path.join(baseDir, "res", "brf.ctb").encode("UTF-8"),
os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
@@ -93,10 +95,10 @@ def getCurrentBrailleTables(input_=False):
app = appModuleHandler.getAppModuleForNVDAObject(api.getNavigatorObject())
if app and app.appName != "nvda":
tables += dictionaries.dictTables
- tables += configBE.preTable + [
+ tables += [
os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"]),
os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
- ] + configBE.postTable
+ ]
return tables
# globalCommands.GlobalCommands.script_braille_routeTo()
@@ -137,79 +139,92 @@ def update(self):
try:
mode = louis.dotsIO
if config.conf["braille"]["expandAtCursor"] and self.cursorPos is not None: mode |= louis.compbrlAtCursor
- try:
- if isPy3:
- self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, self.brailleCursorPos = louisHelper.translate(
- getCurrentBrailleTables(),
- self.rawText,
- typeform=self.rawTextTypeforms,
- mode=mode,
- cursorPos=self.cursorPos
- )
- else:
- text = unicode(self.rawText).replace('\0', '')
- braille, self.brailleToRawPos, self.rawToBraillePos, brailleCursorPos = louis.translate(getCurrentBrailleTables(),
- text,
- # liblouis mutates typeform if it is a list.
- typeform=tuple(
- self.rawTextTypeforms) if isinstance(
- self.rawTextTypeforms,
- list) else self.rawTextTypeforms,
- mode=mode,
- cursorPos=self.cursorPos or 0
- )
- except BaseException as e:
- global errorTable
- if not errorTable:
- log.error("Unable to translate with tables: %s\nDetails: %s" % (getCurrentBrailleTables(), e))
- errorTable = True
- if instanceGP.BRFMode: instanceGP.BRFMode = False
- instanceGP.errorMessage(_("An unexpected error was produced while using several braille tables. Using default settings to avoid other errors. More information in NVDA log. Thanks to report it."))
- return
- if not isPy3:
- # liblouis gives us back a character string of cells, so convert it to a list of ints.
- # For some reason, the highest bit is set, so only grab the lower 8
- # bits.
- self.brailleCells = [ord(cell) & 255 for cell in braille]
- # #2466: HACK: liblouis incorrectly truncates trailing spaces from its output in some cases.
- # Detect this and add the spaces to the end of the output.
- if self.rawText and self.rawText[-1] == " ":
- # rawToBraillePos isn't truncated, even though brailleCells is.
- # Use this to figure out how long brailleCells should be and thus
- # how many spaces to add.
- correctCellsLen = self.rawToBraillePos[-1] + 1
- currentCellsLen = len(self.brailleCells)
- if correctCellsLen > currentCellsLen:
- self.brailleCells.extend(
- (0,) * (correctCellsLen - currentCellsLen))
- if self.cursorPos is not None:
- # HACK: The cursorPos returned by liblouis is notoriously buggy (#2947 among other issues).
- # rawToBraillePos is usually accurate.
- try:
- brailleCursorPos = self.rawToBraillePos[self.cursorPos]
- except IndexError:
- pass
- else:
- brailleCursorPos = None
- self.brailleCursorPos = brailleCursorPos
- if self.selectionStart is not None and self.selectionEnd is not None:
- try:
- # Mark the selection.
- self.brailleSelectionStart = self.rawToBraillePos[self.selectionStart]
- if self.selectionEnd >= len(self.rawText):
- self.brailleSelectionEnd = len(self.brailleCells)
- else:
- self.brailleSelectionEnd = self.rawToBraillePos[self.selectionEnd]
- fn = range if isPy3 else xrange
- for pos in fn(self.brailleSelectionStart, self.brailleSelectionEnd):
- self.brailleCells[pos] |= SELECTION_SHAPE()
- except IndexError: pass
+ if isPy3:
+ self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, self.brailleCursorPos = louisHelper.translate(
+ getCurrentBrailleTables(),
+ self.rawText,
+ typeform=self.rawTextTypeforms,
+ mode=mode,
+ cursorPos=self.cursorPos
+ )
else:
- if instanceGP.hideDots78:
- self.brailleCells = [(cell & 63) for cell in self.brailleCells]
+ text = unicode(self.rawText).replace('\0', '')
+ self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, brailleCursorPos = louis.translate(getCurrentBrailleTables(),
+ text,
+ # liblouis mutates typeform if it is a list.
+ typeform=tuple(
+ self.rawTextTypeforms) if isinstance(
+ self.rawTextTypeforms,
+ list) else self.rawTextTypeforms,
+ mode=mode,
+ cursorPos=self.cursorPos or 0
+ )
except BaseException as e:
- log.error("Error with update braille patch, disabling: %s" % e)
- errorTable = True
+ global errorTable
+ if not errorTable:
+ log.error("Unable to translate with tables: %s\nDetails: %s" % (getCurrentBrailleTables(), e))
+ errorTable = True
+ if instanceGP.BRFMode: instanceGP.BRFMode = False
+ instanceGP.errorMessage(_("An unexpected error was produced while using several braille tables. Using default settings to avoid other errors. More information in NVDA log. Thanks to report it."))
+ return
+ if not isPy3:
+ # liblouis gives us back a character string of cells, so convert it to a list of ints.
+ # For some reason, the highest bit is set, so only grab the lower 8
+ # bits.
+ self.brailleCells = [ord(cell) & 255 for cell in self.brailleCells]
+ # #2466: HACK: liblouis incorrectly truncates trailing spaces from its output in some cases.
+ # Detect this and add the spaces to the end of the output.
+ if self.rawText and self.rawText[-1] == " ":
+ # rawToBraillePos isn't truncated, even though brailleCells is.
+ # Use this to figure out how long brailleCells should be and thus
+ # how many spaces to add.
+ correctCellsLen = self.rawToBraillePos[-1] + 1
+ currentCellsLen = len(self.brailleCells)
+ if correctCellsLen > currentCellsLen:
+ self.brailleCells.extend(
+ (0,) * (correctCellsLen - currentCellsLen))
+ if self.cursorPos is not None:
+ # HACK: The cursorPos returned by liblouis is notoriously buggy (#2947 among other issues).
+ # rawToBraillePos is usually accurate.
+ try:
+ brailleCursorPos = self.rawToBraillePos[self.cursorPos]
+ except IndexError:
+ pass
+ else:
+ brailleCursorPos = None
+ self.brailleCursorPos = brailleCursorPos
+ if self.selectionStart is not None and self.selectionEnd is not None:
+ try:
+ # Mark the selection.
+ self.brailleSelectionStart = self.rawToBraillePos[self.selectionStart]
+ if self.selectionEnd >= len(self.rawText):
+ self.brailleSelectionEnd = len(self.brailleCells)
+ else:
+ self.brailleSelectionEnd = self.rawToBraillePos[self.selectionEnd]
+ fn = range if isPy3 else xrange
+ for pos in fn(self.brailleSelectionStart, self.brailleSelectionEnd):
+ self.brailleCells[pos] |= SELECTION_SHAPE()
+ except IndexError: pass
+ else:
+ if instanceGP and instanceGP.hideDots78:
+ self.brailleCells = [(cell & 63) for cell in self.brailleCells]
+ HUCProcess(self)
+
+def HUCProcess(self):
+ unicodeBrailleRepr = ''.join([chr_(10240+cell) for cell in self.brailleCells])
+ AllBraillePos = [m.start() for m in re.finditer("⣿⣥⣿", unicodeBrailleRepr)]
+ if not AllBraillePos: return
+ replacements = {braillePos: huc.convert(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in AllBraillePos}
+ newBrailleCells = []
+ alreadyDone = []
+ for iBrailleCells, brailleCells in enumerate(self.brailleCells):
+ brailleToRawPos = self.brailleToRawPos[iBrailleCells]
+ if brailleToRawPos in alreadyDone: continue
+ if iBrailleCells in replacements:
+ newBrailleCells += [ord(c)-10240 for c in replacements[iBrailleCells]]
+ alreadyDone.append(brailleToRawPos)
+ else: newBrailleCells.append(self.brailleCells[iBrailleCells])
+ self.brailleCells = newBrailleCells
#: braille.TextInfoRegion.nextLine()
def nextLine(self):
@@ -434,9 +449,8 @@ def _createTablesString(tablesList):
else:
return b",".join([x.encode("UTF-8") if isinstance(x, str) else bytes(x) for x in tablesList])
-configBE.loadPostTable()
-configBE.loadPreTable()
-
+dictionaries.setDictTables()
+dictionaries.notifyInvalidTables()
# applying patches
#braille.Region.update = update
braille.TextInfoRegion.previousLine = previousLine
@@ -448,3 +462,5 @@ def _createTablesString(tablesList):
globalCommands.GlobalCommands.script_braille_routeTo = script_braille_routeTo
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
+
+louis.compileString(getCurrentBrailleTables(), b"undefined 12345678-13678-12345678")
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index e64ab2dc..3894f974 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -425,13 +425,11 @@ def postInit(self): self.tables.SetFocus()
def onOk(self, evt):
config.conf["brailleExtender"]["outputTables"] = ','.join(self.oTables)
config.conf["brailleExtender"]["inputTables"] = ','.join(self.iTables)
- configBE.loadPreferedTables()
config.conf["brailleExtender"]["inputTableShortcuts"] = configBE.tablesUFN[self.inputTableShortcuts.GetSelection()-1] if self.inputTableShortcuts.GetSelection()>0 else '?'
postTableID = self.postTable.GetSelection()
postTable = "None" if postTableID == 0 else configBE.tablesFN[postTableID]
config.conf["brailleExtender"]["postTable"] = postTable
if hasattr(louis.liblouis, "lou_free"): louis.liblouis.lou_free()
- configBE.loadPostTable()
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD] = self.tabSize.Value
config.conf["brailleExtender"]["preventUndefinedCharHex"] = self.preventUndefinedCharHex.IsChecked()
@@ -439,8 +437,6 @@ def onOk(self, evt):
repr_ = re.sub('\-+','-', repr_)
if not repr_ or repr_.startswith('-') or repr_.endswith('-'): repr_ = "0"
config.conf["brailleExtender"]["undefinedCharRepr"] = repr_
- configBE.loadPreTable()
- configBE.loadPostTable()
super(BrailleTablesDlg, self).onOk(evt)
def getTablesWithSwitches(self):
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index a826d6a2..85683091 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -262,36 +262,6 @@ def getTextInBraille(t = '', table = None):
if charToDotsInLouis: return nt
return ''.join([chr(ord(ch)-0x8000+0x2800) if ord(ch) > 8000 else ch for ch in nt])
-def cellDescToChar(cell):
- if not re.match("^[0-8]+$", cell): return '?'
- toAdd = 0
- for dot in cell: toAdd += 1 << int(dot)-1 if int(dot) > 0 else 0
- return chr(10240+toAdd)
-
-def charToCellDesc(ch):
- """
- Return a description of an unicode braille char
- @param ch: the unicode braille character to describe
- must be between 0x2800 and 0x2999 included
- @type ch: str
- @return: the list of dots describing the braille cell
- @rtype: str
- @Example: "d" -> "145"
- """
- res = ""
- if len(ch) != 1: raise ValueError("Param size can only be one char (currently: %d)" % len(ch))
- p = ord(ch)
- if p >= 0x2800 and p <= 0x2999: p -= 0x2800
- if p > 255: raise ValueError(r"It is not an unicode braille (%d)" % p)
- dots ={1:1, 2:2, 4:3, 8:4,16:5,32:6,64:7, 128:8}
- i = 1
- while p != 0:
- if p - (128 / i) >= 0:
- res += str(dots[(128/i)])
- p -= (128 / i)
- i *= 2
- return res[::-1] if len(res) > 0 else '0'
-
def combinationDesign(dots, noDot = '⠤'):
out = ""
i = 1
@@ -332,12 +302,6 @@ def getTableOverview(tbl = ''):
t += '\n'+_("One combination available")+": %s" % available
return t
-def unicodeBrailleToDescription(t, sep = '-'):
- return ''.join([charToCellDesc(ch)+'-' if ch not in ['\n','\r'] else ch for ch in t])[:-1].replace("-\n",'\n')
-
-def descriptionToUnicodeBraille(t):
- return re.sub('([0-8]+)\-?', lambda m: cellDescToChar(m.group(1)), t)
-
def beautifulSht(t, curBD="noBraille", model = True, sep = ' / '):
if isinstance(t, list): t = ' '.join(t)
t = t.replace(',', ' ')
From 1674aa1cb52fe835abf4171bb8f77888cc14b26c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 3 Dec 2019 19:36:43 +0100
Subject: [PATCH 04/87] Attempt to fix cursor positions issues
---
.../globalPlugins/brailleExtender/__init__.py | 5 ---
addon/globalPlugins/brailleExtender/patchs.py | 42 ++++++++++++++-----
2 files changed, 32 insertions(+), 15 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 9341669f..3f08ac66 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -22,10 +22,6 @@
import wx
from . import settings
-from . import dictionaries
-
-import addonHandler
-addonHandler.initTranslation()
import api
import appModuleHandler
import braille
@@ -252,7 +248,6 @@ def event_gainFocus(self, obj, nextHandler):
if self.backup__brailleTableDict != config.conf["braille"]["translationTable"]:
self.backup__brailleTableDict = config.conf["braille"]["translationTable"]
dictionaries.setDictTables()
-
nextHandler()
return
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index caf0e140..7fe691b2 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -167,6 +167,7 @@ def update(self):
if instanceGP.BRFMode: instanceGP.BRFMode = False
instanceGP.errorMessage(_("An unexpected error was produced while using several braille tables. Using default settings to avoid other errors. More information in NVDA log. Thanks to report it."))
return
+ HUCProcess(self)
if not isPy3:
# liblouis gives us back a character string of cells, so convert it to a list of ints.
# For some reason, the highest bit is set, so only grab the lower 8
@@ -208,23 +209,42 @@ def update(self):
else:
if instanceGP and instanceGP.hideDots78:
self.brailleCells = [(cell & 63) for cell in self.brailleCells]
- HUCProcess(self)
def HUCProcess(self):
unicodeBrailleRepr = ''.join([chr_(10240+cell) for cell in self.brailleCells])
- AllBraillePos = [m.start() for m in re.finditer("⣿⣥⣿", unicodeBrailleRepr)]
- if not AllBraillePos: return
- replacements = {braillePos: huc.convert(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in AllBraillePos}
+ allBraillePos = [m.start() for m in re.finditer(HUCUnicodePattern, unicodeBrailleRepr)]
+ allBraillePosDelimiters = [(pos, pos+3) for pos in allBraillePos]
+ if not allBraillePos: return
+ replacements = {braillePos: huc.convert(self.rawText[self.brailleToRawPos[braillePos]], HUC6=True) for braillePos in allBraillePos}
newBrailleCells = []
+ newBrailleToRawPos = []
+ newRawToBraillePos = []
+ lenBrailleToRawPos = len(self.brailleToRawPos)
alreadyDone = []
+ i = 0
for iBrailleCells, brailleCells in enumerate(self.brailleCells):
brailleToRawPos = self.brailleToRawPos[iBrailleCells]
- if brailleToRawPos in alreadyDone: continue
- if iBrailleCells in replacements:
- newBrailleCells += [ord(c)-10240 for c in replacements[iBrailleCells]]
- alreadyDone.append(brailleToRawPos)
- else: newBrailleCells.append(self.brailleCells[iBrailleCells])
+ if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(HUCUnicodePattern[0]):
+ toAdd = [ord(c)-10240 for c in replacements[iBrailleCells]]
+ newBrailleCells += toAdd
+ newBrailleToRawPos += [i] * len(toAdd)
+ alreadyDone += list(range(iBrailleCells, iBrailleCells+3))
+ i += 1
+ else:
+ if iBrailleCells in alreadyDone: continue
+ newBrailleCells.append(self.brailleCells[iBrailleCells])
+ newBrailleToRawPos += [i]
+ if (iBrailleCells + 1) < lenBrailleToRawPos and self.brailleToRawPos[iBrailleCells+1] != brailleToRawPos:
+ i += 1
+ pos = -42
+ for i, brailleToRawPos in enumerate(newBrailleToRawPos):
+ if brailleToRawPos != pos:
+ pos = brailleToRawPos
+ newRawToBraillePos.append(i)
self.brailleCells = newBrailleCells
+ self.brailleToRawPos = newBrailleToRawPos
+ self.rawToBraillePos = newRawToBraillePos
+ if self.cursorPos: self.brailleCursorPos = self.rawToBraillePos[self.cursorPos]
#: braille.TextInfoRegion.nextLine()
def nextLine(self):
@@ -463,4 +483,6 @@ def _createTablesString(tablesList):
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
-louis.compileString(getCurrentBrailleTables(), b"undefined 12345678-13678-12345678")
+HUCDotPattern = "12345678-78-12345678"
+louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % HUCDotPattern, "ASCII"))
+HUCUnicodePattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
From 3f84d3f6b1db0cc8174ab26d16e627fe26bfcd44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Wed, 4 Dec 2019 03:41:41 +0100
Subject: [PATCH 05/87] Updated settings to choose how to display undefined
characters + various fixes known issue: restart is required for apply new
settings
---
.../globalPlugins/brailleExtender/__init__.py | 14 ++++-
.../globalPlugins/brailleExtender/configBE.py | 20 +++++-
.../brailleExtender/dictionaries.py | 5 +-
addon/globalPlugins/brailleExtender/patchs.py | 43 ++++++++++---
.../globalPlugins/brailleExtender/settings.py | 61 +++++++++++++++----
addon/globalPlugins/brailleExtender/utils.py | 6 +-
6 files changed, 121 insertions(+), 28 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 3f08ac66..94bf45d5 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -181,6 +181,7 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
def __init__(self):
super(globalPluginHandler.GlobalPlugin, self).__init__()
patchs.instanceGP = self
+ self.reloadBrailleTables()
settings.instanceGP = self
configBE.loadConf()
configBE.initGestures()
@@ -245,9 +246,7 @@ def event_gainFocus(self, obj, nextHandler):
configBE.curBD = braille.handler.display.name
self.onReload(None, 1)
- if self.backup__brailleTableDict != config.conf["braille"]["translationTable"]:
- self.backup__brailleTableDict = config.conf["braille"]["translationTable"]
- dictionaries.setDictTables()
+ if self.backup__brailleTableDict != config.conf["braille"]["translationTable"]: self.reloadBrailleTables()
nextHandler()
return
@@ -293,6 +292,15 @@ def createMenu(self):
item = menu.Append(wx.ID_ANY, _("&Website"), _("Open addon's website."))
gui.mainFrame.sysTrayIcon.Bind(wx.EVT_MENU, self.onWebsite, item)
+ def reloadBrailleTables(self):
+ self.backup__brailleTableDict = config.conf["braille"]["translationTable"]
+ dictionaries.setDictTables()
+ dictionaries.notifyInvalidTables()
+ if config.conf["brailleExtender"]["tabSpace"]:
+ liblouisDef = r"always \t " + ("0-" * configBE.getTabSize()).strip('-')
+ patchs.louis.compileString(patchs.getCurrentBrailleTables(), bytes(liblouisDef, "ASCII"))
+ patchs.setUndefinedChar()
+
@staticmethod
def onDefaultDictionary(evt):
gui.mainFrame._popupSettingsDialog(dictionaries.DictionaryDlg, _("Global dictionary"), "default")
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 40e1982f..bf033826 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -36,6 +36,18 @@
CHOICE_focusAndReview = "focusAndReview"
NOVIEWSAVED = chr(4)
+# undefined char representations
+CHOICE_tableBehaviour = 0
+CHOICE_allDots8 = 1
+CHOICE_allDots6 = 2
+CHOICE_emptyCell = 3
+CHOICE_otherDots = 4
+CHOICE_questionMark = 5
+CHOICE_otherSign = 6
+CHOICE_liblouis = 7
+CHOICE_HUC8 = 8
+CHOICE_HUC6 = 9
+
dict_ = dict if isPy3 else OrderedDict
outputMessage = dict_([
@@ -146,8 +158,9 @@ def getConfspec():
"outputTables": "string(default=%s)" % config.conf["braille"]["translationTable"],
"tabSpace": "boolean(default=False)",
"tabSize_%s" % curBD: "integer(min=1, default=2, max=42)",
- "preventUndefinedCharHex": "boolean(default=False)",
+ "undefinedCharReprType": "integer(min=0, default=0, max=9)",
"undefinedCharRepr": "string(default=0)",
+ "showNameUndefinedChar": "boolean(default=False)",
"postTable": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
@@ -356,6 +369,11 @@ def getKeyboardLayout():
def getCustomBrailleTables():
return [config.conf["brailleExtender"]["brailleTables"][k].split('|', 3) for k in config.conf["brailleExtender"]["brailleTables"]]
+def getTabSize():
+ size = config.conf["brailleExtender"]["tabSize_%s" % curBD]
+ if size < 0: size = 2
+ return size
+
# remove old config files
cfgFile = globalVars.appArgs.configPath + r"\BrailleExtender.conf"
cfgFileAttribra = globalVars.appArgs.configPath + r"\attribra-BE.ini"
diff --git a/addon/globalPlugins/brailleExtender/dictionaries.py b/addon/globalPlugins/brailleExtender/dictionaries.py
index f8346be8..b4c1c821 100644
--- a/addon/globalPlugins/brailleExtender/dictionaries.py
+++ b/addon/globalPlugins/brailleExtender/dictionaries.py
@@ -18,6 +18,7 @@
from . import configBE
from . import utils
from .common import *
+from . import huc
BrailleDictEntry = namedtuple("BrailleDictEntry", ("opcode", "textPattern", "braillePattern", "direction", "comment"))
OPCODE_SIGN = "sign"
@@ -95,8 +96,8 @@ def saveDict(type_, dict_):
def setDictTables():
global dictTables
- invalidDictTables.clear()
dictTables = getValidPathsDict()
+ invalidDictTables.clear()
if hasattr(louis.liblouis, "lou_free"): louis.liblouis.lou_free()
else: return False
return True
@@ -209,7 +210,7 @@ def getReprTextPattern(textPattern, equiv=True):
@staticmethod
def getReprBraillePattern(braillePattern, equiv=True):
if equiv and re.match("^[0-8\-]+$", braillePattern):
- return "%s (%s)" % (utils.descriptionToUnicodeBraille(braillePattern), braillePattern)
+ return "%s (%s)" % (huc.cellDescriptionsToUnicodeBraille(braillePattern), braillePattern)
braillePattern = braillePattern.replace(r"\s", " ").replace(r"\t", " ")
return braillePattern
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 7fe691b2..b19290a4 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -9,6 +9,8 @@
import re
import sys
import time
+import unicodedata
+
import api
import appModuleHandler
import braille
@@ -33,11 +35,14 @@
addonHandler.initTranslation()
from . import dictionaries
from . import huc
-from .utils import getCurrentChar, getTether
+from .utils import getCurrentChar, getTether, getTextInBraille
from .common import *
if isPy3: import louisHelper
instanceGP = None
+chr_ = chr if isPy3 else unichr
+HUCDotPattern = "12345678-78-12345678"
+HUCUnicodePattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
SELECTION_SHAPE = lambda: braille.SELECTION_SHAPE
errorTable = False
@@ -167,7 +172,7 @@ def update(self):
if instanceGP.BRFMode: instanceGP.BRFMode = False
instanceGP.errorMessage(_("An unexpected error was produced while using several braille tables. Using default settings to avoid other errors. More information in NVDA log. Thanks to report it."))
return
- HUCProcess(self)
+ if config.conf["brailleExtender"]["undefinedCharReprType"] in [configBE.CHOICE_liblouis, configBE.CHOICE_HUC8, configBE.CHOICE_HUC6]: HUCProcess(self)
if not isPy3:
# liblouis gives us back a character string of cells, so convert it to a list of ints.
# For some reason, the highest bit is set, so only grab the lower 8
@@ -210,12 +215,39 @@ def update(self):
if instanceGP and instanceGP.hideDots78:
self.brailleCells = [(cell & 63) for cell in self.brailleCells]
+def setUndefinedChar(t=None):
+ if not t or t > CHOICE_HUC6 or t < 0: t = config.conf["brailleExtender"]["undefinedCharReprType"]
+ if t == 0: return
+ c = ["default", "12345678", "123456", '0', config.conf["brailleExtender"]["undefinedCharRepr"], "questionMark", "sign"] + [HUCDotPattern]*3
+ v = c[t]
+ if v in ["questionMark", "sign"]:
+ if v == "questionMark": s = '?'
+ else: s = config.conf["brailleExtender"]["undefinedCharRepr"]
+ v = huc.unicodeBrailleToDescription(getTextInBraille(s, getCurrentBrailleTables()))
+ louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+
+def getDescChar(c):
+ n = ''
+ try: n = "'%s'" % unicodedata.name(c)
+ except ValueError: n = r"'\x%.4x'" % ord(c)
+ return n
+
+def getHexLiblouisStyle(s):
+ if config.conf["brailleExtender"]["showNameUndefinedChar"]:
+ s = getTextInBraille(''.join([getDescChar(c) for c in s]))
+ else: s = getTextInBraille(''.join([r"'\x%.4x'" % ord(c) for c in s]))
+ return s
+
def HUCProcess(self):
unicodeBrailleRepr = ''.join([chr_(10240+cell) for cell in self.brailleCells])
allBraillePos = [m.start() for m in re.finditer(HUCUnicodePattern, unicodeBrailleRepr)]
allBraillePosDelimiters = [(pos, pos+3) for pos in allBraillePos]
if not allBraillePos: return
- replacements = {braillePos: huc.convert(self.rawText[self.brailleToRawPos[braillePos]], HUC6=True) for braillePos in allBraillePos}
+ if config.conf["brailleExtender"]["undefinedCharReprType"] == configBE.CHOICE_liblouis:
+ replacements = {braillePos: getHexLiblouisStyle(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in allBraillePos}
+ else:
+ HUC6 = True if config.conf["brailleExtender"]["undefinedCharReprType"] == configBE.CHOICE_HUC6 else False
+ replacements = {braillePos: huc.convert(self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6) for braillePos in allBraillePos}
newBrailleCells = []
newBrailleToRawPos = []
newRawToBraillePos = []
@@ -469,8 +501,6 @@ def _createTablesString(tablesList):
else:
return b",".join([x.encode("UTF-8") if isinstance(x, str) else bytes(x) for x in tablesList])
-dictionaries.setDictTables()
-dictionaries.notifyInvalidTables()
# applying patches
#braille.Region.update = update
braille.TextInfoRegion.previousLine = previousLine
@@ -483,6 +513,3 @@ def _createTablesString(tablesList):
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
-HUCDotPattern = "12345678-78-12345678"
-louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % HUCDotPattern, "ASCII"))
-HUCUnicodePattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 3894f974..cea602f6 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -15,6 +15,7 @@
import braille
import config
import controlTypes
+import core
import inputCore
import keyLabels
import louis
@@ -28,7 +29,7 @@
from .common import *
instanceGP = None
-def notImplemented(msg=''):
+def notImplemented(msg='', style=wx.OK|wx.ICON_INFORMATION):
if not msg: msg = _("The feature implementation is in progress. Thanks for your patience.")
gui.messageBox(msg, _("Braille Extender"), wx.OK|wx.ICON_INFORMATION)
@@ -405,16 +406,33 @@ def makeSettings(self, settingsSizer):
self.postTable.SetSelection(configBE.tablesFN.index(config.conf["brailleExtender"]["postTable"]) if config.conf["brailleExtender"]["postTable"] in configBE.tablesFN else 0)
# Translators: label of a dialog.
- self.tabSpace = sHelper.addItem(wx.CheckBox(self, label=_("Display tab signs as spaces")))
+ self.tabSpace = sHelper.addItem(wx.CheckBox(self, label=_("Display &tab signs as spaces")))
self.tabSpace.SetValue(config.conf["brailleExtender"]["tabSpace"])
# Translators: label of a dialog.
- self.tabSize = sHelper.addLabeledControl(_("Number of space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
+ self.tabSize = sHelper.addLabeledControl(_("Number of &space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
# Translators: label of a dialog.
- self.preventUndefinedCharHex = sHelper.addItem(wx.CheckBox(self, label=_("Prevent undefined characters with Hexadecimal Unicode value")))
- self.preventUndefinedCharHex.SetValue(config.conf["brailleExtender"]["preventUndefinedCharHex"])
+ label = _("Representation of undefined characters")
+ choices = [
+ _("Use braille table behavior"),
+ _("Dots 1-8 (⣿)"),
+ _("Dots 1-6 (⠿)"),
+ _("Empty cell (⠀)"),
+ _("Other dot patterns (e.g.: 6-123456)"),
+ _("Question mark (depending output table)"),
+ _("Other sign/pattern (e.g.: \, ??)"),
+ _("Hexadecimal, Liblouis style"),
+ _("Hexadecimal, HUC8"),
+ _("Hexadecimal, HUC6")
+ ]
+ self.undefinedCharReprList = sHelper.addLabeledControl(label, wx.Choice, choices=choices)
+ self.undefinedCharReprList.Bind(wx.EVT_CHOICE, self.onUndefinedCharReprList)
+ self.undefinedCharReprList.SetSelection(config.conf["brailleExtender"]["undefinedCharReprType"])
+ self.showNameUndefinedChar = sHelper.addItem(wx.CheckBox(self, label=_("Show the name assigned to the character if possible (english only)")))
+ self.showNameUndefinedChar.SetValue(config.conf["brailleExtender"]["showNameUndefinedChar"])
# Translators: label of a dialog.
- self.undefinedCharRepr = sHelper.addLabeledControl(_("Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharRepr"])
+ self.undefinedCharReprEdit = sHelper.addLabeledControl(_("Specify another pattern"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharRepr"])
+ self.onUndefinedCharReprList()
self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
self.customBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onCustomBrailleTablesBtn)
@@ -429,15 +447,28 @@ def onOk(self, evt):
postTableID = self.postTable.GetSelection()
postTable = "None" if postTableID == 0 else configBE.tablesFN[postTableID]
config.conf["brailleExtender"]["postTable"] = postTable
- if hasattr(louis.liblouis, "lou_free"): louis.liblouis.lou_free()
+ if ((self.tabSpace.IsChecked() and config.conf["brailleExtender"]["tabSpace"] != self.tabSpace.IsChecked())
+ or (self.undefinedCharReprList.GetSelection() != 0 and config.conf["brailleExtender"]["undefinedCharReprType"] != self.undefinedCharReprList.GetSelection())):
+ restartRequired = True
+ else: restartRequired = False
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD] = self.tabSize.Value
- config.conf["brailleExtender"]["preventUndefinedCharHex"] = self.preventUndefinedCharHex.IsChecked()
- repr_ = re.sub("[^0-8\-]", "", self.undefinedCharRepr.Value)
- repr_ = re.sub('\-+','-', repr_)
- if not repr_ or repr_.startswith('-') or repr_.endswith('-'): repr_ = "0"
+ config.conf["brailleExtender"]["undefinedCharReprType"] = self.undefinedCharReprList.GetSelection()
+ repr_ = self.undefinedCharReprEdit.Value
+ if self.undefinedCharReprList.GetSelection() == configBE.CHOICE_otherDots:
+ repr_ = re.sub("[^0-8\-]", "", repr_).strip('-')
+ repr_ = re.sub('\-+','-', repr_)
config.conf["brailleExtender"]["undefinedCharRepr"] = repr_
+ config.conf["brailleExtender"]["showNameUndefinedChar"] = self.showNameUndefinedChar.IsChecked()
+ instanceGP.reloadBrailleTables()
super(BrailleTablesDlg, self).onOk(evt)
+ if restartRequired:
+ res = gui.messageBox(
+ _("NVDA must be restarted for some new options to take effect. Do you want restart now?"),
+ _("Braille Extender"),
+ style=wx.YES_NO|wx.ICON_INFORMATION
+ )
+ if res == wx.YES: core.restart()
def getTablesWithSwitches(self):
out = []
@@ -493,6 +524,14 @@ def changeSwitch(self, tbl, direction = 1, loop = True):
else: return
self.setCurrentSelection(tbl, newDir)
+ def onUndefinedCharReprList(self, evt=None):
+ selected = self.undefinedCharReprList.GetSelection()
+ if selected in [configBE.CHOICE_otherDots, configBE.CHOICE_otherSign]: self.undefinedCharReprEdit.Enable()
+ else: self.undefinedCharReprEdit.Disable()
+ if selected in [configBE.CHOICE_liblouis]:
+ self.showNameUndefinedChar.Enable()
+ else: self.showNameUndefinedChar.Disable()
+
def onCustomBrailleTablesBtn(self, evt):
customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
customBrailleTablesDlg.ShowModal()
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 85683091..98680fda 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -248,15 +248,15 @@ def getKeysTranslation(n):
def getTextInBraille(t = '', table = None):
if not t: t = getTextSelection()
if not t.strip(): return ''
- if not table: table = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
+ if not table: table = [os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])]
nt = []
res = ''
t = t.split("\n")
for l in t:
l = l.rstrip()
if not l: res = ''
- elif charToDotsInLouis: res = louis.charToDots([table], l, louis.ucBrl)
- else: res = louis.translateString([table], l, None, louis.dotsIO)
+ elif charToDotsInLouis: res = louis.charToDots(table, l, louis.ucBrl)
+ else: res = louis.translateString(table, l, None, louis.dotsIO)
nt.append(res)
nt = '\n'.join(nt)
if charToDotsInLouis: return nt
From f56d1083533ca87fe3a2cf4279aad21db3066a79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Wed, 4 Dec 2019 04:32:39 +0100
Subject: [PATCH 06/87] Fixes for NVDA 2019.2.1 and earlier
---
addon/globalPlugins/brailleExtender/__init__.py | 4 +++-
addon/globalPlugins/brailleExtender/patchs.py | 6 +++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 94bf45d5..2fb8d68a 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -298,7 +298,9 @@ def reloadBrailleTables(self):
dictionaries.notifyInvalidTables()
if config.conf["brailleExtender"]["tabSpace"]:
liblouisDef = r"always \t " + ("0-" * configBE.getTabSize()).strip('-')
- patchs.louis.compileString(patchs.getCurrentBrailleTables(), bytes(liblouisDef, "ASCII"))
+ if isPy3:
+ patchs.louis.compileString(patchs.getCurrentBrailleTables(), bytes(liblouisDef, "ASCII"))
+ else: patchs.louis.compileString(patchs.getCurrentBrailleTables(), bytes(liblouisDef))
patchs.setUndefinedChar()
@staticmethod
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index b19290a4..2e172303 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -224,7 +224,10 @@ def setUndefinedChar(t=None):
if v == "questionMark": s = '?'
else: s = config.conf["brailleExtender"]["undefinedCharRepr"]
v = huc.unicodeBrailleToDescription(getTextInBraille(s, getCurrentBrailleTables()))
- louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+ if isPy3:
+ louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+ else: louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v))
+
def getDescChar(c):
n = ''
@@ -239,6 +242,7 @@ def getHexLiblouisStyle(s):
return s
def HUCProcess(self):
+ if not isPy3: return
unicodeBrailleRepr = ''.join([chr_(10240+cell) for cell in self.brailleCells])
allBraillePos = [m.start() for m in re.finditer(HUCUnicodePattern, unicodeBrailleRepr)]
allBraillePosDelimiters = [(pos, pos+3) for pos in allBraillePos]
From c938dc9296f84ab6984279963a05996e22fad21d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 10 Jan 2020 16:23:36 +0100
Subject: [PATCH 07/87] Added HUC Braille input, first implementation Default
gesture: NVDA+Windows+h / dots(1+2+5+8)+space
---
.../Profiles/baum/default/profile.ini | 2 +-
.../Profiles/brailliantB/default/profile.ini | 1 +
.../Profiles/eurobraille/default/profile.ini | 1 +
.../freedomscientific/default/profile.ini | 1 +
.../globalPlugins/brailleExtender/__init__.py | 7 ++
addon/globalPlugins/brailleExtender/huc.py | 70 ++++++++++++----
addon/globalPlugins/brailleExtender/patchs.py | 76 +++++++++++++++++-
.../brailleExtender/res/sounds/keyPress.wav | Bin 0 -> 27982 bytes
8 files changed, 138 insertions(+), 20 deletions(-)
create mode 100644 addon/globalPlugins/brailleExtender/res/sounds/keyPress.wav
diff --git a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
index bfc547fd..94e58538 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
@@ -60,7 +60,7 @@
reportExtraInfos = b10+b5+b8
getSpeechOutput = b10+b3+b4
addDictionaryEntry = b10+b8+b7+b1+b4+b5
-
+ HUCInput = b1+b2+b5+b8+b10
[keyboardLayouts]
[[l1]]
diff --git a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
index 0bf3c1b0..4e4acf9e 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
@@ -52,6 +52,7 @@
nextRotor = space+dot5+dot6
getSpeechOutput = space+dot3+dot4
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
+ HUCInput = space+dot1+dot2+dot5+dot8
[rotor]
nextEltRotor = right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
index 914da610..1e47ddef 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
@@ -52,6 +52,7 @@
getSpeechOutput = space+dot3+dot4
repeatLastShortcut = dot6+dot7+space
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
+ HUCInput = space+dot1+dot2+dot5+dot8
[rotor]
nextEltRotor = joystick2Right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
index 90e29ad6..db6753ac 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
@@ -52,6 +52,7 @@
nextRotor = braillespacebar+dot5+dot6
getSpeechOutput = braillespacebar+dot3+dot4
addDictionaryEntry = braillespacebar+dot8+dot7+dot1+dot4+dot5
+ HUCInput = braillespacebar+dot1+dot2+dot5+dot8
[rotor]
nextEltRotor = leftwizwheeldown
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 2fb8d68a..f3bc704f 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -161,6 +161,7 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
lastShortcutPerformed = None
hideDots78 = False
BRFMode = False
+ HUCInput = False
modifiersLocked = False
hourDatePlayed = False
hourDateTimer = None
@@ -672,6 +673,11 @@ def script_cellDescriptionsToChars(self, gesture):
ui.browseableMessage(t, _("Cell descriptions to braille Unicode")+(" (%.2f s)" % (time.time()-tm)))
script_cellDescriptionsToChars.__doc__ = _("Braille cell description to Unicode Braille. E.g.: in a edit field type '125-24-0-1-123-123'. Then select this text and execute this command")
+ def script_HUCInput(self, gesture):
+ self.HUCInput = not self.HUCInput
+ states = [_("disabled"), _("enabled")]
+ speech.speakMessage("HUC Braille input %s" % states[int(self.HUCInput)])
+
def script_position(self, gesture=None):
return ui.message('{0}% ({1}/{2})'.format(round(utils.getPositionPercentage(), 2), utils.getPosition()[0], utils.getPosition()[1]))
script_position.__doc__ = _("Get the cursor position of text")
@@ -1478,6 +1484,7 @@ def script_addDictionaryEntry(self, gesture):
__gestures["kb:nvda+shift+k"] = "reload_brailledisplay2"
__gestures["kb:nvda+alt+h"] = "toggleDots78"
__gestures["kb:nvda+alt+f"] = "toggleBRFMode"
+ __gestures["kb:nvda+windows+h"] = "HUCInput"
__gestures["kb:nvda+windows+k"] = "reloadAddon"
__gestures["kb:volumeMute"] = "toggleVolume"
__gestures["kb:volumeUp"] = "volumePlus"
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
index 366777c4..acc21664 100644
--- a/addon/globalPlugins/brailleExtender/huc.py
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -1,10 +1,5 @@
#!/usr/bin/env python3
-# coding: UTF-8
-from __future__ import print_function, unicode_literals
import re
-import sys
-isPy3 = True if sys.version_info >= (3, 0) else False
-if not isPy3: chr = unichr
HUC6_patterns = {
"⠿": (0x000000, 0x00FFFF),
@@ -53,6 +48,10 @@
"25", '2', '5', '0'
]
+HUC_INPUT_INVALID = 0
+HUC_INPUT_INCOMPLETE = 1
+HUC_INPUT_COMPLETE = 2
+
print_ = print
def cellDescToChar(cell):
@@ -103,7 +102,7 @@ def getPrefixAndSuffix(c, HUC6=False):
if pattern[1][1] >= ord_: return pattern[0]
return '?'
-def convertHUC6(dots, debug=False):
+def translateHUC6(dots, debug=False):
ref1 = "1237"
ref2 = "4568"
data = dots.split('-')
@@ -136,20 +135,20 @@ def convertHUC6(dots, debug=False):
out[-1] = ''.join(sorted([dot for dot in out[-1] if dot != '0']))
if not out[-1]: out[-1] = '0'
i += 1
- if debug: print_(":convertHUC6:", dots, "->", repr(out))
+ if debug: print_(":translateHUC6:", dots, "->", repr(out))
out = '-'.join(out)
return out
-def convertHUC8(dots, debug=False):
+def translateHUC8(dots, debug=False):
out = ""
newDots = "037168425"
for dot in dots: out += newDots[int(dot)]
out = ''.join(sorted(out))
- if debug: print_(":convertHUC8:", dots, "->", out)
+ if debug: print_(":translateHUC8:", dots, "->", out)
return out
-def convert(t, HUC6=False, unicodeBraille=True, debug=False):
+def translate(t, HUC6=False, unicodeBraille=True, debug=False):
out = ""
for c in t:
pattern = getPrefixAndSuffix(c, HUC6)
@@ -165,7 +164,7 @@ def convert(t, HUC6=False, unicodeBraille=True, debug=False):
for i, l in enumerate(hexVal):
j = int(l, 16)
if i % 2:
- end = convertHUC8(hexVals[j], debug)
+ end = translateHUC8(hexVals[j], debug)
cleanCell = ''.join(sorted((beg + end))).replace('0', '')
if not cleanCell: cleanCell = '0'
if debug: print_(":cell %d:" % ((i+1)//2), cleanCell)
@@ -174,7 +173,7 @@ def convert(t, HUC6=False, unicodeBraille=True, debug=False):
if i != 0: out_ += "-"
beg = hexVals[j]
if HUC6:
- out_ = convertHUC6(out_, debug)
+ out_ = translateHUC6(out_, debug)
if ord_ <= 0xFFFF: toAdd = '3'
elif ord_ <= 0x1FFFF: toAdd = '6'
else: toAdd = "36"
@@ -188,8 +187,49 @@ def convert(t, HUC6=False, unicodeBraille=True, debug=False):
out += out_
return out
+def splitInTwoCells(dotPattern):
+ c1 = ""
+ c2 = ""
+ for dot in dotPattern:
+ if dot in ['3', '6', '7', '8']: c2 += dot
+ elif dot in ['1', '2', '4', '5']: c1 += dot
+ if c2: c2 = translateHUC8(c2)
+ if not c1: c1 = '0'
+ if not c2: c2 = '0'
+ return [c1, c2]
+
+def isValidHUCInput(s):
+ if not s or len(s) < 2: return HUC_INPUT_INCOMPLETE
+ prefix = s[0:2] if len(s) == 4 else s[0]
+ s = s[2:] if len(s) == 4 else s[1:]
+ size = len(s)
+ if prefix not in HUC8_patterns.keys():
+ if s:
+ if prefix+s[0] in HUC8_patterns.keys(): return HUC_INPUT_INCOMPLETE
+ return HUC_INPUT_INVALID
+ if size == 2: return HUC_INPUT_COMPLETE
+ elif size < 2: return HUC_INPUT_INCOMPLETE
+ return HUC_INPUT_INVALID
+
+def backTranslateHUC8(s, debug=False):
+ if len(s) not in [3, 4]: raise ValueError("Invalid size")
+ prefix = s[0:2] if len(s) == 4 else s[0]
+ s = s[2:] if len(s) == 4 else s[1:]
+ if prefix not in HUC8_patterns.keys(): raise ValueError("Invalid prefix")
+ out = []
+ s = unicodeBrailleToDescription(s)
+ for c in s.split('-'):
+ out += splitInTwoCells(c)
+ return chr(HUC8_patterns[prefix][0]+int(''.join(["%x" % hexVals.index(out) for out in out]), 16))
+
+def backTranslateHUC6(s, debug=False):
+ return '⠃'
+
+def backTranslate(s, HUC6=False, debug=False):
+ func = backTranslateHUC6 if HUC6 else backTranslateHUC8
+ return func(s, debug=debug)
if __name__ == "__main__":
- t = input("Text to convert: ")
- print("HUC8:\n- %s\n- %s" % (convert(t), convert(t, unicodeBraille=False)))
- print("HUC6:\n- %s\n- %s" % (convert(t, HUC6=True), convert(t, HUC6=True, unicodeBraille=False)))
+ t = input("Text to translate: ")
+ print("HUC8:\n- %s\n- %s" % (translate(t), translate(t, unicodeBraille=False)))
+ print("HUC6:\n- %s\n- %s" % (translate(t, HUC6=True), translate(t, HUC6=True, unicodeBraille=False)))
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 2e172303..d581f81e 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -10,6 +10,9 @@
import sys
import time
import unicodedata
+import struct
+import winUser
+import nvwave
import api
import appModuleHandler
@@ -18,6 +21,7 @@
import brailleTables
import controlTypes
import config
+import core
from . import configBE
import globalCommands
import inputCore
@@ -251,7 +255,7 @@ def HUCProcess(self):
replacements = {braillePos: getHexLiblouisStyle(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in allBraillePos}
else:
HUC6 = True if config.conf["brailleExtender"]["undefinedCharReprType"] == configBE.CHOICE_HUC6 else False
- replacements = {braillePos: huc.convert(self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6) for braillePos in allBraillePos}
+ replacements = {braillePos: huc.translate(self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6) for braillePos in allBraillePos}
newBrailleCells = []
newBrailleToRawPos = []
newRawToBraillePos = []
@@ -405,6 +409,52 @@ def executeGesture(self, gesture):
return
raise NoInputGestureAction
+#: brailleInput.BrailleInputHandler.sendChars()
+def sendChars(self, chars: str):
+ """Sends the provided unicode characters to the system.
+ @param chars: The characters to send to the system.
+ """
+ inputs = []
+ chars = ''.join(c if ord(c) <= 0xffff else ''.join(chr(x) for x in struct.unpack('>2H', c.encode("utf-16be"))) for c in chars)
+ for ch in chars:
+ for direction in (0,winUser.KEYEVENTF_KEYUP):
+ input = winUser.Input()
+ input.type = winUser.INPUT_KEYBOARD
+ input.ii.ki = winUser.KeyBdInput()
+ input.ii.ki.wScan = ord(ch)
+ input.ii.ki.dwFlags = winUser.KEYEVENTF_UNICODE|direction
+ inputs.append(input)
+ winUser.SendInput(inputs)
+ focusObj = api.getFocusObject()
+ if keyboardHandler.shouldUseToUnicodeEx(focusObj):
+ # #10569: When we use ToUnicodeEx to detect typed characters,
+ # emulated keypresses aren't detected.
+ # Send TypedCharacter events manually.
+ for ch in chars:
+ focusObj.event_typedCharacter(ch=ch)
+
+#: brailleInput.BrailleInputHandler.emulateKey()
+def emulateKey(self, key, withModifiers=True):
+ """Emulates a key using the keyboard emulation system.
+ If emulation fails (e.g. because of an unknown key), a debug warning is logged
+ and the system falls back to sending unicode characters.
+ @param withModifiers: Whether this key emulation should include the modifiers that are held virtually.
+ Note that this method does not take care of clearing L{self.currentModifiers}.
+ @type withModifiers: bool
+ """
+ if withModifiers:
+ # The emulated key should be the last item in the identifier string.
+ keys = list(self.currentModifiers)
+ keys.append(key)
+ gesture = "+".join(keys)
+ else:
+ gesture = key
+ try:
+ inputCore.manager.emulateGesture(keyboardHandler.KeyboardInputGesture.fromName(gesture))
+ instanceGP.lastShortcutPerformed = gesture
+ except BaseException:
+ log.debugWarning("Unable to emulate %r, falling back to sending unicode characters"%gesture, exc_info=True)
+ self.sendChars(key)
#: brailleInput.BrailleInputHandler.emulateKey()
def emulateKey(self, key, withModifiers=True):
@@ -430,7 +480,7 @@ def emulateKey(self, key, withModifiers=True):
self.sendChars(key)
#: brailleInput.BrailleInputHandler._translate()
-# reason for patching: possibility to lock modifiers, display modifiers in braille during input
+# reason for patching: possibility to lock modifiers, display modifiers in braille during input, HUC Braille input
def _translate(self, endWord):
"""Translate buffered braille up to the cursor.
Any text produced is sent to the system.
@@ -445,7 +495,24 @@ def _translate(self, endWord):
self.bufferText = u""
oldTextLen = len(self.bufferText)
pos = self.untranslatedStart + self.untranslatedCursorPos
- data = u"".join([chr(cell | brailleInput.LOUIS_DOTS_IO_START) for cell in self.bufferBraille[:pos]])
+ if instanceGP.HUCInput and self.bufferBraille:
+ HUCInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
+ if HUCInputStr:
+ res = huc.isValidHUCInput(HUCInputStr)
+ if res == huc.HUC_INPUT_INCOMPLETE: return
+ elif res == huc.HUC_INPUT_INVALID:
+ nvwave.playWaveFile("waves/textError.wav")
+ self.flushBuffer()
+ return
+ try:
+ res = huc.backTranslate(HUCInputStr)
+ speech.speakMessage(res)
+ core.callLater(0, brailleInput.handler.sendChars, res)
+ nvwave.playWaveFile(os.path.join(configBE.baseDir, "res/sounds/keyPress.wav"))
+ core.callLater(0, speech.speakMessage, res)
+ finally: instanceGP.HUCInputStr = ""
+ return
+ data = u"".join([chr_(cell | brailleInput.LOUIS_DOTS_IO_START) for cell in self.bufferBraille[:pos]])
mode = louis.dotsIO | louis.noUndefinedDots
if (not self.currentFocusIsTextObj or self.currentModifiers) and self._table.contracted:
mode |= louis.partialTrans
@@ -511,8 +578,9 @@ def _createTablesString(tablesList):
braille.TextInfoRegion.nextLine = nextLine
inputCore.InputManager.executeGesture = executeGesture
NoInputGestureAction = inputCore.NoInputGestureAction
-brailleInput.BrailleInputHandler.emulateKey = emulateKey
brailleInput.BrailleInputHandler._translate = _translate
+brailleInput.BrailleInputHandler.emulateKey = emulateKey
+brailleInput.BrailleInputHandler.sendChars = sendChars
globalCommands.GlobalCommands.script_braille_routeTo = script_braille_routeTo
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
diff --git a/addon/globalPlugins/brailleExtender/res/sounds/keyPress.wav b/addon/globalPlugins/brailleExtender/res/sounds/keyPress.wav
new file mode 100644
index 0000000000000000000000000000000000000000..f194236193b50d6d6e8b7f891ba51cda5bb21177
GIT binary patch
literal 27982
zcmW(-1#}z95}cXcm1Jf};>2NQW@gTXneoER%nTQ%3o|DUGcz-TotW8@b_agle|ou>
z*wSiurl-5Qs`~zF(y(E}VT5$7)1kqDVPkXq6GA9qWadTuC5aK8_><;M+P3R~e>Q2^
zuvL?KE!u_P?-M3WDA{j(zwv|n^&c^2#DK9S`;Nd>n$-KNzJcGCEnTMkfA6o;;{X4u
zRH*{~)%ve?48JQwnzU`$&KG}c-h2Fj3YANiDO<8k>C&WM@3Flv4J9O)ILJP-lAI+Q
zNDxU>7u8C&NsUteDn*`@yJQ2^RGBIa_tgOJ?MkYX#Uw8oN`9#vBsZx@-jh2-l1up8
zU3FhoRrSa&HIaN!ajLiKr);W)Dy)X9#cHEUQg2ij(wVsMnThlz=}Z@qucQ+hMXKQH
zy@^XLBx&loDyY`UR8d&&6VY;u%!_X+NypPuv^qON`?K6Mf%YP~X=U326>*}g{sotvF>M?#_oIJwo204fK6(zOtJpFOcLFA7T>XjNs
znvw-rPp)FI?#r;&$!ZOmk58Na{>i>B>qW%>y}eM#Ps9k`POHV(okzRSe{jt`xX1Nsr%F_*c;Zs(q1Y|H
z@|}DHFU$|}fxNRUE=!XlPN6=w3o=(8=SWmOD7A%SlX8Tx9T7bU6
zGX$$6Qi$Wr*@8<=02+zkm@nqgh{1Q`SdG%gJkyi99EydciU2HWw%}TH$>>Ymc
zk?zN8=B33*hKf{a^0&M#8)7Y+tNN;>s)Sv%lOrSsd-@(v5kj|7ZK}yM*IB$z_-w#x2qSQb{=K!47mSh51PJAe%SLjCi0nZYJ
zeVn7!(q6EYOw!Br5YFEq-1j$mQErpVWHy;s&KC#7ba4r1a1zc$Z8crpQa+?IS&CO7
z>LhRJ6nc%;r@84y@|twRt{zlVWfw{D>7nvGPElbsPGzaGxbsjlgzO;?NC7$P
zVxg=cyGFZGNxqTIq%`%X&&XS1$Fmh6eTg?tr6*Q%i+nD_kWWUcnRrcCXVqSummm1=
zT=hp@#Wz^8JTdU?B}f)BkHC35uePe{s+cN={kSNvAwC?kmmDPD;#ys09eEw+c`7MK
zmeEpl53Po$Z$nqoqVygaO(Mxxtei&1A}3_3?~1BKd0Fn1S@MZ|fjqQPwnv8OE|okg
z->aqSBpF6#BPXWftXD)fxQVA+O(xtGtL4KV0prOq9Rm8nr@s
z5ii_DW#UVN>3MnsS*jSlL7tGZv@R`(bIxcu?Ldc9j`*odx|89^xrY$}amq%bB~g3j
z4eWOpm4H}lP6m-aWGZ&xmijJDIZ#c*3T;poWFy@74|xjLRTzI%@;9;#w80x@x3e
zIlnoFrjJh_kToLfp?E2((mHgyoFkq1{5AciUR$rLr;7~HUG-G6jJZa4t+%#GY!l5?
zYqdt-sP{1X8`J4RTEeVizE6uuTb;QxvnFfB`r5|Zs0b0l479H5@AUJ=3*(7Gp3@_Y
z@gD0ul0}dllDRtbJpaWLSq^O{eTFl>nO2bl<*O{>T<5ywYD;I+f5~%l(Mq*Kam^DR
z$sS*{Nd2`4mFG3Lw#atNR#x>_0iv2{jT})|byT@|Nq&}GC5N<=S{T;5w$;X3YVEda
zh#q1PT}@ZmuG(_iTG>XEU4+TfvIQA~{9BR~msR9sI+4E9?rL3ez4@-ru78oo;^{H!
zMINYZhO
zAdAUgh}hrwzN?~-IHPK*{d#u&8uEtIY-?^crF)=yFUK&AEyUUj#KkS~N#s{U)F~~u
zp6QtCG0Q8Zssl6
zPO?@-%2A}L`fbZ=yI~A6x?)dqiFu+3>Z~XIKx?ybtrjENJ7oO(?hrFtMoR~~N_XPS
zpHyziY-Nnu`Vp-tA82(l&$%nA>#{BLV~4f1+TZ#FeKg%bdx}-!yoePgNL%2AW~7zs
zpf2Im<|8>tX;PN#M1F0jP1ky}J?s^-hbG6$VLXO6<(K(KRh^t>8SESK${^m3SCm;|
zDl+LaoM8u>OmpZtTSYIM`m?Okn5zsQd8Z`M?IBey4?&cjIsdXG-i{wRO^JY2oBn#r?Y4=jT#
zBF{Ai$`K@bTV5;`?8zr0r3H9JFO0rNcx`c
zVY)T~b^HoxNWLo{Jaco^g;pSLlB^Dh1g^|W<`-T;%)qk@P(JjA%A(0+mexmwu_QiI
zH4|f1oE%2FDNoWy`KoAjQa&J8Wez$>R-)PEYq~*Bqyy!1RaQ{qEfeWol0?t;#l$qtr=b*jp0+)0tTM@H*#x-eH!V${u&wGNIVcAxH)5nFs(2n6NwVQ5{nQCjhWst-(Jg8!
z$quxXg2=Bg!%>H0MH_jJPZgu&cy$ohsKI(@2gw0Cl9Z>X(PW)Z3yae51`ZrtTFpSFVeeoDJ{aj(BXH{n&OkAM3gRm@NUd>744OYRH!&fIqNW^M1TFIsy;X
zoD`FRWV`SopTt(OQVymWY9D(^%4n5H1iMB8SuHJ2i)CM!r>camt0gZ=E{j~mE&|kI
zD}qiIzS>DOnw?RD*g~?0oyX3m6SrDI>Y_WTql%Gwh|~mGPlez-HB(t~3-zT%v`OqT
z%|b@+q8gJSY8QD1jI;)oIt<9^r#ecm(hF(f#qeVx_Z6ucWmUqMmnO%7T
z`5gfsDJOkZdl`><{|{=NM!u*LB!JYT5$GlCt2Go*(aLrhv;OJ~{j{D_`iavpGOPvysb
zL<6&j^~(Ce%L%8L!VhszKH3VCM|o>jn~c;w*bO=uz4CPtLni|dXOOny0g%8Y>xpWp
z+ECPeAlZYgJS(j?)F;q3tczr%liWq_%O3QP=s{kKcR+_P$t|*-&PKQMR<#Bmo=;D)
zby`7IK-;RuNP`$#wJ~zsVhbj<>chTRp`Ioa?q^jtpU+RRR5)4Aq7!
zFRiD(#TI7YXfNv^_VzxnJx>Qr_ca2de4_mlymg;to;$RS^t}1UrQGFRL1tZ7a9Y2V
zl-T2cb|)4{jLvH1eCpOLgKreswXu3So2q%adOF`GCnruxI2*etW9a(Gs>m4$yk)qI<1+rqpORn
zl(Zchbv$FZjX__MgPll`r
zU6ZYAQb6kSyWJin-JWu<$;U6BucsBrY~rwcw$J$^XODbM^Dgr~>+#$*EhD>cqT@-4
z9ff<8BE^;znO*R5(LzOz2h|Vi8Mh>E$A`Ng*8Obyv);FUU$5VrdH3O^r59hmcE0+{
zbeQY4J6d@*i&YCK8_+4+uJCn!#e5xswf&n$KFj$m=ZKucgP(+q@c!&KOFU<%6B}p5
z$HXRzKTDF=WCiiz`cB6S_SX2Jd)rTB?-KE(Se_E!ir*`-u=wTTD+=7me<|o*z$ec%
z`&;kD9$h?U+2$~d^pTI`5@(>#5^yL)G3~rNg=e7xw9$-XbyJOU(OPv15K8pe2~W
z>&R^h>ymSNUi5BV?0E5b-*vt|asGdN-M=z-`w-6%+fKGg-nMFH70sv}{qpCX=nub)
z)Qu^F;x5Gv`sw<$Bax-{$z;~ItoyP*&ExefU_`{1?8OSa4cMK15dXriSu54F(BEOj
za(;+-Dc6bMxGjH=s>YXnI6&?!d5!$Jze)ob?(ko?1(7(Z+#n?rbvn
zLr4%kN{6^!JMW}dOzj;r{`=u?>)&@yc=q#GMpFFOghjuyegu4K^1J+xe>0n;RU{4N
zU}Lf_y9o3s08pXFV{r?Q@66b$GPG&1|z2wx**XO}tFD^KjyPu?Fr9VpSo93PN*!j!~XCFPE`v0A?R^Ie{}Ml*PN%^C!_z4uAfvb{ejUBI7EWGfE>FFj`8%atrkQ*`XNU>eL9U?@
zMR^x@;WuSp=1JX_bT`}R@L-R*9^VsMC-2C3=$gt8(MK*%*?{e~5sx2U22jFqdvm*g
zV2J>4o1d}Gsj|MaJ8W~%`=D
zp6Zq6$Ag-)hq^msLS~#8&5L@Lx5s&uvjy7QXzy*ywGob+#x&o0-r@ezXPwrSj?VJQ
z(B0>=GW6Qo1`p+Ehx)uV<5E@=XLZwyX~rWG%S`7=SACbKbD4~?rsz9K7te;alJ<4l
zV*bgU#%oxONi%gdHAiZr-$!Gg0_{hai@!GCct{MMfZ;yPQlsMH>>xlIYsOMfr_sqO8wSS+F%aIT)ODoN&VywvM
zp6(S}FUH$S$~x}z$+6QO$8H-LG$P=FukbA8SrBY}A!DtryGJpvyyz=-t6}ttw#%66
zyyiZcGB16p04J%1+OKC=&XzIT|J+ZwmAHaN(sw>By%%}S_gHRwsSjrV((9@L2{k_3
zYI^_i4fFQ*o9R*2yRkOd=;VCjVos;?m%iQT>>hPTRbUqiO^H>FjN$W^EE@tQ`7oP4`^k*~6=g_abA0ZI@Zix{^UN7r9Qje)4Ky
z8S2QaJ3ZhV3xH=6lpw
zgdX=5uj_T)_QfyJ^BY?sx@TD_OWprwbRtvuQdyZtxg*@8vW7Y9r1i*%O`4zDAoXE-
zq`R$8}a5|&mjc1GOjgu{u&Gp=N|
zaP2jH+!J`Z8l^9BJn?x*>)9t}&M?=Sn`Lp^cgF+0nC%)6RVrJ?Mv`;txch^viR>u;
z_N(NZ8s02yh)*@IRMFO&PwtBmUYbWKpJ`sheNK802-*}>D<~j1)A7UO2B|?;vC{09
z=Tr~>fLp#!zg#|ldyRJFwD-~@=@Z#T46z=ug4E^F&vDWgVg!;I@*6Pxb@bf@vRY+r
zO}m)>)qNYi#s+yd>z(UYM&~RK_e8f{bmFr_wB>8XxVE}GISaWXoHl2V%>J%y&b4AH
zzs8SR+ugHWL?l_q#V6@~Oo
z*;^f_e(VfoY&L(xcetr(vwB#K!RC(zPuf6^5zDP&=18&CN>mA=u^J@4i2;1M*uk@@
z^U^{6=s(cH#`0bKv-Q=w!`Jd0;vWBQEwrkbY3|XYzA&`U=$xeTb+2}fG!MEJbkAVT
z6Us~$U8mL5#%T97#)7pI*pbm-C0@{~dR1+YagH+G2HTL%xQ-kc7@=
z75Q7erc0oEc2UP=T~UtiQwxo!+Hu=0eUfdE9&3A#_}i~nwY|_=*eBa|8sm(K>Wg}4
zuCta~i}*YFLJg+%*cCdGol;FnmY55E@2;!_l{1wrrHO2?wv~Nn|B&@y2O5#?EQp1(
zPn1b6u9})v)w*JNSjR0LJzR5fTy#)9RB7{tyM}AN^P;%JpMr5{Y!x!6Tb<2H+28wh-b7)U~Fvu*}PT&_%2v
z>qX0gTi6S&wKmiwO1Fcr+e4O+dt@UrK@jznb{TCJvHnKyI{{tuF8cdF)l820+)6SW5c_H@`v%J_WZ;}`~hYi)bvRqnw=};X_!@9u-i&u027^#-pbIqZ*
zakO`=@Eqj1&C$ov*zSW}XaaV$rT(04VvW&HdXrw@ev;%#QJ-7x3NB)CSCY7IUF9px
zl9u6K!iSq%(gvg1-8Cy{mnx-rT;B)i*|vBH9Txgv}=9wcli(
z7EBg1rz}GoL!HVgPpMzLpgeBwwsu&pxFv@`ml+^`n2*c@yaE3S-DeG|=rUH0I$3|}
zt#zV9!C#G#CwPGBEfQo?aaUB}ZRJz`O$_5-&G~LbgFBO_TS53;yyze{$RcuqDxzrm#2waRR%wwFnkizRENG^S6~O0rlw6tCKBF4&4}
zdWL?+sG?UloTL`}h)*?DdFWAjgIut(L@2ubIGG;|*E_7^X%-5Gc@U||%BWzvO0Fc?
zR8?A0jwf@)OBEsdsSj=&U+3KHo@sXG8r1lW$_wmDVV0NJ=}T~T2k~k`FM`iJ2%Xgz
z{AQAvPaCO=`T(|1@6KvaKlK~g@G1E$GfA+TLiWi{YBip&6OTcEI)enL*{ZTk<5#Wn
zmc!g_j&VOX*Sf!&JKRgn{_dgXG`DmQcb|9dbKP>*b5VDI`GF6Rs{FQ~-QDTs6I|OI)smEe;#5>-mto>A|73kP{mj=uO%udP
zJ{r8*Ynelq6zh3Co@~9v89rc^1H;qR?CXAGhMJG9*=BqG)!Hq7i%F`KoT;ic9LgXXOK`n5@KH>tuZJn@c^UjFl3MwBf
zjuShSU8GIvPf{M5zlAnVQiGVEJj)P%%A2^vmp224a9Qs
zjxQ8%c!IbmimENhc*(qxjOQM5D(@y{So!#M+>U`1Z?q0u
z0KMrHRQ@^grd$u6)0do8)v(WrBB%I`b$Kc*-cl^$)2+MaXzRKe3k`H4KVZ4s1>Ggw
z6I}VQt5ISRkijlghGi<6&k#;)CU;x4P&vw4KH@CTO{b8abQ+k_8qlQ=N(&tBEHz8^
zW9_KT_Dese57P>Q(Murv)JSa@bL&m@p1RV8X)UypS_O?mk6FZeg7uq4Z?XW^-L}SRq!OPS$s7nysZV8hh6lJ;n#^jg|w7
z_iSj#Z)kqDk5*)rSfKU~J&!oZubl+Gti)2aO6-D`OV4Gz)TfOQWcXu
zc}vOods0p=rAOd*D9P)}P1Y5%MfRo9YN1*y)8XlHru2vXVo>VKS{;!^T5B84Z19qiDJ7fB~Pn+vNPfGJ9N7z@D=TWcjYhb0c*k<
zu_Mp`{PZ1q2ahuzyFI>ol(n_7HPwsgdG&i*BHPMF;k*lImTOoZwibS;-SU{Qkwel$
z>w&6TgndQsnv8sP8<^w=D$Z8xqZJ`mi2sz%PNY70%vbT;$V9Uc^U=salTqh7K#SQY
z7K^2-h}ug_fWw{*FNY+X(VY!q-Iyr12s~v2bUh8Hp`-Fy*w^M#W`L|)Zz89qxIAu;V(1!b$MDy>_ea|CL)3P+R!Rc
z5F=?xEtNLb8nbb1Etp9GSJ*g`qV7QL`K=1FZuAFqa39+tI1Z+>gUm*g;WBUnErsJQ
z>eD9l6%AoNxSyd=H|~io(nH3<`87&imH&{pf~()WlKNZNfoab{H>yX<$WS#
zrSD*c^bN|7)=(N$+z_@#ZXtikJa9Wr!TFl2g;GyepCpoZ(1fFa{Yuk2^c^ZvAgM?C
zW3~P1dg7r>sOp7y6SQWqsiD_)5g%3vkaZ
z`9m!WCS3{D_8#1V2cY|Rq~A~n2b1aW4HXbc=%_aE
zlTi6fNk3dH6-t)`20x4UoF_NcAb7MY0nPNHSCltd0Nr#y*-nl_ZLK4|@cmH8%hO44
ztR04{
MRVgwYYc*26C(Gq!)fcGo
zqqqPSxUqTyufQK!N8QGAjE9%$p*o3t)IpYk_In<6VghXeOfr#VpuhShcZdvS%Ie6w
zhv2(=hpds?_Q9B<`|HJV8auISEC}6M4(NGz;K}?&iqj2Hi^sx27S8MN!tP1#D0g-9
zy486?1WJn7EKf?vLS&%eayP2tVR2JdBE?WuAJbOwI(fjQ
z_z^i}DBKT6`8F$1RuHqG-UT54Ooq4NB5Tg>X>+wg+F^7ZhuK0FLoeVorNiAR;h0p=
z3p&YU&gDW;NuJ^z#ZT*`n7|`s2-Gz{C|sKO3;Vhk%KUScpR`2(7Xw|I;2xskB&e-8
z{E*k^b#jm<$T{kosElk;1zGwk-gAT?(~^dW`ZTGLCZekBU{&Ostet$Pe5zUjAuW?T
z(BYMbbG94e*2v@X0nyW}h=s3~y%HI?(gMf`>j
z>>xQrJ}W1fpN{GmH1Zk9I`O#Y{lJ8k;H8*GOG4>8ac;kYRh03Yv;CoJ>I)I;tzI_Y|
z>`YBJJZVRkSC&$3MM>FT7;>CEgEf2%AH)cto?r4G==_D%DY;SBl;z++=%nUh$cec4p@L{n^wxEV1#WOKX)fo(&9aroz>#ttF2yVA3_Xb}
zHD-;q*{qYcMLi?$#5-^dGvxwt2o8mx;*-2DkI7Iu8*1+}+M70_$KWd*rcMEkmtxK6
zEw~zXGM#4NJSIS;-N??8!)!IGZ8x0Nd@7LLM$|lz1#l*+zyW5_lkiph5EJ}CRdos`
zo$o-T`Lq?}3T;Aa)7*Qzfv&Q=;r
zyOV=tl6)tdz@ah(Cn-ubQ0Z_-)TM37eoDzy6)*CMY&=EW;)mgE+(*6PFg*?D+#5L=
zsPs2#a4ZnILHof)69uotTsUEl($yAszv6?sj9N5E6dWnthrvq
zD5j-pO@XHE;6t`yS3T7!9!8{@4JYZhd%-?~pKP=riER
z9|;Fkf;N=}8Mn1C?F+R-t!@vbRT!@8iYhzw>sa1VE)lC`8F>ov)IbEwL881Y2v2tz
z_&Y|i4_bTp94@Piq$2pCAEJ+Hhm5%deuZa9tC&MPud<{+(Psh
z`3jf94R{Qf!E-!FJIHyK
z%u~PEck)Nm*n2QE;o40)MsKPm01pSS2c$J3{DS%|`yujo0=ra)BkH{Rg&I^}-4NM<
zs0?)&^~y!xp`+MO!_hYk!M!h1mEoqkE9b(u@QHM$X>i7jKo00{mEzaMS-Dz<0Qoznhu-ubx)~WcMfHOF=`i9j8gaS>HE|YvQTOO4iYv&*
z{FPNneUOcSmydx1zbV^+>fZ&k2nFDo`=(B!+BByX
z=@PmQb!C*coc_z|sh@DY-Gu+X4csQvSv75fzMfUl->XG*8Hr@qS%!9pPGLWR7aFk+
z>?qvrdx6p}KnLm%$8bJbSq_&>c2U)2K79KYa5Bf>$1O}7!gm}5CrBH$N9IN??g=md
z3l#_qJVl$prfW4=2l^e)wi=Q}ss6)FSN?w{3&68{Kq>NG?k2sZOBE+;
zseyhq8$4R&*%t7?LlEypRCaPseo(FDOW8!ksGjm2rasoF$!aY;o4M#BI+x^R9pFUt
zl#AfVQ>X%Cps2iJPk?Qv!y$eWdsq^={|hpCPWaRdidMXcOyzLs;}mLgyNKc=rN6ih
zjF1g;C=qZlKZKX%4ff_BULIplQUg_6Rm2Ts6#x)-eM7S@gZrFkQc+bDxJgtKlqrXv0oy;W8IL-gmfWDZoI7Er-g
z0>SSj8&pyH4fXLYS->(WWt(Xz`nr|+IQ@}P#}=a9(smIqWUk*(LZZ}RK1TGxB*Q!O
zXc_3Ly5dx9#{5bq$wtevn@}d^(*y9NB?23kM<TW;jO3)g`t~CocV_m9HTf2
z95GrhN1uKe9=_Rfi8@QpA)3mvns|R})a&k;KUfERcv&`u!~F?PYg>9B&ZiH2_x~qU
zC|qyjML9Xgih`Qv2%9ytL!+Yz`VQxS01jmQjfSOElfu4XH-jn`~y!=Tugd*X_DfT13#6Pl)
zOhX;-34F4ST$6Fgv8UB&JjV*$TL;ww&tPNyRWw;H8p#`Cp43%aGFhggc3nfR7>t<7
zz-v8SN)#BZ0puCJ>AU7+7L=4&a*94CewY?$3%3|oBfwqNC(D4?p29^{4*sneIP6W4
zh*NkQlN!Nz(p8u!+K!2j{fNFpq#80%ZGaM13&e6IP?!=Et{zj)caM)86jW+KL{^bNBk?Ig8gt8ghpXHV+G9wpXG$x_c{3^|01)b6ZdK()4@ExBb+9Y
zSh%j=z>PQp(@nL=WZt
znTwqspkl$%Z3b7-0&d)GxW;w7tA#v*YX3q!k^jw><)jPX;Eq7HYXGcT26IFSst^?K
z=kO&~gb%I>=>$YJ0DkoD|F6YYurnP~C)3J)>NOoue8*tC*6tf>-
z-Dl&ZxJVFqyRNb@c(X@fPN4xi&l^nxuh(Q+0uEiKS{ZdWdK2F!qkxrRybxLTq;uLyo*iI^hx
zf;a6f)1Zh&qB>+kbLtI7;yAgkW@GlupH2tAH5-1hPqaJj!Uj`?8HZ|k&%eM{kzjyI
zqB_T+XI=p}{v6DsjaLf2#0up5^XT>>Q56%w3{6*ekmKf|fBnxbF6l?I55DlXn38#j
zX`z`w^W$VKi3uF}5of`?^(K1*7>g__rS7*$_tyc_afUD0bj#%gU6A+oU5(<;aZnz=yy>o+HS2kw?W1H_FqJTb^Zs>Q429$Ma!$l
zXz%pw8V5s|tgWREtv)o-!Qd@EqK3DWo8SocLf$Ntv7CvXx;>X0-LH#hK(X=F37!yD*qm)Irxmi1xTQ5PPgS6@sXs;TrpCwqI@
zLX_b>5Tg;837U!L=nJptSFsda!G3gOnNV;GiWEG>L`>;Lh*Cm|)ncm3rAo2xG|K3v
zx3^EUO|soJJ{aCcWh1Y#k3D3=5TE(Mx-67?WRjU-E`g?-XugCF@Xg)aP0ShA3}K?D
ze8Q?~j4su_vpV{4dpFx}+hdzxL3#i*q~H2=&5QM*jWL_IhL7Qkg^Qx-zS
z+MuVogA><*G^1C5StD(AZS9QQwou@|ONgL);JSW73oa%PStig*hTJDP58%zG2
zcsHD}N?Jp$xc))+WM|kxOhA3YtOIft6s`ljJZ42Cx5Ifm+xiZ+_kuXWlhHvp*XnA+
zZL@7XY$J@t`1A;->wWZH`Y!E^Rs~qHnN^7|;a7Nbcw>*a!p!nk4DX3*_g!A*fwHZ9
z%}!}U93i$R_QA$g{jJf>HrhVfkpXwsFV+yB&jM>+6-a)JnPO7sM`vs29@l4gBQscR
z;@>crG7QM305VoCEra$kx*O~5n{D%LJN25{78XQ1fyZ7T^IFMf2Tc0h=ch#qCXQ^x
z#C%vT_|`AeW?FU4L$~WCpg@!n4@4PNMm$zFNqC&~-Tm72&bsNoEE~v^WG*mvC+J^q
z$X@h5A^K~rverZ^tX0!5>&tCN^o7O?bOt^+Pu0jmjlzL@pHx&t31&G>tMk5
zK}%btO{CFq>7N5KxT(D0ZJ(&B+438U_11;}PVz)Qok^Flh5R2i3fx#E5WNCgFKX?w
zvdQaw1o;Bxvlr=tD{NNL;IEfqHg~tGg?#x3*<3&^4_EV)+wwuZ)-WA9k`1D{Sq$5c
zp8r1Y0GClA#1D%Lr5lMliaUa$XVM|G23F=lDHz6ZSW
zIsG7>bv%uLS`iMeW+ojh3L^FnU`E-LGu=9Pq2Y3xUR0~c<{IeSv?lhd`g8kmV;4L=
z_pBbGvDRKKr=R2i_foiz{xaKJ-Q4-j#b&&DSJj4J-J!aR7cv0Vt+Mfw)YJN)qZ)_l
zfScM`J=Hcso3DG(hFT^1i&5gGmRY@3FW%R9&Z_B?*jKRyd`mQx{=(WvI+`Znj6}ja
zU4U$%{vs1NY8hE3YtXAQ7f)2tW~7RcF_``^`
zJMtZ94gPv$X5H-UYUK)dR(2*^3#?$oY<1L<$-JGoCL$PNQTBdxh;c^-K}|jm&Ta=*
zGP`^P&b9~q$^$Vgf1e(JLbTpx@=$k4%$7e<%jGodwR@knSdiJW0mN
z6__bhCZM(*?l;uMjJ=OB|Vb{
zvP;?#cy@1US1qXc;Dz7H5Fow~y^yw)eN9JM^@4zDewoS5*<@!XWLLHIf#0_tM&lsk#r(Qhw%2-bk56>5$4iySmwvqD;Fy+3WEe=(Xnw$e<;N7n=zqpr!qwsdW)HC9h>?h>0x
zkn0eoRvVd(jrpd
z%MusQg}yAzHdsFKn53H8`f2^Nze#m_XZf$=J|^#*X$z6V)~I1bGi$5E&K<0a*yuPc
zN9akGDRc8@^p81&nr27*UmRW{@XxBGAQ()t1JqK9;nK>dxDS39dZyG~@SPs)|DGy2}Ir=Od@AODWMw>|IncF)Vw
zul(cVW3n4@9=*aE<||mlqf~g+?$vx+U+OqwP^WPx`_CO5)U->@X_c21?_a!PsW$-~
zLnG5xM&EwE{c@dSw{~w_H+$9J%batot~;~5{o(Wjfl>RTPMke_!F=BA?Pph*S{9x+
zZ_m1MZQKI_Cv+K5f7G2$%X|N6e(SG=`Bjdosog&pN!=d1AmUU09=R)L`~1D|^?$Ed
zICL;`ko+9%9a%o{==bXhWuo8Y8Cdak_EY6+{~3|6IiYo2lb}_3eR6#(Z+TS;UY`6l
zw(7TmA7qSg^qJ%yiEU(At6ylJ(3e3yLPp4n<{vGWIVPyC@3)}qVI_0y%bgHWGvb#y
zIwRn1;peMf-hR>c_0gC8@7}%WyjJ|omDgWByHm<*6;ppFw)s=(O>ytDL9)5W(1ecu
zeHY}jWxGRq+g95f=V)iy`S|BWZ&kSCbEo_d_wQG6|9-9e`r>8(ulXL&4h!^-Dm^;y
zRiAR=n_kcwUZQSs-xA}BE!S_0oOBx>rV@?tFRPM#6Z^|;ksXRO^jjMUQ*O!=N2jo3
zB?7BF$~id42H(3{;cW8*?u9=KKI?VORwi(!-4+LRB8qJ-)Ft1~+y#7MJ)HKtq^o}+FVka~ePl*J
z?5$tlU)29N^>x$dzu&ceefV8O;^RLKmY}upcpH)txFUCC{^2D{m6}<7RmrurmlXU~
zE<9p;uC4*sd=Cj9-YQ!Ac_!w4w0{IUacK3T_lwCahcj
zoQ3A*Y?g0t;EV7X{<(st+Lzn!dk(dq2(9k-ocW8N(cOQx{}cGLZpxcKi{pAl2gFy2
zai@1lk>)uOXhxAWsfn%+=>}MqK#!|(5$kBxlrd0~j?+z9mDtIweD=B?m0dIB*TlQ=
z4>3z?*CrSjV?V|%O!7&1!Sd)c%pb~`P#~En6-h}>4-#YC9<~RrvDVr2w1jx&V;1tW
zy#F|o94~2GZI
z&VuF(=NxzKw7Mk0JJ7xL$eW0VBcYeoW|84eB{(F2%d1QK?
zG1?hhZ7b|I^g5m`Z52FoIJOyORR$mHY9VKc$wmQLg0##Ea_vrQ^Faly22?<^hizNptXfMkd#^-SoD*ojcCFn~^HNxpixpdxcfkZ2cb_;hM}J
zWxUD?5&r59U1YPVh5sq(e3s#fo^8GBYno^Br_@5R(^EFb7K!Z=n-Y^5BjbxDcqT4&
z1|-2j%uTO&?~0Mvy)$wRv9QT&lg10TGq~o2fq$iYszyjv1b}ZCAYGyblM(=9m+an!SG5ch7k5GmfGGl|qYV|B|zGc(oi8
z0|$nd52)_0Qq7wXtF5
zn#9p0RK@F?d=p6n`@fkx%m>L$_>7E0td{!M-rm07yP9pR_i$~2qkz#CnDe;H-%L(v
zXr`oB6?w8cnR7Gxnsv;ova)uKk2ji%T()SN;dRk#rvDecabP)>;oFSVbWpZb57N`@
zeT;36Lu#*On50bU!l
zBYJPok48<;?b>*K5nXDZq?;ZK#5(ySB`f1m`T_S-(HZ);ugjYUW;JFdvPP-8N!c=<
z#cs>wscY2s%o4nM%D#*X>BBiU8)^$O6P$xmha?m0y0ab)mJLZ0xzN~b``6*`dzXyx
z*eCrRoov_qia9z54zsQIYwr>7>9!RWnoLXCD+;*=+M3#4dS*FF+lv|h{a>RxTZ2qb
z-dl`gl|1TrJn~J(%v?|3gTA}HJNry93b5kprgfX0G)j0XpQ0ZBA+`&t*IoM(n>$};
zMA1Mw!n>kg+%`mCZo1e3Yp}Ldl%b!TO{ua<_%!l59s0rltM@$54(fj$od&tr2RMQnU6BB{JXfjC1~1{-1tC
zC2!vMdCs`cea?M-zfX1dVx^k#h1NrE4$PLlGow7k)xpLq^;Bk`)SGE}Q$IM@^)2=W
zqjp-Kv@sb&l2yN*-1EP*H=Ev7&-}*8qR!FMJd(ORb7a&M@)xzW{i2~L5}fVL(1+wa5`Hi|pKFX-L*E}r
zR~u%QwXa)4@wxfcIB1nKK5<)NZ=-WZm5ExQxAMI6zxVtWnC*QON)pquV$+v=P%|5*
z4Yhvuw@CXp_3Z05DSrk!D2Ya;u&Oeh89!euVqA7l3JsAfWTZD3Q6={^rJ1%Za6hxM
zu~qrU*e%CcZGvCPyzZ&m>Bxs7U2X3~I{kw`Dpu&Qem=Z(tYj=r=1
zf7;~W7r|%Nw!pyP9I?rNMI7~)w??M#)D{I2BM140f7Bwknd|rHvAMPInXbLI2c~a?
zdRhz0&E}lo@yy?yecH#OqLG%iC+lWP%TO@=s8K%Spwcz;v2fTIeWg!u8}LC5-|N8I^*a
zJhy$lUE@4Gy(@evdB^4JlshImJ^Wu+Y=J2`uM~>Tw~PwkRp)_K^P{m5rCq-nBarVh%Q7ToYrujp%G10s|B*D^JIO{jhNH*#%eh4*>Ok2kQ#Gq+HI-NY
zH!7xh?s<7!Zho6rZ}l7`QM&PnV2?8$?4vtd$m>a
z+fXIf5$(8pnD-~Ou(s3tt>MYlA-tX^Mf=9C5S-_#=bZ9T>j}o$w5E)4Cx?Bi?{U`;
z3^&I+Q*6`Q&;82vhv%94)>XiJ$#dJ=$n_WG^<9~+PxPkw3c42=$KbG9S$XXf=F(tZ
zf8{_*Xrxlt{nB?ntb;F3KcXF@mhi~E*86c}_sBTCyBcHr%+^|0rIFkbx|)$I+q!;re;)qaHPqeEd(1n|
zd(4Alh{&mKwz??!A$xW@MV!I**W#=>Sg7VjPDn-t)>-AP{gAmE^rT=#5tX$iv!rMk
zs_$9iy5#xMchpiSrF>^rI&-XF9lt{&=ptt54pPL3&JaC@lA*-?_XQ;vH}x;yzU>2XFOA=N2D*Y7AtweKOwPQd@Y
zbAEQ#izQAI>U|wt&9#`wmF_`NpL$<}75Dt0moTO)X;jp%QLW0U`;WZjkVr{_KJu0r<}7)3dNWg
z(OIMg##!xUN7s1m3nRtv&WcH$oLb77AojaMo{Qeg?w@?8y-mXAgwOZv^;B|&xu$w9
zdkclP4u62U%4o5A9Ih`f~SB
zPflZ>zQSmz|Kb_P*>^72VSI{4%N#HpSM_b~{haPy)-TyZ?Jdv<{XBiWrQHt=&FHF>
zcF!hh&W~qG1?3CW3uj#yQSb!CpD12#(jTL2MV<`KvwE0&(6{77=`>m^q72ZB=;e(Q
zF2{Y&RmR;#uc@CZ9{lT@;J>Ol*RSA-@q&mba
z+?nBTJ?FKCFf}!m`<_JaMQ_NRMdjhLb&7g+TlZz-ss2J+4+j&c#ECnq+b$@!_y+`z
zXAKJ^*|n5K+HbCcT6evl(n#wiPihUE>7o?wgi}PcRzUsEokQuXMZkPbfrweCf34K^
z?$!!Lcsz5%Z+hIGecBuSPbXgc+!?H{m96#F+DMm0h3k#hh>B1yrH9j%(c0KqDATlc
zdL-4Ie9k3%s`<59*!H8hNHYEALeuMf1ke00u2Pki{q{g7$r(nKa)f%D)1@Ki1?OAq
zniFPKuoKO9<~XN;(~L@gqWU>LLLRM!aZjzMeNek-%eB#P$e+W0r`t81t9B0iA+AlG
z)Pd@2>4vweuARhX?Vb~Bz2TbTA%3IeP^XhU&8lpEYV{2c3;i!tJX8=)_zN-8nH-#B
zwnxuA{@YV~9(nq>xDLsw8+C5KMLwf4z
zVR|Kq)cjCyv(#9$TGyeP8d6gj=~RcG8*dCWel{w)4!craQQmdFME5=KF;{c<9?u8Q
zW!HT7Mm3ul-e#}i9-o-QgWp^EgYE1WW({kNb(XuhWYq{}+8xY;W^wa!R#MifK+fPw
zxmz8{>Ed`8mvgX1$JqbZ5sQ_5RuL!8++^PJ_w@gPzuQWsmcCiGOJfCMZ>%`O-4WC_C-E(7TVQHL9UBd}5M9Ma<6DedbWK^^2Y1WWn7T`mgFjD(898
z`MwtOweix0GWUC}oOVlgka@&fE7qA~J+{l+f0-jfEB#gdNtvnsBy{X0O^f_c5zjj@g&f(+rrJOq{%2@~Zuv^Dxw0^fFCyi0V}9mYMU+xj5!6#!0doYO+y!
zq8@N1dMbFzdvkeeq8@j9Q@y!-`CXqG$yyCn=wYq``e}E(NXBz98tp-EsQpa+g!oD>
zwm)%Rae99ZmbIty1|Pt_sMY@BOeMFm6;)>*JwhMP8k(2dUUl`JH0`ri%i!eDH`Jr*
zI*rh_H?ilzId;eQ@ra#fAGHj71@V2E-UL$a2x^WCq7;1M*IEpu?h2)xA@qHEH~m|&
z-|2_?$18@}ckNqNZ?e9%s3aze_x6>*l|XHOYkxtqph29E+(4=E8GfJN%P_IpnSvgy
zF_oug)+T!^+SHoPTyc{f>K$~pH_fj0I%m3?B}<{+8;9=qXZ)eU)KBCM6eMmV$vAC%
zZ!Ez1s1pjEy2>-yypQ!IWC3SzCM=>Yqw13ksSyER^OiWa3#P0hb-_QB>H2UzS_J+7wTWq(-)
z1$HtV&>8!ry)xvoV?!J5C@V~Cv)?F>MN{L6I^9*yh&1vUL)E_OGW^%pLn-;SHTo2o
zyhY-P7^B|RI;#n+#wL}m^Hgxht0UzDITQA_vSLA^{;k}DW^Lih=jx(j3sJ}wp2W~mWAep!l;mLH#>^w_DGRzd&NroDL%h9oN~?;XNTQ^s(*J^
zV^0M6OFbjO$fwnT)m()??@4qxv1(hrvF3w;%BOxnW&OE&RGv_NQJd+xT+iGQt`hEe
zZ7ob&lv*FEdKU!IEON-RfRa+em
zxibd#N&mJLLd=j^o`sT{l^6n?U`oLZNmHbwnlYW7e)q+B!K#Z2@oA14p)#XeNBPvYBW;DiTG8
z!)4aO=lY0!#Tkbm#9z*C5ed=vh*h?PQW71Ik85uy(;x<(ieKbGQ42TK958`*QM9DW
z1vqUtw%v}jJBwRRFL~cdVx(>qtEmkqGw)x?bo3>~8LdCU(>EsTeUBPvIF;Xt@MsH^
zQ4r9x@d+E@$e6^LDkcX|<$F^|FiT<*rQUE{k
zClDhosH-n$$GutZLC3O2Mk|jvC+bbif2`h;zcWG%Wg~lqgVdZSDF<+k=%qx9yQoUT
zsF{~QX?0%?khy4=&a8~dcsu?{>>kPdNR$)sI*o(U>jF2{k(_IxSjW8R4cXO4twtO!
zDz-b7#d8?GI5`eS_S&o}qvc`lxD{3R$6^vay$~<{M(Crb)4o;Udxwf+A{Mp9Gw}=}
zFPrUL!#hlM;_Onkurgrgf_4=c;h5A0JLNQu3;_S!k^*B+YW!+O^Oev@os3_=A+{1NW1se+oldOlHYL%+DoogD+rXr$KX%fIz!|Z{ZH~R8y7a>M4G6
zG%fZOBkCB{cZ4K(o7dqwx1tw)KuhOjPkxMQ>`REL$$0U<6^W=SeuWk+tNx8AY-PB{
zJIW14@-GS8WApSDx&!f=&EMO`rpUCb;9{7L9KUgLIu4du`SR@U{hJNa~d
z6pZ=tI9!Iq;&lGBW|wr3wm9L$iDJ$jrv|=}FVWMsVkGVsUF36kx3i)R{O<+a#bb!G
z&E-wT*OziF%yl#huAb=PXDHp#(;R30TEratSFV-~P%`0aAS$#F0{-7!OR6h!zG(0FfqCRY^Ok#Z~i;Mg;v=>8Yu`gg&ZLVYr^J@g2_l@NV
zw19QwTH0hgS=c$|Rs{QlN8$`~u&SJn;%=2QK`d~}i*t5m=Lg%ir$BxSYl|IjueQH*
zHaKI%&y0|5C}V;V0G&^nX(oPO#bN*XI(K2*RZ@WUO;^)6?|rNWy3LwmizUt~2}
z2z+Is54$RPx!1Xj6ZGrM(%!UVXGT#YWg$6IxH?hUPs}-j9^o&=r8>j}!3f1e1$F-t
zW@riCX&kK_C+~=I%wml;si1aYpE?yEfr46VHBp@Mb81v!v;Hi7uRS9Hb8J&smiP22ZHZB>QQlEkQCmjXSu6ApbW
zap4Av7mqBC$L%s^>utvFZGKuAdOQWP<`0PM6RcusaOFc-x4%TcA=HleEZ=9g;C4Wy
z-wJ2QjABm4l6&RW)~g+}={Q*M2SmppKTBe#pQQv)95d6%r{+Q5cPHkA;Ar;A7R0G8
zC<;@_t!m)~JD!zuARJO{XxKQ`pQWr#Z)AU-H;^BX=)+v~pG3@AJj>yO_>a3g#GIRo
z&wgp{x;gQ$GIVqrKK=*A0^-N7#H7lM^kTRoT~yAZWB!CJco$lQbQA%187ZZesi-d-
z69*QeIM@Q|e;R@}feLam@o*|_-cQM`-hljGL`?VuCC@>g6yZ?e&!+M^GP;H`x@M3|
zzC;^7l?<6&y~<&T)&;E0t?ALB^x8!{B|4!ZF8EdE-Q2)esYJ{y#PhQMn3gFzCPhTj>6m@C68Ocs2ayiegd0a3q^8K
zeltwX3AuldS57DLw`CPefMCBwZ(rn28W3TN@;>S0J%?}~zD4}?lC$^Mis7A#
zsf(`sxD$)k=QOL=HT)R-VjarsbXJi^;vFl)J8_lhnC+*$7zd=WwA3d0E)Tt&N?(j(
z#O%TM_#66tEd>5`l%D0#ja9_G;~DqyLivd?`jYlJ%hhcq+RuQ&f2h>N9k@1eLL*b3
zDKDUC38LJHP^XcHzgPUIkw@bZRg+V(D=@FeY4PP~&Z?q&((y0Wcuf-7c4gw<9N7g&
z+gCy*T9+nTjADEw%QE!#JmTYbC~aHA$~927p@(RT61$DWgPXm`bvy))6IpUIQ!A6%
z4Iwiqgia(}xhq%T)svSPQkd(y#118%zMDoQxybBnM$gP>3)cuh8*M)a>u`;BF{@+_nH&+!r@9skY|~U)$+`xf6yiUhO_qq#(x&-AB#12H0qbni3@#*0^3kX
zmgloht63<4-Z09lLKE-cwU3w+0d@kt7#)>(59$_-y+*7fF+`lxvJlTu7|i;+o@WE~
zAR@LUBF1oKI49wgP?ochg;Z30tj~*yRwIbah=JmMz-*7}y{b>fI_dC_!BR@OdfJh#)TH;Ab==L#85VN?
zSLpeB?DLXn?aRc#M5f!a01F6jmPj~xXAO5p72?M
z)`((^c2!${4iZmBuNqhsNwdCek`vPb!Mym%krH?`?5b*?~LDH
z=qZ1;f{8Kzlu@~iJo_O3uFfk5@!Q$)8n5fk
zI@XR>8OeU%K&k$YcP`D@W-b`_X`DrM=eLUR`b74t_fR5^q<1T`ez)bi!chxu;*}A!
z!Xctt_V_y_lK9jVT6F-wHH4q+V;&mh2!rGtG`BUlo}x+*6jFoun#kA+@g%aT%Krhb
Cgjh2G
literal 0
HcmV?d00001
From c66fc0373c07195536a1137a9cea00a6f9d7e03e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 10 Jan 2020 16:42:48 +0100
Subject: [PATCH 08/87] Fixup: small fixes for Python 2
---
addon/globalPlugins/brailleExtender/huc.py | 6 ++++++
addon/globalPlugins/brailleExtender/patchs.py | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
index acc21664..bb691c92 100644
--- a/addon/globalPlugins/brailleExtender/huc.py
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -1,5 +1,11 @@
#!/usr/bin/env python3
+# coding: UTF-8
+from __future__ import print_function, unicode_literals
import re
+import sys
+
+isPy3 = True if sys.version_info >= (3, 0) else False
+if not isPy3: chr = unichr
HUC6_patterns = {
"⠿": (0x000000, 0x00FFFF),
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index d581f81e..115f02b8 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -410,7 +410,7 @@ def executeGesture(self, gesture):
raise NoInputGestureAction
#: brailleInput.BrailleInputHandler.sendChars()
-def sendChars(self, chars: str):
+def sendChars(self, chars):
"""Sends the provided unicode characters to the system.
@param chars: The characters to send to the system.
"""
From 5170826001ae00b53f86aa9d66a1f9c325855a04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 10 Jan 2020 21:41:29 +0100
Subject: [PATCH 09/87] Disable HUC Braille input in browse mode and during
shortcut compositions
---
addon/globalPlugins/brailleExtender/patchs.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 115f02b8..36d9aaa5 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -495,7 +495,11 @@ def _translate(self, endWord):
self.bufferText = u""
oldTextLen = len(self.bufferText)
pos = self.untranslatedStart + self.untranslatedCursorPos
- if instanceGP.HUCInput and self.bufferBraille:
+ ok = False
+ if instanceGP.HUCInput:
+ focusObj = api.getFocusObject()
+ ok = not self.currentModifiers and (not focusObj.treeInterceptor or focusObj.treeInterceptor.passThrough)
+ if instanceGP.HUCInput and ok and self.bufferBraille:
HUCInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
if HUCInputStr:
res = huc.isValidHUCInput(HUCInputStr)
From 48af89034db0b09724072420c25cc9bb9f68e5b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 11 Jan 2020 13:11:11 +0100
Subject: [PATCH 10/87] =?UTF-8?q?'HUC=20Braille=20input=20mode'=20becomes?=
=?UTF-8?q?=20'advanced=20braille=20input=20mode'=20This=20mode=20still=20?=
=?UTF-8?q?supports=20HUC8.=20Also=20it's=20now=20possible=20to=20type=20a?=
=?UTF-8?q?=20character=20from=20its=20binary/decimal/hexadecimal/octal=20?=
=?UTF-8?q?value=20New=20default=20gestures:=20NVDA+Windows+i=20and=20?=
=?UTF-8?q?=E2=A0=8A+space=20for=20braille=20displays=20supported=20(previ?=
=?UTF-8?q?ous=20is=20in=20conflict=20with=20f8).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Profiles/baum/default/profile.ini | 2 +-
.../Profiles/brailliantB/default/profile.ini | 2 +-
.../Profiles/eurobraille/default/profile.ini | 2 +-
.../freedomscientific/default/profile.ini | 4 +-
.../globalPlugins/brailleExtender/__init__.py | 11 +++--
addon/globalPlugins/brailleExtender/patchs.py | 46 ++++++++++++-------
.../globalPlugins/brailleExtender/settings.py | 2 +-
addon/globalPlugins/brailleExtender/utils.py | 11 +++++
8 files changed, 52 insertions(+), 28 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
index 94e58538..d73184d3 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
@@ -60,7 +60,7 @@
reportExtraInfos = b10+b5+b8
getSpeechOutput = b10+b3+b4
addDictionaryEntry = b10+b8+b7+b1+b4+b5
- HUCInput = b1+b2+b5+b8+b10
+ advancedInput = b2+b4+b7+b10
[keyboardLayouts]
[[l1]]
diff --git a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
index 4e4acf9e..6d896b72 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
@@ -52,7 +52,7 @@
nextRotor = space+dot5+dot6
getSpeechOutput = space+dot3+dot4
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
- HUCInput = space+dot1+dot2+dot5+dot8
+ advancedInput = space+dot2+dot4+dot7
[rotor]
nextEltRotor = right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
index 1e47ddef..c412d25e 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
@@ -52,7 +52,7 @@
getSpeechOutput = space+dot3+dot4
repeatLastShortcut = dot6+dot7+space
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
- HUCInput = space+dot1+dot2+dot5+dot8
+ advancedInput = space+dot2+dot4+dot7
[rotor]
nextEltRotor = joystick2Right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
index db6753ac..2759a322 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
@@ -51,8 +51,8 @@
priorRotor = braillespacebar+dot2+dot3
nextRotor = braillespacebar+dot5+dot6
getSpeechOutput = braillespacebar+dot3+dot4
- addDictionaryEntry = braillespacebar+dot8+dot7+dot1+dot4+dot5
- HUCInput = braillespacebar+dot1+dot2+dot5+dot8
+ addDictionaryEntry = braillespacebar+dot2+dot4+dot7
+ advancedInput = braillespacebar+dot1+dot2+dot5+dot8
[rotor]
nextEltRotor = leftwizwheeldown
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index f3bc704f..a46c1d86 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -161,7 +161,7 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
lastShortcutPerformed = None
hideDots78 = False
BRFMode = False
- HUCInput = False
+ advancedInput = False
modifiersLocked = False
hourDatePlayed = False
hourDateTimer = None
@@ -673,10 +673,11 @@ def script_cellDescriptionsToChars(self, gesture):
ui.browseableMessage(t, _("Cell descriptions to braille Unicode")+(" (%.2f s)" % (time.time()-tm)))
script_cellDescriptionsToChars.__doc__ = _("Braille cell description to Unicode Braille. E.g.: in a edit field type '125-24-0-1-123-123'. Then select this text and execute this command")
- def script_HUCInput(self, gesture):
- self.HUCInput = not self.HUCInput
+ def script_advancedInput(self, gesture):
+ self.advancedInput = not self.advancedInput
states = [_("disabled"), _("enabled")]
- speech.speakMessage("HUC Braille input %s" % states[int(self.HUCInput)])
+ speech.speakMessage("Advanced braille input mode %s" % states[int(self.advancedInput)])
+ script_advancedInput.__doc__ = _("Enable/disable the advanced input mode")
def script_position(self, gesture=None):
return ui.message('{0}% ({1}/{2})'.format(round(utils.getPositionPercentage(), 2), utils.getPosition()[0], utils.getPosition()[1]))
@@ -1484,7 +1485,7 @@ def script_addDictionaryEntry(self, gesture):
__gestures["kb:nvda+shift+k"] = "reload_brailledisplay2"
__gestures["kb:nvda+alt+h"] = "toggleDots78"
__gestures["kb:nvda+alt+f"] = "toggleBRFMode"
- __gestures["kb:nvda+windows+h"] = "HUCInput"
+ __gestures["kb:nvda+windows+i"] = "advancedInput"
__gestures["kb:nvda+windows+k"] = "reloadAddon"
__gestures["kb:volumeMute"] = "toggleVolume"
__gestures["kb:volumeUp"] = "volumePlus"
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 36d9aaa5..aae942b5 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -39,7 +39,7 @@
addonHandler.initTranslation()
from . import dictionaries
from . import huc
-from .utils import getCurrentChar, getTether, getTextInBraille
+from .utils import getCurrentChar, getTether, getTextInBraille, getCharFromValue
from .common import *
if isPy3: import louisHelper
@@ -481,6 +481,16 @@ def emulateKey(self, key, withModifiers=True):
#: brailleInput.BrailleInputHandler._translate()
# reason for patching: possibility to lock modifiers, display modifiers in braille during input, HUC Braille input
+
+def sendChar(char):
+ nvwave.playWaveFile(os.path.join(configBE.baseDir, "res/sounds/keyPress.wav"))
+ core.callLater(0, brailleInput.handler.sendChars, char)
+ core.callLater(100, speech.speakSpelling, char)
+
+def badInput(self):
+ nvwave.playWaveFile("waves/textError.wav")
+ self.flushBuffer()
+
def _translate(self, endWord):
"""Translate buffered braille up to the cursor.
Any text produced is sent to the system.
@@ -496,25 +506,27 @@ def _translate(self, endWord):
oldTextLen = len(self.bufferText)
pos = self.untranslatedStart + self.untranslatedCursorPos
ok = False
- if instanceGP.HUCInput:
+ if instanceGP.advancedInput:
focusObj = api.getFocusObject()
ok = not self.currentModifiers and (not focusObj.treeInterceptor or focusObj.treeInterceptor.passThrough)
- if instanceGP.HUCInput and ok and self.bufferBraille:
- HUCInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
- if HUCInputStr:
- res = huc.isValidHUCInput(HUCInputStr)
- if res == huc.HUC_INPUT_INCOMPLETE: return
- elif res == huc.HUC_INPUT_INVALID:
- nvwave.playWaveFile("waves/textError.wav")
- self.flushBuffer()
+ if instanceGP.advancedInput and ok and self.bufferBraille:
+ advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
+ if advancedInputStr:
+ if advancedInputStr[0] in getTextInBraille("bdhoxBDHOX"):
+ if advancedInputStr[-1] == '⠀':
+ text = louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr)[0]
+ try:
+ char = getCharFromValue(text)
+ sendChar(char)
+ except BaseException: badInput(self)
return
- try:
- res = huc.backTranslate(HUCInputStr)
- speech.speakMessage(res)
- core.callLater(0, brailleInput.handler.sendChars, res)
- nvwave.playWaveFile(os.path.join(configBE.baseDir, "res/sounds/keyPress.wav"))
- core.callLater(0, speech.speakMessage, res)
- finally: instanceGP.HUCInputStr = ""
+ else:
+ res = huc.isValidHUCInput(advancedInputStr)
+ if res == huc.HUC_INPUT_INCOMPLETE: return
+ elif res == huc.HUC_INPUT_INVALID: badInput(self)
+ else:
+ res = huc.backTranslate(advancedInputStr)
+ sendChar(res)
return
data = u"".join([chr_(cell | brailleInput.LOUIS_DOTS_IO_START) for cell in self.bufferBraille[:pos]])
mode = louis.dotsIO | louis.noUndefinedDots
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index cea602f6..a6481101 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -418,7 +418,7 @@ def makeSettings(self, settingsSizer):
_("Dots 1-8 (⣿)"),
_("Dots 1-6 (⠿)"),
_("Empty cell (⠀)"),
- _("Other dot patterns (e.g.: 6-123456)"),
+ _("Other dot pattern (e.g.: 6-123456)"),
_("Question mark (depending output table)"),
_("Other sign/pattern (e.g.: \, ??)"),
_("Hexadecimal, Liblouis style"),
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 98680fda..2b3dcfac 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -23,6 +23,7 @@
import treeInterceptorHandler
import unicodedata
from .common import *
+from . import huc
charToDotsInLouis = hasattr(louis, "charToDots")
# -----------------------------------------------------------------------------
@@ -444,3 +445,13 @@ def getTether():
if hasattr(braille.handler, "getTether"):
return braille.handler.getTether()
else: return braille.handler.tether
+
+def getCharFromValue(s):
+ if not isinstance(s, str): raise TypeError("Wrong type")
+ if not s or len(s) < 2: raise ValueError("Wrong value")
+ supportedBases = {'b': 2, 'd': 10, 'h': 16, 'o': 8, 'x': 16}
+ base, n = s[0].lower(), s[1:]
+ if base not in supportedBases.keys(): raise ValueError("Wrong base")
+ b = supportedBases[base]
+ n = int(n, b)
+ return chr(n)
From de11b8003cb106541e8cc8f2df1c8f8bae42005b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 12 Jan 2020 10:15:25 +0100
Subject: [PATCH 11/87] Advanced input braille mode now works with a contracted
input table
---
addon/globalPlugins/brailleExtender/patchs.py | 99 +++++++++++++------
addon/globalPlugins/brailleExtender/utils.py | 2 +-
2 files changed, 70 insertions(+), 31 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index aae942b5..37deeb00 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -425,13 +425,14 @@ def sendChars(self, chars):
input.ii.ki.dwFlags = winUser.KEYEVENTF_UNICODE|direction
inputs.append(input)
winUser.SendInput(inputs)
- focusObj = api.getFocusObject()
- if keyboardHandler.shouldUseToUnicodeEx(focusObj):
- # #10569: When we use ToUnicodeEx to detect typed characters,
- # emulated keypresses aren't detected.
- # Send TypedCharacter events manually.
- for ch in chars:
- focusObj.event_typedCharacter(ch=ch)
+ if isPy3:
+ focusObj = api.getFocusObject()
+ if keyboardHandler.shouldUseToUnicodeEx(focusObj):
+ # #10569: When we use ToUnicodeEx to detect typed characters,
+ # emulated keypresses aren't detected.
+ # Send TypedCharacter events manually.
+ for ch in chars:
+ focusObj.event_typedCharacter(ch=ch)
#: brailleInput.BrailleInputHandler.emulateKey()
def emulateKey(self, key, withModifiers=True):
@@ -479,6 +480,64 @@ def emulateKey(self, key, withModifiers=True):
log.debugWarning("Unable to emulate %r, falling back to sending unicode characters"%gesture, exc_info=True)
self.sendChars(key)
+#: brailleInput.BrailleInputHandler.input()
+def input(self, dots: int):
+ """Handle one cell of braille input.
+ """
+ # Insert the newly entered cell into the buffer at the cursor position.
+ pos = self.untranslatedStart + self.untranslatedCursorPos
+ self.bufferBraille.insert(pos, dots)
+ self.untranslatedCursorPos += 1
+ # Space ends the word.
+ endWord = dots == 0
+ if instanceGP.advancedInput:
+ pos = self.untranslatedStart + self.untranslatedCursorPos
+ ok = False
+ focusObj = api.getFocusObject()
+ ok = not self.currentModifiers and (not focusObj.treeInterceptor or focusObj.treeInterceptor.passThrough)
+ if ok:
+ advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
+ if advancedInputStr:
+ if advancedInputStr[0] in "⠃⠙⠓⠕⠭⡃⡙⡓⡕⡭":
+ equiv = {'⠃': 'b', '⠙': 'd', '⠓': 'h', '⠕': 'o', '⠭': 'x', '⡃': 'B', '⡙': 'D', '⡓': 'H', '⡕': 'O', '⡭': 'X'}
+ if advancedInputStr[-1] == '⠀':
+ text = equiv[advancedInputStr[0]]+louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr[1:-1])[0]
+ try:
+ char = getCharFromValue(text)
+ sendChar(char)
+ except BaseException as err:
+ speech.speakMessage(repr(err))
+ badInput(self)
+ else: self._reportUntranslated(pos)
+ return
+ else:
+ res = huc.isValidHUCInput(advancedInputStr)
+ if res == huc.HUC_INPUT_INCOMPLETE: return self._reportUntranslated(pos)
+ elif res == huc.HUC_INPUT_INVALID: badInput(self)
+ else:
+ res = huc.backTranslate(advancedInputStr)
+ sendChar(res)
+ return
+ # For uncontracted braille, translate the buffer for each cell added.
+ # Any new characters produced are then sent immediately.
+ # For contracted braille, translate the buffer only when a word is ended (i.e. a space is typed).
+ # This is because later cells can change characters produced by previous cells.
+ # For example, in English grade 2, "tg" produces just "tg",
+ # but "tgr" produces "together".
+ if not self.useContractedForCurrentFocus or endWord:
+ if self._translate(endWord):
+ if not endWord:
+ self.cellsWithText.add(pos)
+ elif self.bufferText and not self.useContractedForCurrentFocus:
+ # Translators: Reported when translation didn't succeed due to unsupported input.
+ speech.speakMessage(_("Unsupported input"))
+ self.flushBuffer()
+ else:
+ # This cell didn't produce any text; e.g. number sign.
+ self._reportUntranslated(pos)
+ else:
+ self._reportUntranslated(pos)
+
#: brailleInput.BrailleInputHandler._translate()
# reason for patching: possibility to lock modifiers, display modifiers in braille during input, HUC Braille input
@@ -490,6 +549,8 @@ def sendChar(char):
def badInput(self):
nvwave.playWaveFile("waves/textError.wav")
self.flushBuffer()
+ pos = self.untranslatedStart + self.untranslatedCursorPos
+ self._reportUntranslated(pos)
def _translate(self, endWord):
"""Translate buffered braille up to the cursor.
@@ -505,29 +566,6 @@ def _translate(self, endWord):
self.bufferText = u""
oldTextLen = len(self.bufferText)
pos = self.untranslatedStart + self.untranslatedCursorPos
- ok = False
- if instanceGP.advancedInput:
- focusObj = api.getFocusObject()
- ok = not self.currentModifiers and (not focusObj.treeInterceptor or focusObj.treeInterceptor.passThrough)
- if instanceGP.advancedInput and ok and self.bufferBraille:
- advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
- if advancedInputStr:
- if advancedInputStr[0] in getTextInBraille("bdhoxBDHOX"):
- if advancedInputStr[-1] == '⠀':
- text = louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr)[0]
- try:
- char = getCharFromValue(text)
- sendChar(char)
- except BaseException: badInput(self)
- return
- else:
- res = huc.isValidHUCInput(advancedInputStr)
- if res == huc.HUC_INPUT_INCOMPLETE: return
- elif res == huc.HUC_INPUT_INVALID: badInput(self)
- else:
- res = huc.backTranslate(advancedInputStr)
- sendChar(res)
- return
data = u"".join([chr_(cell | brailleInput.LOUIS_DOTS_IO_START) for cell in self.bufferBraille[:pos]])
mode = louis.dotsIO | louis.noUndefinedDots
if (not self.currentFocusIsTextObj or self.currentModifiers) and self._table.contracted:
@@ -596,6 +634,7 @@ def _createTablesString(tablesList):
NoInputGestureAction = inputCore.NoInputGestureAction
brailleInput.BrailleInputHandler._translate = _translate
brailleInput.BrailleInputHandler.emulateKey = emulateKey
+brailleInput.BrailleInputHandler.input = input
brailleInput.BrailleInputHandler.sendChars = sendChars
globalCommands.GlobalCommands.script_braille_routeTo = script_braille_routeTo
louis._createTablesString = _createTablesString
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 2b3dcfac..9e90e538 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -451,7 +451,7 @@ def getCharFromValue(s):
if not s or len(s) < 2: raise ValueError("Wrong value")
supportedBases = {'b': 2, 'd': 10, 'h': 16, 'o': 8, 'x': 16}
base, n = s[0].lower(), s[1:]
- if base not in supportedBases.keys(): raise ValueError("Wrong base")
+ if base not in supportedBases.keys(): raise ValueError("Wrong base (%s)" % base)
b = supportedBases[base]
n = int(n, b)
return chr(n)
From 6cd783237928feb513e94b2bbc25b5a40dd1fefc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 12 Jan 2020 10:31:45 +0100
Subject: [PATCH 12/87] fixup: restore browse mode
---
addon/globalPlugins/brailleExtender/patchs.py | 49 ++++++++++---------
1 file changed, 25 insertions(+), 24 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 37deeb00..075d7b4e 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -490,33 +490,34 @@ def input(self, dots: int):
self.untranslatedCursorPos += 1
# Space ends the word.
endWord = dots == 0
- if instanceGP.advancedInput:
- pos = self.untranslatedStart + self.untranslatedCursorPos
- ok = False
+
+ ok = False
+ if instanceGP:
focusObj = api.getFocusObject()
ok = not self.currentModifiers and (not focusObj.treeInterceptor or focusObj.treeInterceptor.passThrough)
- if ok:
- advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
- if advancedInputStr:
- if advancedInputStr[0] in "⠃⠙⠓⠕⠭⡃⡙⡓⡕⡭":
- equiv = {'⠃': 'b', '⠙': 'd', '⠓': 'h', '⠕': 'o', '⠭': 'x', '⡃': 'B', '⡙': 'D', '⡓': 'H', '⡕': 'O', '⡭': 'X'}
- if advancedInputStr[-1] == '⠀':
- text = equiv[advancedInputStr[0]]+louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr[1:-1])[0]
- try:
- char = getCharFromValue(text)
- sendChar(char)
- except BaseException as err:
- speech.speakMessage(repr(err))
- badInput(self)
- else: self._reportUntranslated(pos)
- return
+ if instanceGP.advancedInput and ok:
+ pos = self.untranslatedStart + self.untranslatedCursorPos
+ advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
+ if advancedInputStr:
+ if advancedInputStr[0] in "⠃⠙⠓⠕⠭⡃⡙⡓⡕⡭":
+ equiv = {'⠃': 'b', '⠙': 'd', '⠓': 'h', '⠕': 'o', '⠭': 'x', '⡃': 'B', '⡙': 'D', '⡓': 'H', '⡕': 'O', '⡭': 'X'}
+ if advancedInputStr[-1] == '⠀':
+ text = equiv[advancedInputStr[0]]+louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr[1:-1])[0]
+ try:
+ char = getCharFromValue(text)
+ sendChar(char)
+ except BaseException as err:
+ speech.speakMessage(repr(err))
+ badInput(self)
+ else: self._reportUntranslated(pos)
+ return
+ else:
+ res = huc.isValidHUCInput(advancedInputStr)
+ if res == huc.HUC_INPUT_INCOMPLETE: return self._reportUntranslated(pos)
+ elif res == huc.HUC_INPUT_INVALID: badInput(self)
else:
- res = huc.isValidHUCInput(advancedInputStr)
- if res == huc.HUC_INPUT_INCOMPLETE: return self._reportUntranslated(pos)
- elif res == huc.HUC_INPUT_INVALID: badInput(self)
- else:
- res = huc.backTranslate(advancedInputStr)
- sendChar(res)
+ res = huc.backTranslate(advancedInputStr)
+ sendChar(res)
return
# For uncontracted braille, translate the buffer for each cell added.
# Any new characters produced are then sent immediately.
From bb3949ce0dd51f9891640ea4de0ea0232f88c64a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 12 Jan 2020 11:30:10 +0100
Subject: [PATCH 13/87] Small fix for Python2
---
addon/globalPlugins/brailleExtender/patchs.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 075d7b4e..41f46d8b 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -481,7 +481,7 @@ def emulateKey(self, key, withModifiers=True):
self.sendChars(key)
#: brailleInput.BrailleInputHandler.input()
-def input(self, dots: int):
+def input(self, dots):
"""Handle one cell of braille input.
"""
# Insert the newly entered cell into the buffer at the cursor position.
From 14446eb44bd9bf7e72f5d611fe96aa31f55ae4c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 12 Jan 2020 12:03:56 +0100
Subject: [PATCH 14/87] Advanced braille input mode now works with Python 2
---
addon/globalPlugins/brailleExtender/huc.py | 8 ++++++--
addon/globalPlugins/brailleExtender/patchs.py | 6 +++---
addon/globalPlugins/brailleExtender/utils.py | 4 +++-
3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
index bb691c92..32e5c8d4 100644
--- a/addon/globalPlugins/brailleExtender/huc.py
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -3,9 +3,13 @@
from __future__ import print_function, unicode_literals
import re
import sys
+import struct
isPy3 = True if sys.version_info >= (3, 0) else False
-if not isPy3: chr = unichr
+def chrPy2(i):
+ try: return unichr(i)
+ except ValueError: return struct.pack('i', i).decode('utf-32')
+if not isPy3: chr = chrPy2
HUC6_patterns = {
"⠿": (0x000000, 0x00FFFF),
@@ -226,7 +230,7 @@ def backTranslateHUC8(s, debug=False):
s = unicodeBrailleToDescription(s)
for c in s.split('-'):
out += splitInTwoCells(c)
- return chr(HUC8_patterns[prefix][0]+int(''.join(["%x" % hexVals.index(out) for out in out]), 16))
+ return chr(HUC8_patterns[prefix][0] + int(''.join(["%x" % hexVals.index(out) for out in out]), 16))
def backTranslateHUC6(s, debug=False):
return '⠃'
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 41f46d8b..d0fef742 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -44,7 +44,7 @@
if isPy3: import louisHelper
instanceGP = None
-chr_ = chr if isPy3 else unichr
+if not isPy3: chr = chrPy2
HUCDotPattern = "12345678-78-12345678"
HUCUnicodePattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
@@ -247,7 +247,7 @@ def getHexLiblouisStyle(s):
def HUCProcess(self):
if not isPy3: return
- unicodeBrailleRepr = ''.join([chr_(10240+cell) for cell in self.brailleCells])
+ unicodeBrailleRepr = ''.join([chr(10240+cell) for cell in self.brailleCells])
allBraillePos = [m.start() for m in re.finditer(HUCUnicodePattern, unicodeBrailleRepr)]
allBraillePosDelimiters = [(pos, pos+3) for pos in allBraillePos]
if not allBraillePos: return
@@ -567,7 +567,7 @@ def _translate(self, endWord):
self.bufferText = u""
oldTextLen = len(self.bufferText)
pos = self.untranslatedStart + self.untranslatedCursorPos
- data = u"".join([chr_(cell | brailleInput.LOUIS_DOTS_IO_START) for cell in self.bufferBraille[:pos]])
+ data = u"".join([chr(cell | brailleInput.LOUIS_DOTS_IO_START) for cell in self.bufferBraille[:pos]])
mode = louis.dotsIO | louis.noUndefinedDots
if (not self.currentFocusIsTextObj or self.currentModifiers) and self._table.contracted:
mode |= louis.partialTrans
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 9e90e538..5d4b03f7 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -26,6 +26,7 @@
from . import huc
charToDotsInLouis = hasattr(louis, "charToDots")
+
# -----------------------------------------------------------------------------
# Thanks to Tim Roberts for the (next) Control Volume code!
# -> https://mail.python.org/pipermail/python-win32/2014-March/013080.html
@@ -446,8 +447,9 @@ def getTether():
return braille.handler.getTether()
else: return braille.handler.tether
+
def getCharFromValue(s):
- if not isinstance(s, str): raise TypeError("Wrong type")
+ if not isinstance(s, (unicode, str)): raise TypeError("Wrong type")
if not s or len(s) < 2: raise ValueError("Wrong value")
supportedBases = {'b': 2, 'd': 10, 'h': 16, 'o': 8, 'x': 16}
base, n = s[0].lower(), s[1:]
From fedad45aecf0ca38883e1ff622e9c84f7e090183 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 12 Jan 2020 12:22:45 +0100
Subject: [PATCH 15/87] fixup: small fix for Py3
---
addon/globalPlugins/brailleExtender/utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 5d4b03f7..22ab96a4 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -449,7 +449,7 @@ def getTether():
def getCharFromValue(s):
- if not isinstance(s, (unicode, str)): raise TypeError("Wrong type")
+ if not isinstance(s, str if isPy3 else (str, unicode)): raise TypeError("Wrong type")
if not s or len(s) < 2: raise ValueError("Wrong value")
supportedBases = {'b': 2, 'd': 10, 'h': 16, 'o': 8, 'x': 16}
base, n = s[0].lower(), s[1:]
From 4a8cc615f25a7ddb7ac1f9e216eaabbb1046b344 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 14 Jan 2020 17:08:48 +0100
Subject: [PATCH 16/87] Fix `git rebase`
---
addon/globalPlugins/brailleExtender/__init__.py | 3 +++
addon/globalPlugins/brailleExtender/patchs.py | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index a46c1d86..81a556f7 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -22,6 +22,9 @@
import wx
from . import settings
+
+import addonHandler
+addonHandler.initTranslation()
import api
import appModuleHandler
import braille
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index d0fef742..4501bfd3 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -628,7 +628,7 @@ def _createTablesString(tablesList):
return b",".join([x.encode("UTF-8") if isinstance(x, str) else bytes(x) for x in tablesList])
# applying patches
-#braille.Region.update = update
+braille.Region.update = update
braille.TextInfoRegion.previousLine = previousLine
braille.TextInfoRegion.nextLine = nextLine
inputCore.InputManager.executeGesture = executeGesture
From 14d46d72f68f320c0d0ae2c0f3ca2d648f40c0d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 12 Jan 2020 17:27:38 +0100
Subject: [PATCH 17/87] Added options in settings + update config specs
---
addon/globalPlugins/brailleExtender/configBE.py | 9 +++++++++
addon/globalPlugins/brailleExtender/settings.py | 10 ++++++++++
2 files changed, 19 insertions(+)
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 0e85d397..5fea513f 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -66,6 +66,13 @@
(CHOICE_focusAndReview, _("both"))
])
+CHOICE_oneHandMethodSides = 0
+CHOICE_oneHandMethodDots = 1
+
+CHOICE_oneHandMethods = dict_([
+ (CHOICE_oneHandMethodSides, _("Left dots then right dots")),
+ (CHOICE_oneHandMethodDots, _("Dots by dots (toggle) then press space"))
+])
curBD = braille.handler.display.name
backupDisplaySize = braille.handler.displaySize
backupRoleLabels = {}
@@ -151,6 +158,8 @@ def getConfspec():
"postTable": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
+ "oneHandMode": "boolean(default=False)",
+ "oneHandMethod": "integer(min=0, max=1, default=%d)" % CHOICE_oneHandMethodSides,
"features": {
"attributes": "boolean(default=True)",
"roleLabels": "boolean(default=True)"
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index e64ab2dc..1d13696e 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -168,6 +168,12 @@ def makeSettings(self, settingsSizer):
self.brailleDisplay1.SetSelection(self.bds_k.index(config.conf["brailleExtender"]["brailleDisplay1"]))
self.brailleDisplay2 = sHelper.addLabeledControl(_("Second braille display preferred"), wx.Choice, choices=self.bds_v)
self.brailleDisplay2.SetSelection(self.bds_k.index(config.conf["brailleExtender"]["brailleDisplay2"]))
+ self.oneHandMode = sHelper.addItem(wx.CheckBox(self, label=_("One hand mode")))
+ self.oneHandMode.SetValue(config.conf["brailleExtender"]["oneHandMode"])
+ choices = list(configBE.CHOICE_oneHandMethods.values())
+ itemToSelect = list(configBE.CHOICE_oneHandMethods.keys()).index(config.conf["brailleExtender"]["oneHandMethod"])
+ self.oneHandMethod = sHelper.addLabeledControl(_("One hand mode method"), wx.Choice, choices=choices)
+ self.oneHandMethod.SetSelection(itemToSelect)
def postInit(self): self.autoCheckUpdate.SetFocus()
@@ -195,6 +201,10 @@ def onOk(self, evt):
config.conf["brailleExtender"]["volumeChangeFeedback"] = list(configBE.outputMessage.keys())[self.volumeChangeFeedback.GetSelection()]
config.conf["brailleExtender"]["modifierKeysFeedback"] = list(configBE.outputMessage.keys())[self.modifierKeysFeedback.GetSelection()]
config.conf["brailleExtender"]["beepsModifiers"] = self.beepsModifiers.IsChecked()
+
+ config.conf["brailleExtender"]["oneHandMode"] = self.oneHandMode.IsChecked()
+ config.conf["brailleExtender"]["oneHandMethod"] = list(configBE.CHOICE_oneHandMethods.keys())[self.oneHandMethod.GetSelection()]
+
super(GeneralDlg, self).onOk(evt)
class AttribraDlg(gui.settingsDialogs.SettingsDialog):
From 300475a511d4ff849d26eaf765d9ce37b3137aa0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Mon, 13 Jan 2020 13:00:03 +0100
Subject: [PATCH 18/87] Implement the first method
---
.../globalPlugins/brailleExtender/configBE.py | 10 ++-
addon/globalPlugins/brailleExtender/patchs.py | 73 ++++++++++++++++++-
.../globalPlugins/brailleExtender/settings.py | 2 +-
3 files changed, 78 insertions(+), 7 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 5fea513f..af93159d 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -67,11 +67,13 @@
])
CHOICE_oneHandMethodSides = 0
-CHOICE_oneHandMethodDots = 1
+CHOICE_oneHandMethodSide = 1
+CHOICE_oneHandMethodDots = 2
CHOICE_oneHandMethods = dict_([
- (CHOICE_oneHandMethodSides, _("Left dots then right dots")),
- (CHOICE_oneHandMethodDots, _("Dots by dots (toggle) then press space"))
+ (CHOICE_oneHandMethodSides, _("Fill a cell in two stages on both sides")),
+ (CHOICE_oneHandMethodSide, _("Fill a cell in two stages on one side (space = empty side)")),
+ (CHOICE_oneHandMethodDots, _("Fill a cell dots by dots (each dot is a toggle, press space to validate the character)"))
])
curBD = braille.handler.display.name
backupDisplaySize = braille.handler.displaySize
@@ -159,7 +161,7 @@ def getConfspec():
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
"oneHandMode": "boolean(default=False)",
- "oneHandMethod": "integer(min=0, max=1, default=%d)" % CHOICE_oneHandMethodSides,
+ "oneHandMethod": "integer(min=0, max=%d, default=%d)" % (CHOICE_oneHandMethodDots, CHOICE_oneHandMethodSides),
"features": {
"attributes": "boolean(default=True)",
"roleLabels": "boolean(default=True)"
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index e195fe37..e2d15917 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -31,7 +31,7 @@
import addonHandler
addonHandler.initTranslation()
from . import dictionaries
-from .utils import getCurrentChar, getTether
+from .utils import getCurrentChar, getTether, unicodeBrailleToDescription
from .common import *
if isPy3: import louisHelper
@@ -358,6 +358,74 @@ def emulateKey(self, key, withModifiers=True):
log.debugWarning("Unable to emulate %r, falling back to sending unicode characters"%gesture, exc_info=True)
self.sendChars(key)
+#: brailleInput.BrailleInputHandler.input()
+endChar = True
+def processOneHandMode(self, dots):
+ global endChar
+ addSpace = False
+ method = config.conf["brailleExtender"]["oneHandMethod"]
+ pos = self.untranslatedStart + self.untranslatedCursorPos
+ continue_ = True
+ endWord = False
+ if method == configBE.CHOICE_oneHandMethodSides:
+ endChar = not endChar
+ if dots == 0:
+ endChar = endWord = True
+ addSpace = True
+ #elif method == configBE.CHOICE_oneHandMethodSide: pass
+ #elif method == configBE.CHOICE_oneHandMethodDots: pass
+ else:
+ speech.speakMessage(_("Unsupported input method"))
+ self.flushBuffer()
+ return False, False
+ if endChar:
+ if not self.bufferBraille: self.bufferBraille.insert(pos, 0)
+ self.bufferBraille[-1] |= dots
+ self.untranslatedCursorPos += 1
+ if not endWord: endWord = self.bufferBraille[-1] == 0
+ if addSpace:
+ self.bufferBraille.append(0)
+ self.untranslatedCursorPos += 1
+ else:
+ continue_ = False
+ self.bufferBraille.insert(pos, dots)
+ self._reportUntranslated(pos)
+ return continue_, endWord
+
+def input(self, dots):
+ """Handle one cell of braille input.
+ """
+ # Insert the newly entered cell into the buffer at the cursor position.
+ pos = self.untranslatedStart + self.untranslatedCursorPos
+ # Space ends the word.
+ endWord = dots == 0
+ continue_ = True
+ if config.conf["brailleExtender"]["oneHandMode"]:
+ continue_, endWord = processOneHandMode(self, dots)
+ if not continue_: return
+ else:
+ self.bufferBraille.insert(pos, dots)
+ self.untranslatedCursorPos += 1
+ # For uncontracted braille, translate the buffer for each cell added.
+ # Any new characters produced are then sent immediately.
+ # For contracted braille, translate the buffer only when a word is ended (i.e. a space is typed).
+ # This is because later cells can change characters produced by previous cells.
+ # For example, in English grade 2, "tg" produces just "tg",
+ # but "tgr" produces "together".
+ if not self.useContractedForCurrentFocus or endWord:
+ if self._translate(endWord):
+ if not endWord:
+ self.cellsWithText.add(pos)
+ elif self.bufferText and not self.useContractedForCurrentFocus:
+ # Translators: Reported when translation didn't succeed due to unsupported input.
+ speech.speakMessage(_("Unsupported input"))
+ self.flushBuffer()
+ else:
+ # This cell didn't produce any text; e.g. number sign.
+ self._reportUntranslated(pos)
+ else:
+ self._reportUntranslated(pos)
+
#: brailleInput.BrailleInputHandler._translate()
# reason for patching: possibility to lock modifiers, display modifiers in braille during input
def _translate(self, endWord):
@@ -443,8 +511,9 @@ def _createTablesString(tablesList):
braille.TextInfoRegion.nextLine = nextLine
inputCore.InputManager.executeGesture = executeGesture
NoInputGestureAction = inputCore.NoInputGestureAction
-brailleInput.BrailleInputHandler.emulateKey = emulateKey
brailleInput.BrailleInputHandler._translate = _translate
+brailleInput.BrailleInputHandler.emulateKey = emulateKey
+brailleInput.BrailleInputHandler.input = input
globalCommands.GlobalCommands.script_braille_routeTo = script_braille_routeTo
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 1d13696e..9707c9f8 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -168,7 +168,7 @@ def makeSettings(self, settingsSizer):
self.brailleDisplay1.SetSelection(self.bds_k.index(config.conf["brailleExtender"]["brailleDisplay1"]))
self.brailleDisplay2 = sHelper.addLabeledControl(_("Second braille display preferred"), wx.Choice, choices=self.bds_v)
self.brailleDisplay2.SetSelection(self.bds_k.index(config.conf["brailleExtender"]["brailleDisplay2"]))
- self.oneHandMode = sHelper.addItem(wx.CheckBox(self, label=_("One hand mode")))
+ self.oneHandMode = sHelper.addItem(wx.CheckBox(self, label=_("One-handed mode")))
self.oneHandMode.SetValue(config.conf["brailleExtender"]["oneHandMode"])
choices = list(configBE.CHOICE_oneHandMethods.values())
itemToSelect = list(configBE.CHOICE_oneHandMethods.keys()).index(config.conf["brailleExtender"]["oneHandMethod"])
From c01bf0fd2c5a902db923f9737505c64fdc5a49e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Mon, 13 Jan 2020 15:08:12 +0100
Subject: [PATCH 19/87] Adds the 2nd method
---
addon/globalPlugins/brailleExtender/patchs.py | 25 +++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index e2d15917..40bd1faf 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -31,7 +31,7 @@
import addonHandler
addonHandler.initTranslation()
from . import dictionaries
-from .utils import getCurrentChar, getTether, unicodeBrailleToDescription
+from .utils import getCurrentChar, getTether, unicodeBrailleToDescription, descriptionToUnicodeBraille
from .common import *
if isPy3: import louisHelper
@@ -372,7 +372,28 @@ def processOneHandMode(self, dots):
if dots == 0:
endChar = endWord = True
addSpace = True
- #elif method == configBE.CHOICE_oneHandMethodSide: pass
+ elif method == configBE.CHOICE_oneHandMethodSide:
+ endChar = not endChar
+ if endChar: equiv = "045645688"
+ else:
+ equiv = "012312377"
+ if dots == 0:
+ endChar = endWord = True
+ addSpace = True
+ if dots != 0:
+ translatedBufferBrailleDots = 0
+ if self.bufferBraille:
+ translatedBufferBraille = chr(self.bufferBraille[-1] | 0x2800)
+ translatedBufferBrailleDots = unicodeBrailleToDescription(translatedBufferBraille)
+ translatedDots = chr(dots | 0x2800)
+ translatedDotsBrailleDots = unicodeBrailleToDescription(translatedDots)
+ newDots = ""
+ for dot in translatedDotsBrailleDots:
+ dot = int(dot)
+ if dots >= 0 and dot < 9: newDots += equiv[dot]
+ newDots = ''.join(sorted(set(newDots)))
+ if not newDots: newDots = "0"
+ dots = ord(descriptionToUnicodeBraille(newDots))-0x2800
#elif method == configBE.CHOICE_oneHandMethodDots: pass
else:
speech.speakMessage(_("Unsupported input method"))
From b6afcf4fe3d706c9877c7764a225b5bf4607ee5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 16 Jan 2020 12:53:46 +0100
Subject: [PATCH 20/87] Added gestures to enable/disable one-handed mode
---
.../brailleExtender/Profiles/baum/default/profile.ini | 1 +
.../Profiles/brailliantB/default/profile.ini | 1 +
.../Profiles/eurobraille/default/profile.ini | 1 +
.../Profiles/freedomscientific/default/profile.ini | 1 +
addon/globalPlugins/brailleExtender/__init__.py | 7 +++++++
5 files changed, 11 insertions(+)
diff --git a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
index bfc547fd..72b68aa5 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
@@ -60,6 +60,7 @@
reportExtraInfos = b10+b5+b8
getSpeechOutput = b10+b3+b4
addDictionaryEntry = b10+b8+b7+b1+b4+b5
+ toggleOneHandMode = b2+b7+b9
[keyboardLayouts]
diff --git a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
index 0bf3c1b0..5d60803f 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
@@ -52,6 +52,7 @@
nextRotor = space+dot5+dot6
getSpeechOutput = space+dot3+dot4
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
+ toggleOneHandMode = space+dot2+dot7
[rotor]
nextEltRotor = right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
index 914da610..343c3619 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
@@ -52,6 +52,7 @@
getSpeechOutput = space+dot3+dot4
repeatLastShortcut = dot6+dot7+space
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
+ toggleOneHandMode = space+dot2+dot7
[rotor]
nextEltRotor = joystick2Right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
index 90e29ad6..92d0df93 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
@@ -52,6 +52,7 @@
nextRotor = braillespacebar+dot5+dot6
getSpeechOutput = braillespacebar+dot3+dot4
addDictionaryEntry = braillespacebar+dot8+dot7+dot1+dot4+dot5
+ toggleOneHandMode = braillespacebar+dot2+dot7
[rotor]
nextEltRotor = leftwizwheeldown
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index a2928423..0029d0bd 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -572,6 +572,12 @@ def script_toggleLockBrailleKeyboard(self, gesture):
ui.message(_("Braille keyboard %s") % (_("locked") if self.brailleKeyboardLocked else _("unlocked")))
script_toggleLockBrailleKeyboard.__doc__ = _("Lock/unlock braille keyboard")
+ def script_toggleOneHandMode(self, gesture):
+ config.conf["brailleExtender"]["oneHandMode"] = not config.conf["brailleExtender"]["oneHandMode"]
+ state = _("enabled") if config.conf["brailleExtender"]["oneHandMode"] else _("disabled")
+ ui.message(_("One hand mode %s") % state)
+ script_toggleOneHandMode.__doc__ = _("Enable/disable one hand mode feature")
+
def script_toggleDots78(self, gesture):
self.hideDots78 = not self.hideDots78
speech.speakMessage(_("Dots 7 and 8: %s") % (_("disabled") if self.hideDots78 else _("enabled")))
@@ -1464,6 +1470,7 @@ def script_addDictionaryEntry(self, gesture):
__gestures["kb:nvda+shift+k"] = "reload_brailledisplay2"
__gestures["kb:nvda+alt+h"] = "toggleDots78"
__gestures["kb:nvda+alt+f"] = "toggleBRFMode"
+ __gestures["kb:nvda+windows+h"] = "toggleOneHandMode"
__gestures["kb:nvda+windows+k"] = "reloadAddon"
__gestures["kb:volumeMute"] = "toggleVolume"
__gestures["kb:volumeUp"] = "volumePlus"
From 14e72aa4b4e3b110c57efaec8ded52e4aaac20af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 16 Jan 2020 13:07:23 +0100
Subject: [PATCH 21/87] Fix gesture for FS displays
---
.../Profiles/freedomscientific/default/profile.ini | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
index 2759a322..0100ff60 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
@@ -51,8 +51,8 @@
priorRotor = braillespacebar+dot2+dot3
nextRotor = braillespacebar+dot5+dot6
getSpeechOutput = braillespacebar+dot3+dot4
- addDictionaryEntry = braillespacebar+dot2+dot4+dot7
- advancedInput = braillespacebar+dot1+dot2+dot5+dot8
+ addDictionaryEntry = braillespacebar+dot1+dot2+dot5+dot7+dot8
+ advancedInput = braillespacebar+dot2+dot4+dot7
[rotor]
nextEltRotor = leftwizwheeldown
From 34b179eafcee3a13ccbbbd820ef09320a0d927f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 17 Jan 2020 08:47:45 +0100
Subject: [PATCH 22/87] Small fixes
---
.../globalPlugins/brailleExtender/__init__.py | 1 -
.../brailleExtender/dictionaries.py | 1 -
addon/globalPlugins/brailleExtender/huc.py | 5 ++--
addon/globalPlugins/brailleExtender/patchs.py | 30 ++-----------------
.../globalPlugins/brailleExtender/settings.py | 1 -
5 files changed, 5 insertions(+), 33 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 4aff0b2b..98ab74cf 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -15,7 +15,6 @@
import re
import subprocess
import sys
-isPy3 = True if sys.version_info >= (3, 0) else False
import time
import urllib
import gui
diff --git a/addon/globalPlugins/brailleExtender/dictionaries.py b/addon/globalPlugins/brailleExtender/dictionaries.py
index 5a353444..7a58ab49 100644
--- a/addon/globalPlugins/brailleExtender/dictionaries.py
+++ b/addon/globalPlugins/brailleExtender/dictionaries.py
@@ -16,7 +16,6 @@
from collections import namedtuple
from . import configBE
-from . import utils
from .common import *
from . import huc
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
index 32e5c8d4..aa0ae374 100644
--- a/addon/globalPlugins/brailleExtender/huc.py
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -5,15 +5,14 @@
import sys
import struct
-isPy3 = True if sys.version_info >= (3, 0) else False
+isPy3 = sys.version_info >= (3, 0)
def chrPy2(i):
try: return unichr(i)
except ValueError: return struct.pack('i', i).decode('utf-32')
if not isPy3: chr = chrPy2
HUC6_patterns = {
- "⠿": (0x000000, 0x00FFFF),
- "⠿": (0x010000, 0x01FFFF),
+ "⠿": (0x000000, 0x1FFFF),
"⠿…⠇": (0x020000, 0x02FFFF),
"⠿…⠍": (0x030000, 0x03FFFF),
"⠿…⠝": (0x040000, 0x04FFFF),
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 4e4e7850..337729cd 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -249,7 +249,6 @@ def HUCProcess(self):
if not isPy3: return
unicodeBrailleRepr = ''.join([chr(10240+cell) for cell in self.brailleCells])
allBraillePos = [m.start() for m in re.finditer(HUCUnicodePattern, unicodeBrailleRepr)]
- allBraillePosDelimiters = [(pos, pos+3) for pos in allBraillePos]
if not allBraillePos: return
if config.conf["brailleExtender"]["undefinedCharReprType"] == configBE.CHOICE_liblouis:
replacements = {braillePos: getHexLiblouisStyle(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in allBraillePos}
@@ -417,7 +416,7 @@ def sendChars(self, chars):
inputs = []
chars = ''.join(c if ord(c) <= 0xffff else ''.join(chr(x) for x in struct.unpack('>2H', c.encode("utf-16be"))) for c in chars)
for ch in chars:
- for direction in (0,winUser.KEYEVENTF_KEYUP):
+ for direction in (0,winUser.KEYEVENTF_KEYUP):
input = winUser.Input()
input.type = winUser.INPUT_KEYBOARD
input.ii.ki = winUser.KeyBdInput()
@@ -457,31 +456,8 @@ def emulateKey(self, key, withModifiers=True):
log.debugWarning("Unable to emulate %r, falling back to sending unicode characters"%gesture, exc_info=True)
self.sendChars(key)
-#: brailleInput.BrailleInputHandler.emulateKey()
-def emulateKey(self, key, withModifiers=True):
- """Emulates a key using the keyboard emulation system.
- If emulation fails (e.g. because of an unknown key), a debug warning is logged
- and the system falls back to sending unicode characters.
- @param withModifiers: Whether this key emulation should include the modifiers that are held virtually.
- Note that this method does not take care of clearing L{self.currentModifiers}.
- @type withModifiers: bool
- """
- if withModifiers:
- # The emulated key should be the last item in the identifier string.
- keys = list(self.currentModifiers)
- keys.append(key)
- gesture = "+".join(keys)
- else:
- gesture = key
- try:
- inputCore.manager.emulateGesture(keyboardHandler.KeyboardInputGesture.fromName(gesture))
- instanceGP.lastShortcutPerformed = gesture
- except BaseException:
- log.debugWarning("Unable to emulate %r, falling back to sending unicode characters"%gesture, exc_info=True)
- self.sendChars(key)
-
#: brailleInput.BrailleInputHandler.input()
-def input(self, dots):
+def input_(self, dots):
"""Handle one cell of braille input.
"""
# Insert the newly entered cell into the buffer at the cursor position.
@@ -635,7 +611,7 @@ def _createTablesString(tablesList):
NoInputGestureAction = inputCore.NoInputGestureAction
brailleInput.BrailleInputHandler._translate = _translate
brailleInput.BrailleInputHandler.emulateKey = emulateKey
-brailleInput.BrailleInputHandler.input = input
+brailleInput.BrailleInputHandler.input = input_
brailleInput.BrailleInputHandler.sendChars = sendChars
globalCommands.GlobalCommands.script_braille_routeTo = script_braille_routeTo
louis._createTablesString = _createTablesString
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 6fdf94e3..550a7910 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -18,7 +18,6 @@
import core
import inputCore
import keyLabels
-import louis
import queueHandler
import scriptHandler
import ui
From 1be39b9b4453748f492039f1e99124cbb07438d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 23 Jan 2020 07:21:03 +0100
Subject: [PATCH 23/87] Added HUC representations for current character
description feature
---
addon/globalPlugins/brailleExtender/utils.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 62100a08..586c1f54 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -201,7 +201,8 @@ def currentCharDesc():
if c:
try: descChar = unicodedata.name(ch)
except ValueError: descChar = _("unknown")
- s = '%c: %s; %s; %s; %s; %s [%s]' % (ch, hex(c), c, oct(c), bin(c), descChar, unicodedata.category(ch))
+ HUCrepr = " (%s, %s)" % (huc.translate(ch, False), huc.translate(ch, True))
+ s = '%c%s: %s; %s; %s; %s; %s [%s]' % (ch, HUCrepr, hex(c), c, oct(c), bin(c), descChar, unicodedata.category(ch))
if scriptHandler.getLastScriptRepeatCount() == 0: ui.message(s)
elif scriptHandler.getLastScriptRepeatCount() == 1:
brch = getTextInBraille(ch)
From d4501f39e2bf1494a5e595a8267c9719c8423c54 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 01:01:29 +0100
Subject: [PATCH 24/87] Undefined characters can be displayed with their
description
---
.../globalPlugins/brailleExtender/__init__.py | 2 +-
.../globalPlugins/brailleExtender/configBE.py | 12 ++-
addon/globalPlugins/brailleExtender/patchs.py | 80 +++++++++++++------
.../globalPlugins/brailleExtender/settings.py | 46 ++++++++---
addon/globalPlugins/brailleExtender/utils.py | 10 +--
5 files changed, 106 insertions(+), 44 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 9a9a31e9..89443f6e 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -639,7 +639,7 @@ def script_getTableOverview(self, gesture):
ouTable = configBE.tablesTR[configBE.tablesFN.index(config.conf["braille"]["translationTable"])]
t = (_(" Input table")+": %s\n"+_("Output table")+": %s\n\n") % (inTable+' (%s)' % (brailleInput.handler.table.fileName), ouTable+' (%s)' % (config.conf["braille"]["translationTable"]))
t += utils.getTableOverview()
- ui.browseableMessage('%s
' % t, _('Table overview (%s)' % brailleInput.handler.table.displayName), True)
+ ui.browseableMessage("%s
" % t, _("Table overview (%s)" % brailleInput.handler.table.displayName), True)
script_getTableOverview.__doc__ = _("Display an overview of current input braille table")
def script_translateInBRU(self, gesture):
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 973dff4a..bedf4601 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -47,6 +47,10 @@
CHOICE_liblouis = 7
CHOICE_HUC8 = 8
CHOICE_HUC6 = 9
+CHOICE_hex = 10
+CHOICE_dec = 11
+CHOICE_oct = 12
+CHOICE_bin = 13
dict_ = dict if isPy3 else OrderedDict
@@ -158,9 +162,13 @@ def getConfspec():
"outputTables": "string(default=%s)" % config.conf["braille"]["translationTable"],
"tabSpace": "boolean(default=False)",
"tabSize_%s" % curBD: "integer(min=1, default=2, max=42)",
- "undefinedCharReprType": "integer(min=0, default=0, max=9)",
+ "undefinedCharReprMethod": "integer(min=0, default=%s, max=%s)" % (CHOICE_HUC8, CHOICE_bin),
"undefinedCharRepr": "string(default=0)",
- "showNameUndefinedChar": "boolean(default=False)",
+ "undefinedCharDesc": "boolean(default=True)",
+ "undefinedCharStart": "string(default=[)",
+ "undefinedCharEnd": "string(default=])",
+ "undefinedCharLang": "string(default=Windows)",
+ "undefinedCharBrailleTable": "string(default=current)",
"postTable": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 7664d262..73eecaea 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -19,6 +19,7 @@
import braille
import brailleInput
import brailleTables
+import characterProcessing
import controlTypes
import config
import core
@@ -26,6 +27,7 @@
import globalCommands
import inputCore
import keyboardHandler
+import languageHandler
import louis
import queueHandler
import sayAllHandler
@@ -46,7 +48,7 @@
instanceGP = None
if not isPy3: chr = chrPy2
HUCDotPattern = "12345678-78-12345678"
-HUCUnicodePattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
+undefinedCharPattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
SELECTION_SHAPE = lambda: braille.SELECTION_SHAPE
origFunc = {
@@ -147,7 +149,7 @@ def update(self):
mode=mode,
cursorPos=self.cursorPos or 0
)
- if config.conf["brailleExtender"]["undefinedCharReprType"] in [configBE.CHOICE_liblouis, configBE.CHOICE_HUC8, configBE.CHOICE_HUC6]: HUCProcess(self)
+ if config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_liblouis, configBE.CHOICE_HUC8, configBE.CHOICE_HUC6, configBE.CHOICE_hex, configBE.CHOICE_dec, configBE.CHOICE_oct, configBE.CHOICE_bin]: undefinedCharProcess(self)
if not isPy3:
# liblouis gives us back a character string of cells, so convert it to a list of ints.
# For some reason, the highest bit is set, so only grab the lower 8
@@ -191,41 +193,71 @@ def update(self):
self.brailleCells = [(cell & 63) for cell in self.brailleCells]
def setUndefinedChar(t=None):
- if not t or t > CHOICE_HUC6 or t < 0: t = config.conf["brailleExtender"]["undefinedCharReprType"]
+ if not t or t > CHOICE_HUC6 or t < 0: t = config.conf["brailleExtender"]["undefinedCharReprMethod"]
if t == 0: return
- c = ["default", "12345678", "123456", '0', config.conf["brailleExtender"]["undefinedCharRepr"], "questionMark", "sign"] + [HUCDotPattern]*3
+ c = ["default", "12345678", "123456", '0', config.conf["brailleExtender"]["undefinedCharRepr"], "questionMark", "sign"] + [HUCDotPattern]*7
v = c[t]
if v in ["questionMark", "sign"]:
if v == "questionMark": s = '?'
else: s = config.conf["brailleExtender"]["undefinedCharRepr"]
v = huc.unicodeBrailleToDescription(getTextInBraille(s, getCurrentBrailleTables()))
- if isPy3:
- louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+ if isPy3: louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
else: louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v))
-def getDescChar(c):
- n = ''
- try: n = "'%s'" % unicodedata.name(c)
- except ValueError: n = r"'\x%.4x'" % ord(c)
- return n
-
-def getHexLiblouisStyle(s):
- if config.conf["brailleExtender"]["showNameUndefinedChar"]:
- s = getTextInBraille(''.join([getDescChar(c) for c in s]))
- else: s = getTextInBraille(''.join([r"'\x%.4x'" % ord(c) for c in s]))
+def getDescChar(c, lang="Windows", start='', end=''):
+ if lang == "Windows": lang = languageHandler.getLanguage()
+ desc = characterProcessing.processSpeechSymbols(lang, c, characterProcessing.SYMLVL_CHAR).strip()
+ if not desc or desc == c:
+ if config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_HUC6, configBE.CHOICE_HUC8]:
+ HUC6 = config.conf["brailleExtender"]["undefinedCharReprMethod"] == configBE.CHOICE_HUC6
+ return huc.translate(c, HUC6=HUC6)
+ else: return getTextInBraille(''.join(getNotationOrd(c)))
+ return start + desc + end
+
+def getLiblouisStyle(c):
+ if c < 0x10000: return r"\x%.4x" % c
+ elif c <= 0x100000: return r"\y%.5x" % c
+ else: return r"\z%.6x" % c
+
+def getNotationOrd(s, notation=None):
+ if not notation: notation = config.conf["brailleExtender"]["undefinedCharReprMethod"]
+ matches = {
+ configBE.CHOICE_bin: bin,
+ configBE.CHOICE_oct: oct,
+ configBE.CHOICE_dec: lambda s: s,
+ configBE.CHOICE_hex: hex,
+ configBE.CHOICE_liblouis: getLiblouisStyle,
+ }
+ fn = matches[notation]
+ s = getTextInBraille(''.join(["'%s'" % fn(ord(c)) for c in s]))
return s
-def HUCProcess(self):
+def undefinedCharProcess(self):
if not isPy3: return
- unicodeBrailleRepr = ''.join([chr(10240+cell) for cell in self.brailleCells])
- allBraillePos = [m.start() for m in re.finditer(HUCUnicodePattern, unicodeBrailleRepr)]
+ unicodeBrailleRepr = ''.join([chr(10240 + cell) for cell in self.brailleCells])
+ allBraillePos = [m.start() for m in re.finditer(undefinedCharPattern, unicodeBrailleRepr)]
if not allBraillePos: return
- if config.conf["brailleExtender"]["undefinedCharReprType"] == configBE.CHOICE_liblouis:
- replacements = {braillePos: getHexLiblouisStyle(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in allBraillePos}
- else:
- HUC6 = True if config.conf["brailleExtender"]["undefinedCharReprType"] == configBE.CHOICE_HUC6 else False
+ if config.conf["brailleExtender"]["undefinedCharDesc"]:
+ start = config.conf["brailleExtender"]["undefinedCharStart"]
+ end = config.conf["brailleExtender"]["undefinedCharEnd"]
+ if start: start = getTextInBraille(start)
+ if end: end = getTextInBraille(end)
+ replacements = {braillePos:
+ getTextInBraille(
+ getDescChar(
+ self.rawText[self.brailleToRawPos[braillePos]],
+ lang=config.conf["brailleExtender"]["undefinedCharLang"],
+ start=start,
+ end=end,
+ ),
+ table=config.conf["brailleExtender"]["undefinedCharBrailleTable"]
+ ) for braillePos in allBraillePos}
+ elif config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_HUC6, configBE.CHOICE_HUC8]:
+ HUC6 = config.conf["brailleExtender"]["undefinedCharReprMethod"] == configBE.CHOICE_HUC6
replacements = {braillePos: huc.translate(self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6) for braillePos in allBraillePos}
+ else:
+ replacements = {braillePos: getNotationOrd(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in allBraillePos}
newBrailleCells = []
newBrailleToRawPos = []
newRawToBraillePos = []
@@ -234,7 +266,7 @@ def HUCProcess(self):
i = 0
for iBrailleCells, brailleCells in enumerate(self.brailleCells):
brailleToRawPos = self.brailleToRawPos[iBrailleCells]
- if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(HUCUnicodePattern[0]):
+ if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(undefinedCharPattern[0]):
toAdd = [ord(c)-10240 for c in replacements[iBrailleCells]]
newBrailleCells += toAdd
newBrailleToRawPos += [i] * len(toAdd)
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 296ba94d..1b6742d1 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -330,7 +330,7 @@ class BrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
def makeSettings(self, settingsSizer):
self.oTables = set(configBE.outputTables)
self.iTables = set(configBE.inputTables)
- lt = [_('Use the current input table')]
+ lt = [_("Use the current input table")]
for table in configBE.tables:
if table.output and not table.contracted: lt.append(table[1])
if config.conf["brailleExtender"]["inputTableShortcuts"] in configBE.tablesUFN:
@@ -369,15 +369,36 @@ def makeSettings(self, settingsSizer):
_("Other sign/pattern (e.g.: \, ??)"),
_("Hexadecimal, Liblouis style"),
_("Hexadecimal, HUC8"),
- _("Hexadecimal, HUC6")
+ _("Hexadecimal, HUC6"),
+ _("Hexadecimal"),
+ _("Decimal"),
+ _("Octal"),
+ _("Binary")
]
self.undefinedCharReprList = sHelper.addLabeledControl(label, wx.Choice, choices=choices)
self.undefinedCharReprList.Bind(wx.EVT_CHOICE, self.onUndefinedCharReprList)
- self.undefinedCharReprList.SetSelection(config.conf["brailleExtender"]["undefinedCharReprType"])
- self.showNameUndefinedChar = sHelper.addItem(wx.CheckBox(self, label=_("Show the name assigned to the character if possible (english only)")))
- self.showNameUndefinedChar.SetValue(config.conf["brailleExtender"]["showNameUndefinedChar"])
+ self.undefinedCharReprList.SetSelection(config.conf["brailleExtender"]["undefinedCharReprMethod"])
# Translators: label of a dialog.
self.undefinedCharReprEdit = sHelper.addLabeledControl(_("Specify another pattern"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharRepr"])
+ self.undefinedCharDesc = sHelper.addItem(wx.CheckBox(self, label=_("Describe undefined characters if possible")))
+ self.undefinedCharDesc.SetValue(config.conf["brailleExtender"]["undefinedCharDesc"])
+ self.undefinedCharStart = sHelper.addLabeledControl(_("Start tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharStart"])
+ self.undefinedCharEnd = sHelper.addLabeledControl(_("End tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharEnd"])
+ values = [lang[1] for lang in languageHandler.getAvailableLanguages()]
+ keys = [lang[0] for lang in languageHandler.getAvailableLanguages()]
+ undefinedCharLang = config.conf["brailleExtender"]["undefinedCharLang"]
+ if not undefinedCharLang in keys: undefinedCharLang = keys[-1]
+ undefinedCharLangID = keys.index(undefinedCharLang)
+ self.undefinedCharLang = sHelper.addLabeledControl(_("Description language"), wx.Choice, choices=values)
+ self.undefinedCharLang.SetSelection(undefinedCharLangID)
+ values = [_("Use the current output table")] + [table.displayName for table in configBE.tables if table.output]
+ keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
+ undefinedCharBrailleTable = config.conf["brailleExtender"]["undefinedCharBrailleTable"]
+ if undefinedCharBrailleTable not in configBE.tablesFN + ["current"]: undefinedCharBrailleTable = "current"
+ undefinedCharBrailleTableID = keys.index(undefinedCharBrailleTable)
+ self.undefinedCharBrailleTable = sHelper.addLabeledControl(_("Description braille table"), wx.Choice, choices=values)
+ self.undefinedCharBrailleTable.SetSelection(undefinedCharBrailleTableID)
+
self.onUndefinedCharReprList()
self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
@@ -394,18 +415,24 @@ def onOk(self, evt):
postTable = "None" if postTableID == 0 else configBE.tablesFN[postTableID]
config.conf["brailleExtender"]["postTable"] = postTable
if ((self.tabSpace.IsChecked() and config.conf["brailleExtender"]["tabSpace"] != self.tabSpace.IsChecked())
- or (self.undefinedCharReprList.GetSelection() != 0 and config.conf["brailleExtender"]["undefinedCharReprType"] != self.undefinedCharReprList.GetSelection())):
+ or (self.undefinedCharReprList.GetSelection() != 0 and config.conf["brailleExtender"]["undefinedCharReprMethod"] != self.undefinedCharReprList.GetSelection())):
restartRequired = True
else: restartRequired = False
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD] = self.tabSize.Value
- config.conf["brailleExtender"]["undefinedCharReprType"] = self.undefinedCharReprList.GetSelection()
+ config.conf["brailleExtender"]["undefinedCharReprMethod"] = self.undefinedCharReprList.GetSelection()
repr_ = self.undefinedCharReprEdit.Value
if self.undefinedCharReprList.GetSelection() == configBE.CHOICE_otherDots:
repr_ = re.sub("[^0-8\-]", "", repr_).strip('-')
repr_ = re.sub('\-+','-', repr_)
config.conf["brailleExtender"]["undefinedCharRepr"] = repr_
- config.conf["brailleExtender"]["showNameUndefinedChar"] = self.showNameUndefinedChar.IsChecked()
+ config.conf["brailleExtender"]["undefinedCharDesc"] = self.undefinedCharDesc.IsChecked()
+ config.conf["brailleExtender"]["undefinedCharStart"] = self.undefinedCharStart.Value
+ config.conf["brailleExtender"]["undefinedCharEnd"] = self.undefinedCharEnd.Value
+ config.conf["brailleExtender"]["undefinedCharLang"] = languageHandler.getAvailableLanguages()[self.undefinedCharLang.GetSelection()][0]
+ undefinedCharBrailleTable = self.undefinedCharBrailleTable.GetSelection()
+ keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
+ config.conf["brailleExtender"]["undefinedCharBrailleTable"] = keys[undefinedCharBrailleTable]
instanceGP.reloadBrailleTables()
super(BrailleTablesDlg, self).onOk(evt)
if restartRequired:
@@ -474,9 +501,6 @@ def onUndefinedCharReprList(self, evt=None):
selected = self.undefinedCharReprList.GetSelection()
if selected in [configBE.CHOICE_otherDots, configBE.CHOICE_otherSign]: self.undefinedCharReprEdit.Enable()
else: self.undefinedCharReprEdit.Disable()
- if selected in [configBE.CHOICE_liblouis]:
- self.showNameUndefinedChar.Enable()
- else: self.showNameUndefinedChar.Disable()
def onCustomBrailleTablesBtn(self, evt):
customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 586c1f54..e2d68955 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -251,19 +251,17 @@ def getKeysTranslation(n):
def getTextInBraille(t=None, table=None):
if not t: t = getTextSelection()
if not t.strip(): return ''
- if not table: table = [os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])]
+ if not table or table == "current": table = [os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])]
+ else: table = [os.path.join(brailleTables.TABLES_DIR, table)]
nt = []
res = ''
t = t.split("\n")
for l in t:
l = l.rstrip()
if not l: res = ''
- elif charToDotsInLouis: res = louis.charToDots(table, l, louis.ucBrl)
- else: res = louis.translateString(table, l, None, louis.dotsIO)
+ else: res = ''.join([chr(ord(ch)-0x8000+0x2800) for ch in louis.translateString(table, l, mode=louis.dotsIO)])
nt.append(res)
- nt = '\n'.join(nt)
- if charToDotsInLouis: return nt
- return ''.join([chr(ord(ch)-0x8000+0x2800) if ord(ch) > 8000 else ch for ch in nt])
+ return '\n'.join(nt)
def combinationDesign(dots, noDot = '⠤'):
out = ""
From fc3de2901b9542f03a004a8af8cfa76f379be87b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 01:31:34 +0100
Subject: [PATCH 25/87] Fix merge
---
addon/globalPlugins/brailleExtender/patchs.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index c1b1f637..84260400 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -466,11 +466,15 @@ def input_(self, dots):
"""
# Insert the newly entered cell into the buffer at the cursor position.
pos = self.untranslatedStart + self.untranslatedCursorPos
- self.bufferBraille.insert(pos, dots)
- self.untranslatedCursorPos += 1
# Space ends the word.
endWord = dots == 0
-
+ continue_ = True
+ if config.conf["brailleExtender"]["oneHandMode"]:
+ continue_, endWord = processOneHandMode(self, dots)
+ if not continue_: return
+ else:
+ self.bufferBraille.insert(pos, dots)
+ self.untranslatedCursorPos += 1
ok = False
if instanceGP:
focusObj = api.getFocusObject()
From 46b1386c3b4adf06147b980d450504067787d7af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 10:43:46 +0100
Subject: [PATCH 26/87] Separate 'undefined characters descriptions' options
into another dialog
---
.../globalPlugins/brailleExtender/settings.py | 74 ++++++++++++-------
1 file changed, 48 insertions(+), 26 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 1b6742d1..54e16aad 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -380,26 +380,9 @@ def makeSettings(self, settingsSizer):
self.undefinedCharReprList.SetSelection(config.conf["brailleExtender"]["undefinedCharReprMethod"])
# Translators: label of a dialog.
self.undefinedCharReprEdit = sHelper.addLabeledControl(_("Specify another pattern"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharRepr"])
- self.undefinedCharDesc = sHelper.addItem(wx.CheckBox(self, label=_("Describe undefined characters if possible")))
- self.undefinedCharDesc.SetValue(config.conf["brailleExtender"]["undefinedCharDesc"])
- self.undefinedCharStart = sHelper.addLabeledControl(_("Start tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharStart"])
- self.undefinedCharEnd = sHelper.addLabeledControl(_("End tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharEnd"])
- values = [lang[1] for lang in languageHandler.getAvailableLanguages()]
- keys = [lang[0] for lang in languageHandler.getAvailableLanguages()]
- undefinedCharLang = config.conf["brailleExtender"]["undefinedCharLang"]
- if not undefinedCharLang in keys: undefinedCharLang = keys[-1]
- undefinedCharLangID = keys.index(undefinedCharLang)
- self.undefinedCharLang = sHelper.addLabeledControl(_("Description language"), wx.Choice, choices=values)
- self.undefinedCharLang.SetSelection(undefinedCharLangID)
- values = [_("Use the current output table")] + [table.displayName for table in configBE.tables if table.output]
- keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
- undefinedCharBrailleTable = config.conf["brailleExtender"]["undefinedCharBrailleTable"]
- if undefinedCharBrailleTable not in configBE.tablesFN + ["current"]: undefinedCharBrailleTable = "current"
- undefinedCharBrailleTableID = keys.index(undefinedCharBrailleTable)
- self.undefinedCharBrailleTable = sHelper.addLabeledControl(_("Description braille table"), wx.Choice, choices=values)
- self.undefinedCharBrailleTable.SetSelection(undefinedCharBrailleTableID)
-
self.onUndefinedCharReprList()
+ self.undefinedCharsBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Undefined characters descriptions"), wx.DefaultPosition)
+ self.undefinedCharsBtn.Bind(wx.EVT_BUTTON, self.onUndefinedCharsBtn)
self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
self.customBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onCustomBrailleTablesBtn)
@@ -426,13 +409,6 @@ def onOk(self, evt):
repr_ = re.sub("[^0-8\-]", "", repr_).strip('-')
repr_ = re.sub('\-+','-', repr_)
config.conf["brailleExtender"]["undefinedCharRepr"] = repr_
- config.conf["brailleExtender"]["undefinedCharDesc"] = self.undefinedCharDesc.IsChecked()
- config.conf["brailleExtender"]["undefinedCharStart"] = self.undefinedCharStart.Value
- config.conf["brailleExtender"]["undefinedCharEnd"] = self.undefinedCharEnd.Value
- config.conf["brailleExtender"]["undefinedCharLang"] = languageHandler.getAvailableLanguages()[self.undefinedCharLang.GetSelection()][0]
- undefinedCharBrailleTable = self.undefinedCharBrailleTable.GetSelection()
- keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
- config.conf["brailleExtender"]["undefinedCharBrailleTable"] = keys[undefinedCharBrailleTable]
instanceGP.reloadBrailleTables()
super(BrailleTablesDlg, self).onOk(evt)
if restartRequired:
@@ -502,6 +478,10 @@ def onUndefinedCharReprList(self, evt=None):
if selected in [configBE.CHOICE_otherDots, configBE.CHOICE_otherSign]: self.undefinedCharReprEdit.Enable()
else: self.undefinedCharReprEdit.Disable()
+ def onUndefinedCharsBtn(self, evt):
+ undefinedCharsDlg = UndefinedCharsDlg(self, multiInstanceAllowed=True)
+ undefinedCharsDlg.ShowModal()
+
def onCustomBrailleTablesBtn(self, evt):
customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
customBrailleTablesDlg.ShowModal()
@@ -533,6 +513,48 @@ def onTables(self, evt):
queueHandler.queueFunction(queueHandler.eventQueue, ui.message, "%s" % newSwitch)
utils.refreshBD()
else: evt.Skip()
+
+
+class UndefinedCharsDlg(gui.settingsDialogs.SettingsDialog):
+
+ # Translators: title of a dialog.
+ title = "Braille Extender - %s" % _("Undefined characters descriptions")
+
+ def makeSettings(self, settingsSizer):
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ self.undefinedCharDesc = sHelper.addItem(wx.CheckBox(self, label=_("Describe undefined characters if possible")))
+ self.undefinedCharDesc.SetValue(config.conf["brailleExtender"]["undefinedCharDesc"])
+ self.undefinedCharStart = sHelper.addLabeledControl(_("Start tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharStart"])
+ self.undefinedCharEnd = sHelper.addLabeledControl(_("End tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharEnd"])
+ values = [lang[1] for lang in languageHandler.getAvailableLanguages()]
+ keys = [lang[0] for lang in languageHandler.getAvailableLanguages()]
+ undefinedCharLang = config.conf["brailleExtender"]["undefinedCharLang"]
+ if not undefinedCharLang in keys: undefinedCharLang = keys[-1]
+ undefinedCharLangID = keys.index(undefinedCharLang)
+ self.undefinedCharLang = sHelper.addLabeledControl(_("Language"), wx.Choice, choices=values)
+ self.undefinedCharLang.SetSelection(undefinedCharLangID)
+ values = [_("Use the current output table")] + [table.displayName for table in configBE.tables if table.output]
+ keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
+ undefinedCharBrailleTable = config.conf["brailleExtender"]["undefinedCharBrailleTable"]
+ if undefinedCharBrailleTable not in configBE.tablesFN + ["current"]: undefinedCharBrailleTable = "current"
+ undefinedCharBrailleTableID = keys.index(undefinedCharBrailleTable)
+ self.undefinedCharBrailleTable = sHelper.addLabeledControl(_("Braille table"), wx.Choice, choices=values)
+ self.undefinedCharBrailleTable.SetSelection(undefinedCharBrailleTableID)
+
+
+ def postInit(self): self.undefinedCharDesc.SetFocus()
+
+ def onOk(self, evt):
+ config.conf["brailleExtender"]["undefinedCharDesc"] = self.undefinedCharDesc.IsChecked()
+ config.conf["brailleExtender"]["undefinedCharStart"] = self.undefinedCharStart.Value
+ config.conf["brailleExtender"]["undefinedCharEnd"] = self.undefinedCharEnd.Value
+ config.conf["brailleExtender"]["undefinedCharLang"] = languageHandler.getAvailableLanguages()[self.undefinedCharLang.GetSelection()][0]
+ undefinedCharBrailleTable = self.undefinedCharBrailleTable.GetSelection()
+ keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
+ config.conf["brailleExtender"]["undefinedCharBrailleTable"] = keys[undefinedCharBrailleTable]
+ super(UndefinedCharsDlg, self).onOk(evt)
+
+
class CustomBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
# Translators: title of a dialog.
From c8c87d455db18752358963fa284660b0f48dfa66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 11:43:18 +0100
Subject: [PATCH 27/87] Add a script to enable/disable description of undefined
character
---
.../brailleExtender/Profiles/baum/default/profile.ini | 1 +
.../Profiles/brailliantB/default/profile.ini | 1 +
.../Profiles/eurobraille/default/profile.ini | 1 +
.../Profiles/freedomscientific/default/profile.ini | 1 +
addon/globalPlugins/brailleExtender/__init__.py | 10 +++++++++-
addon/globalPlugins/brailleExtender/settings.py | 4 ++--
6 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
index d73184d3..f0044095 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/baum/default/profile.ini
@@ -61,6 +61,7 @@
getSpeechOutput = b10+b3+b4
addDictionaryEntry = b10+b8+b7+b1+b4+b5
advancedInput = b2+b4+b7+b10
+ undefinedCharsDesc = b1+b3+b6+b7+b10
[keyboardLayouts]
[[l1]]
diff --git a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
index 6d896b72..9048e983 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/brailliantB/default/profile.ini
@@ -53,6 +53,7 @@
getSpeechOutput = space+dot3+dot4
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
advancedInput = space+dot2+dot4+dot7
+ undefinedCharsDesc = space+dot1+dot3+dot6+dot7
[rotor]
nextEltRotor = right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
index c412d25e..fa3e11c0 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/eurobraille/default/profile.ini
@@ -53,6 +53,7 @@
repeatLastShortcut = dot6+dot7+space
addDictionaryEntry = space+dot8+dot7+dot1+dot4+dot5
advancedInput = space+dot2+dot4+dot7
+ undefinedCharsDesc = space+dot1+dot3+dot6+dot7
[rotor]
nextEltRotor = joystick2Right
diff --git a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
index 0100ff60..26e57c71 100644
--- a/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
+++ b/addon/globalPlugins/brailleExtender/Profiles/freedomscientific/default/profile.ini
@@ -53,6 +53,7 @@
getSpeechOutput = braillespacebar+dot3+dot4
addDictionaryEntry = braillespacebar+dot1+dot2+dot5+dot7+dot8
advancedInput = braillespacebar+dot2+dot4+dot7
+ undefinedCharsDesc = braillespacebar+dot1+dot3+dot6+dot7
[rotor]
nextEltRotor = leftwizwheeldown
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 89443f6e..5782d96d 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -668,9 +668,16 @@ def script_cellDescriptionsToChars(self, gesture):
def script_advancedInput(self, gesture):
self.advancedInput = not self.advancedInput
states = [_("disabled"), _("enabled")]
- speech.speakMessage("Advanced braille input mode %s" % states[int(self.advancedInput)])
+ speech.speakMessage(_("Advanced braille input mode %s") % states[int(self.advancedInput)])
script_advancedInput.__doc__ = _("Enable/disable the advanced input mode")
+ def script_undefinedCharsDesc(self, gesture):
+ config.conf["brailleExtender"]["undefinedCharDesc"] = not config.conf["brailleExtender"]["undefinedCharDesc"]
+ states = [_("disabled"), _("enabled")]
+ speech.speakMessage(_("Description of undefined characters %s") % states[int(config.conf["brailleExtender"]["undefinedCharDesc"])])
+ utils.refreshBD()
+ script_undefinedCharsDesc.__doc__ = _("Enable/disable description of undefined characters")
+
def script_position(self, gesture=None):
return ui.message('{0}% ({1}/{2})'.format(round(utils.getPositionPercentage(), 2), utils.getPosition()[0], utils.getPosition()[1]))
script_position.__doc__ = _("Get the cursor position of text")
@@ -1477,6 +1484,7 @@ def script_addDictionaryEntry(self, gesture):
__gestures["kb:nvda+alt+h"] = "toggleDots78"
__gestures["kb:nvda+alt+f"] = "toggleBRFMode"
__gestures["kb:nvda+windows+i"] = "advancedInput"
+ __gestures["kb:nvda+windows+u"] = "undefinedCharsDesc"
__gestures["kb:nvda+windows+k"] = "reloadAddon"
__gestures["kb:volumeMute"] = "toggleVolume"
__gestures["kb:volumeUp"] = "volumePlus"
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 54e16aad..deab8b65 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -381,7 +381,7 @@ def makeSettings(self, settingsSizer):
# Translators: label of a dialog.
self.undefinedCharReprEdit = sHelper.addLabeledControl(_("Specify another pattern"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharRepr"])
self.onUndefinedCharReprList()
- self.undefinedCharsBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Undefined characters descriptions"), wx.DefaultPosition)
+ self.undefinedCharsBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Description of undefined characters"), wx.DefaultPosition)
self.undefinedCharsBtn.Bind(wx.EVT_BUTTON, self.onUndefinedCharsBtn)
self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
@@ -518,7 +518,7 @@ def onTables(self, evt):
class UndefinedCharsDlg(gui.settingsDialogs.SettingsDialog):
# Translators: title of a dialog.
- title = "Braille Extender - %s" % _("Undefined characters descriptions")
+ title = "Braille Extender - %s" % _("Description of undefined characters")
def makeSettings(self, settingsSizer):
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
From e0113986cb4aae468cec6d73d0c23752cf48b27e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 14:08:22 +0100
Subject: [PATCH 28/87] Fix merge
---
addon/globalPlugins/brailleExtender/configBE.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 3e2ca73b..745418f8 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -68,7 +68,7 @@
CHOICE_oneHandMethodSide = 1
CHOICE_oneHandMethodDots = 2
-CHOICE_oneHandMethods = dict_([
+CHOICE_oneHandMethods = dict([
(CHOICE_oneHandMethodSides, _("Fill a cell in two stages on both sides")),
(CHOICE_oneHandMethodSide, _("Fill a cell in two stages on one side (space = empty side)")),
(CHOICE_oneHandMethodDots, _("Fill a cell dots by dots (each dot is a toggle, press space to validate the character)"))
From 6433448e7e5e147d6bab0107fd0c560cef3230fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 14:27:29 +0100
Subject: [PATCH 29/87] Add accelerators
---
addon/globalPlugins/brailleExtender/settings.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 9b1fb54d..ecdd0242 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -355,7 +355,7 @@ def makeSettings(self, settingsSizer):
# Translators: label of a dialog.
self.tabSize = sHelper.addLabeledControl(_("Number of &space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
# Translators: label of a dialog.
- label = _("Representation of undefined characters")
+ label = _("Representation of &undefined characters")
choices = [
_("Use braille table behavior"),
_("Dots 1-8 (⣿)"),
@@ -378,7 +378,7 @@ def makeSettings(self, settingsSizer):
# Translators: label of a dialog.
self.undefinedCharReprEdit = sHelper.addLabeledControl(_("Specify another pattern"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharRepr"])
self.onUndefinedCharReprList()
- self.undefinedCharsBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Description of undefined characters"), wx.DefaultPosition)
+ self.undefinedCharsBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Description of undefined characters"), wx.DefaultPosition)
self.undefinedCharsBtn.Bind(wx.EVT_BUTTON, self.onUndefinedCharsBtn)
self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
From e189355d7c8c551ece45d897dd41f4deaa779377 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 14:34:14 +0100
Subject: [PATCH 30/87] getTableOverview: small fix
---
addon/globalPlugins/brailleExtender/utils.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index e2d68955..8ddaf028 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -289,7 +289,7 @@ def getTableOverview(tbl = ''):
t = 'Input Output\n'
if not re.match(r'^\\.+/$', text[0]):
tmp['%s' % text[0] if text[0] != '' else '?'] = '%s %-7s' % (
- '%s (%s)' % (chr(i), combinationDesign(unicodeBrailleToDescription(chr(i)))),
+ '%s (%s)' % (chr(i), combinationDesign(huc.unicodeBrailleToDescription(chr(i)))),
'%s%-8s' % (text[0].rstrip('\x00'), '%s' % (' (%-10s)' % str(hex(ord(text[0]))) if len(text[0]) == 1 else '' if text[0] != '' else '#ERROR'))
)
else:
From 663735898a19f24e9eefef8709a1a67c72fe1874 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 14:52:54 +0100
Subject: [PATCH 31/87] Fix merge
---
addon/globalPlugins/brailleExtender/settings.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index d5f2e391..53764010 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -150,7 +150,6 @@ def onSave(self):
config.conf["brailleExtender"]["beepsModifiers"] = self.beepsModifiers.IsChecked()
config.conf["brailleExtender"]["oneHandMode"] = self.oneHandMode.IsChecked()
config.conf["brailleExtender"]["oneHandMethod"] = list(configBE.CHOICE_oneHandMethods.keys())[self.oneHandMethod.GetSelection()]
- super(GeneralDlg, self).onOk(evt)
class AttribraDlg(gui.settingsDialogs.SettingsPanel):
@@ -416,7 +415,6 @@ def onSave(self):
repr_ = re.sub('\-+','-', repr_)
config.conf["brailleExtender"]["undefinedCharRepr"] = repr_
instanceGP.reloadBrailleTables()
- super(BrailleTablesDlg, self).onOk(evt)
if restartRequired:
res = gui.messageBox(
_("NVDA must be restarted for some new options to take effect. Do you want restart now?"),
From e0f868e0522df55a45f7d9ac964fc2cb1bb2d970 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 16:23:44 +0100
Subject: [PATCH 32/87] Removed more Python2 code
---
addon/globalPlugins/brailleExtender/patchs.py | 76 ++++---------------
1 file changed, 16 insertions(+), 60 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 68def11a..2e5af3b5 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -46,7 +46,6 @@
import louisHelper
instanceGP = None
-if not isPy3: chr = chrPy2
HUCDotPattern = "12345678-78-12345678"
undefinedCharPattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
@@ -129,53 +128,14 @@ def update(self):
"""
mode = louis.dotsIO
if config.conf["braille"]["expandAtCursor"] and self.cursorPos is not None: mode |= louis.compbrlAtCursor
- if isPy3:
- self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, self.brailleCursorPos = louisHelper.translate(
- getCurrentBrailleTables(),
- self.rawText,
- typeform=self.rawTextTypeforms,
- mode=mode,
- cursorPos=self.cursorPos
- )
- else:
- text = unicode(self.rawText).replace('\0', '')
- self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, brailleCursorPos = louis.translate(getCurrentBrailleTables(),
- text,
- # liblouis mutates typeform if it is a list.
- typeform=tuple(
- self.rawTextTypeforms) if isinstance(
- self.rawTextTypeforms,
- list) else self.rawTextTypeforms,
- mode=mode,
- cursorPos=self.cursorPos or 0
- )
+ self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, self.brailleCursorPos = louisHelper.translate(
+ getCurrentBrailleTables(),
+ self.rawText,
+ typeform=self.rawTextTypeforms,
+ mode=mode,
+ cursorPos=self.cursorPos
+ )
if config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_liblouis, configBE.CHOICE_HUC8, configBE.CHOICE_HUC6, configBE.CHOICE_hex, configBE.CHOICE_dec, configBE.CHOICE_oct, configBE.CHOICE_bin]: undefinedCharProcess(self)
- if not isPy3:
- # liblouis gives us back a character string of cells, so convert it to a list of ints.
- # For some reason, the highest bit is set, so only grab the lower 8
- # bits.
- self.brailleCells = [ord(cell) & 255 for cell in self.brailleCells]
- # #2466: HACK: liblouis incorrectly truncates trailing spaces from its output in some cases.
- # Detect this and add the spaces to the end of the output.
- if self.rawText and self.rawText[-1] == " ":
- # rawToBraillePos isn't truncated, even though brailleCells is.
- # Use this to figure out how long brailleCells should be and thus
- # how many spaces to add.
- correctCellsLen = self.rawToBraillePos[-1] + 1
- currentCellsLen = len(self.brailleCells)
- if correctCellsLen > currentCellsLen:
- self.brailleCells.extend(
- (0,) * (correctCellsLen - currentCellsLen))
- if self.cursorPos is not None:
- # HACK: The cursorPos returned by liblouis is notoriously buggy (#2947 among other issues).
- # rawToBraillePos is usually accurate.
- try:
- brailleCursorPos = self.rawToBraillePos[self.cursorPos]
- except IndexError:
- pass
- else:
- brailleCursorPos = None
- self.brailleCursorPos = brailleCursorPos
if self.selectionStart is not None and self.selectionEnd is not None:
try:
# Mark the selection.
@@ -184,8 +144,7 @@ def update(self):
self.brailleSelectionEnd = len(self.brailleCells)
else:
self.brailleSelectionEnd = self.rawToBraillePos[self.selectionEnd]
- fn = range if isPy3 else xrange
- for pos in fn(self.brailleSelectionStart, self.brailleSelectionEnd):
+ for pos in range(self.brailleSelectionStart, self.brailleSelectionEnd):
self.brailleCells[pos] |= SELECTION_SHAPE()
except IndexError: pass
else:
@@ -201,8 +160,7 @@ def setUndefinedChar(t=None):
if v == "questionMark": s = '?'
else: s = config.conf["brailleExtender"]["undefinedCharRepr"]
v = huc.unicodeBrailleToDescription(getTextInBraille(s, getCurrentBrailleTables()))
- if isPy3: louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
- else: louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v))
+ louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
def getDescChar(c, lang="Windows", start='', end=''):
@@ -234,7 +192,6 @@ def getNotationOrd(s, notation=None):
return s
def undefinedCharProcess(self):
- if not isPy3: return
unicodeBrailleRepr = ''.join([chr(10240 + cell) for cell in self.brailleCells])
allBraillePos = [m.start() for m in re.finditer(undefinedCharPattern, unicodeBrailleRepr)]
if not allBraillePos: return
@@ -427,14 +384,13 @@ def sendChars(self, chars):
input.ii.ki.dwFlags = winUser.KEYEVENTF_UNICODE|direction
inputs.append(input)
winUser.SendInput(inputs)
- if isPy3:
- focusObj = api.getFocusObject()
- if keyboardHandler.shouldUseToUnicodeEx(focusObj):
- # #10569: When we use ToUnicodeEx to detect typed characters,
- # emulated keypresses aren't detected.
- # Send TypedCharacter events manually.
- for ch in chars:
- focusObj.event_typedCharacter(ch=ch)
+ focusObj = api.getFocusObject()
+ if keyboardHandler.shouldUseToUnicodeEx(focusObj):
+ # #10569: When we use ToUnicodeEx to detect typed characters,
+ # emulated keypresses aren't detected.
+ # Send TypedCharacter events manually.
+ for ch in chars:
+ focusObj.event_typedCharacter(ch=ch)
#: brailleInput.BrailleInputHandler.emulateKey()
def emulateKey(self, key, withModifiers=True):
From 1bb40087ad971e0ccec278236bb3a73599f057d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 20:04:26 +0100
Subject: [PATCH 33/87] Added 3rd method
---
addon/globalPlugins/brailleExtender/patchs.py | 27 ++++++++++++++++---
.../globalPlugins/brailleExtender/settings.py | 1 -
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index a92f87c2..db36ec2c 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -364,22 +364,41 @@ def processOneHandMode(self, dots):
newDots = ''.join(sorted(set(newDots)))
if not newDots: newDots = "0"
dots = ord(descriptionToUnicodeBraille(newDots))-0x2800
- #elif method == configBE.CHOICE_oneHandMethodDots: pass
+ elif method == configBE.CHOICE_oneHandMethodDots:
+ endChar = dots == 0
+ translatedBufferBrailleDots = "0"
+ if self.bufferBraille:
+ translatedBufferBraille = chr(self.bufferBraille[-1] | 0x2800)
+ translatedBufferBrailleDots = unicodeBrailleToDescription(translatedBufferBraille)
+ translatedDots = chr(dots | 0x2800)
+ translatedDotsBrailleDots = unicodeBrailleToDescription(translatedDots)
+ for dot in translatedDotsBrailleDots:
+ if dot not in translatedBufferBrailleDots: translatedBufferBrailleDots += dot
+ else: translatedBufferBrailleDots = translatedBufferBrailleDots.replace(dot, '')
+ if not translatedBufferBrailleDots: translatedBufferBrailleDots = "0"
+ newDots = ''.join(sorted(set(translatedBufferBrailleDots)))
+ log.info("===> " + newDots)
+ dots = ord(descriptionToUnicodeBraille(newDots))-0x2800
else:
speech.speakMessage(_("Unsupported input method"))
self.flushBuffer()
return False, False
if endChar:
if not self.bufferBraille: self.bufferBraille.insert(pos, 0)
- self.bufferBraille[-1] |= dots
- self.untranslatedCursorPos += 1
+ if method == configBE.CHOICE_oneHandMethodDots:
+ self.bufferBraille[-1] = dots
+ else: self.bufferBraille[-1] |= dots
if not endWord: endWord = self.bufferBraille[-1] == 0
+ if method == configBE.CHOICE_oneHandMethodDots:
+ self.bufferBraille.append(0)
+ self.untranslatedCursorPos += 1
if addSpace:
self.bufferBraille.append(0)
self.untranslatedCursorPos += 1
else:
continue_ = False
- self.bufferBraille.insert(pos, dots)
+ if self.bufferBraille and method == configBE.CHOICE_oneHandMethodDots: self.bufferBraille[-1] = dots
+ else: self.bufferBraille.insert(pos, dots)
self._reportUntranslated(pos)
return continue_, endWord
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index b1756ada..3b2fe8d1 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -150,7 +150,6 @@ def onSave(self):
config.conf["brailleExtender"]["beepsModifiers"] = self.beepsModifiers.IsChecked()
config.conf["brailleExtender"]["oneHandMode"] = self.oneHandMode.IsChecked()
config.conf["brailleExtender"]["oneHandMethod"] = list(configBE.CHOICE_oneHandMethods.keys())[self.oneHandMethod.GetSelection()]
- super(GeneralDlg, self).onOk(evt)
class AttribraDlg(gui.settingsDialogs.SettingsPanel):
From 1305dac796b82a23774b245618776866dbb496ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 8 Feb 2020 20:11:24 +0100
Subject: [PATCH 34/87] Fix merge
---
addon/globalPlugins/brailleExtender/patchs.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 5ca49bf2..e86dc39d 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -504,31 +504,31 @@ def processOneHandMode(self, dots):
translatedBufferBrailleDots = 0
if self.bufferBraille:
translatedBufferBraille = chr(self.bufferBraille[-1] | 0x2800)
- translatedBufferBrailleDots = unicodeBrailleToDescription(translatedBufferBraille)
+ translatedBufferBrailleDots = huc.unicodeBrailleToDescription(translatedBufferBraille)
translatedDots = chr(dots | 0x2800)
- translatedDotsBrailleDots = unicodeBrailleToDescription(translatedDots)
+ translatedDotsBrailleDots = huc.unicodeBrailleToDescription(translatedDots)
newDots = ""
for dot in translatedDotsBrailleDots:
dot = int(dot)
if dots >= 0 and dot < 9: newDots += equiv[dot]
newDots = ''.join(sorted(set(newDots)))
if not newDots: newDots = "0"
- dots = ord(descriptionToUnicodeBraille(newDots))-0x2800
+ dots = ord(huc.cellDescriptionsToUnicodeBraille(newDots))-0x2800
elif method == configBE.CHOICE_oneHandMethodDots:
endChar = dots == 0
translatedBufferBrailleDots = "0"
if self.bufferBraille:
translatedBufferBraille = chr(self.bufferBraille[-1] | 0x2800)
- translatedBufferBrailleDots = unicodeBrailleToDescription(translatedBufferBraille)
+ translatedBufferBrailleDots = huc.unicodeBrailleToDescription(translatedBufferBraille)
translatedDots = chr(dots | 0x2800)
- translatedDotsBrailleDots = unicodeBrailleToDescription(translatedDots)
+ translatedDotsBrailleDots = huc.unicodeBrailleToDescription(translatedDots)
for dot in translatedDotsBrailleDots:
if dot not in translatedBufferBrailleDots: translatedBufferBrailleDots += dot
else: translatedBufferBrailleDots = translatedBufferBrailleDots.replace(dot, '')
if not translatedBufferBrailleDots: translatedBufferBrailleDots = "0"
newDots = ''.join(sorted(set(translatedBufferBrailleDots)))
log.info("===> " + newDots)
- dots = ord(descriptionToUnicodeBraille(newDots))-0x2800
+ dots = ord(huc.cellDescriptionsToUnicodeBraille(newDots))-0x2800
else:
speech.speakMessage(_("Unsupported input method"))
self.flushBuffer()
From cd9a6562190903137e46b066ddf9b8be37d82f9e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 15 Feb 2020 14:55:25 +0100
Subject: [PATCH 35/87] Apply patches before loading dictionaries
---
addon/globalPlugins/brailleExtender/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index a38696ce..2bca6e8b 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -46,13 +46,13 @@
import ui
import versionInfo
import virtualBuffers
+from . import patchs
from . import configBE
config.conf.spec["brailleExtender"] = configBE.getConfspec()
from . import utils
from .updateCheck import *
from . import dictionaries
from . import huc
-from . import patchs
from .common import *
instanceGP = None
From 3feb2299e4c48cd8a3499a44a9d00fff06b0c14d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 25 Feb 2020 15:11:40 +0100
Subject: [PATCH 36/87] Dictionaries/checktable: fix an issue with non ASCII
characters in file path. Thanks to Corentin
---
addon/globalPlugins/brailleExtender/__init__.py | 2 +-
addon/globalPlugins/brailleExtender/dictionaries.py | 12 +++++++-----
addon/globalPlugins/brailleExtender/patchs.py | 2 +-
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 2bca6e8b..a38696ce 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -46,13 +46,13 @@
import ui
import versionInfo
import virtualBuffers
-from . import patchs
from . import configBE
config.conf.spec["brailleExtender"] = configBE.getConfspec()
from . import utils
from .updateCheck import *
from . import dictionaries
from . import huc
+from . import patchs
from .common import *
instanceGP = None
diff --git a/addon/globalPlugins/brailleExtender/dictionaries.py b/addon/globalPlugins/brailleExtender/dictionaries.py
index 6e89d683..ba1edd00 100644
--- a/addon/globalPlugins/brailleExtender/dictionaries.py
+++ b/addon/globalPlugins/brailleExtender/dictionaries.py
@@ -19,6 +19,7 @@
from . import configBE
from .common import *
from . import huc
+from logHandler import log
BrailleDictEntry = namedtuple("BrailleDictEntry", ("opcode", "textPattern", "braillePattern", "direction", "comment"))
OPCODE_SIGN = "sign"
@@ -49,11 +50,12 @@
def checkTable(path):
global invalidDictTables
- try:
- louis.checkTable([path])
- return True
- except RuntimeError: invalidDictTables.add(path)
- return False
+ tablesString = b",".join([x.encode("mbcs") if isinstance(x, str) else bytes(x) for x in [path]])
+ if not louis.liblouis.lou_checkTable(tablesString):
+ log.error("Can't compile: tables %s" % path)
+ invalidDictTables.add(path)
+ return False
+ return True
def getValidPathsDict():
types = ["tmp", "table", "default"]
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index d51dba80..7ef5f3be 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -629,7 +629,7 @@ def _translate(self, endWord):
#: louis._createTablesString()
def _createTablesString(tablesList):
"""Creates a tables string for liblouis calls"""
- return b",".join([x.encode(sys.getfilesystemencoding()) if isinstance(x, str) else bytes(x) for x in tablesList])
+ return b",".join([x.encode("mbcs") if isinstance(x, str) else bytes(x) for x in tablesList])
# applying patches
braille.Region.update = update
From ac9cb250760b12333e7686a5988af0f00bbb0e8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Wed, 18 Mar 2020 18:05:20 +0100
Subject: [PATCH 37/87] Update documentation
---
.../globalPlugins/brailleExtender/addonDoc.py | 416 +++++++++++++-----
.../globalPlugins/brailleExtender/configBE.py | 17 +-
.../globalPlugins/brailleExtender/settings.py | 17 +-
addon/globalPlugins/brailleExtender/utils.py | 21 +-
4 files changed, 338 insertions(+), 133 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index 1a82d64a..5b233862 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -6,6 +6,7 @@
from __future__ import unicode_literals
import re
import addonHandler
+
addonHandler.initTranslation()
import braille
from . import configBE
@@ -13,56 +14,201 @@
import cursorManager
import globalCommands
import ui
+import random
from . import utils
from .common import *
-class AddonDoc:
+def escape(text):
+ chars = {"&": "&", '"': """, "'": "'", "<": "<", ">": ">"}
+ return "".join(chars.get(c, c) for c in text)
+
+
+def initializeRandomChar():
+ global chosenChar
+ chosenChar = random.choice("#$£€=+()*,;:.?!/\"&")
+URLHUC = "https://danielmayr.at/huc/en.html"
+chosenChar = None
+
+def getFeaturesDoc():
+ undefinedCharsSamples = [
+ [_("Character"), _("HUC8"), _("Hexadecimal"), _("Decimal"), _("Octal"), _("Binary")],
+ ['👍', "⣭⢤⡙", "⠭1f44d or ⠓1f44d", "⠙128077", "⠕372115", "⠃11111010001001101"],
+ ['😀', "⣭⡤⣺", "⠭1f600 or ⠓1f600", "⠙128512", "⠕373000", "⠃11111011000000000"],
+ ['🍑', "⣭⠤⠕", "⠭1f351 or ⠓1f351", "⠙127825", "⠕371521", "⠃11111001101010001"],
+ ['🌊', "⣭⠤⠺", "⠭1f30a or ⠓1f30a", "⠙127754", "⠕371412", "⠃11111001100001010"]
+ ]
+ for i in range(1, len(undefinedCharsSamples)):
+ ch = undefinedCharsSamples[i][0][0]
+ undefinedCharsSamples[i][0] = "%s (%s)" % (ch, utils.getSpeechSymbols(ch))
+
+ features = {
+ _("Representation of undefined characters"): [
+ "",
+ _("The extension allows you to customize how an undefined character should be represented within a braille table. To do so, go to the braille table settings. You can choose between the following representations:"),
+ "
",
+ ''.join([f"- {choice}
" for choice in configBE.CHOICES_undefinedCharRepr]),
+ "
",
+ _("You can also combine this option with the “describe the character if possible” setting."),
+ "
",
+ _("Notes:"),
+ "
",
+ "- " + _("To distinguish the undefined set of characters while maximizing space, the best combination is the usage of the HUC8 representation without checking the “describe character if possible” option.") + "
",
+ "- " + _("To learn more about the HUC representation, see {url}").format(url=f"
{URLHUC}") + " ",
+ "- " + _("Keep in mind that definitions in tables and those in your table dictionaries take precedence over character descriptions, which also take precedence over the chosen representation for undefined characters.") + "
",
+ "
"
+ ],
+ _("Getting Current Character Info"): [
+ "",
+ _("This feature allows you to obtain various information regarding the character under the cursor using the current input braille table, such as:"),
+ "
",
+ _("the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary values; A description of the character if possible; - The Unicode Braille representation and the Braille dot pattern."),
+ "
",
+ _("Pressing the defined gesture associated to this function once shows you the information in a flash message and a double-press displays the same information in a virtual NVDA buffer."),
+ "
",
+ _("On supported displays the defined gesture is ⡉+space. No system gestures are defined by default."),
+ "
",
+ _(f"For example, for the '{chosenChar}' character, we will get the following information:"),
+ "
" + utils.currentCharDesc(chosenChar, 0) + "
",
+ ],
+ _("Advanced Braille Input"): [
+ "",
+ _("This feature allows you to enter any character from its HUC8 representation or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to develop abbreviations. To use this function, enter the advanced input mode and then enter the desired pattern. Default gestures: NVDA+Windows+i or ⡊+space (on supported displays). Press the same gesture to exit this mode. Alternatively, an option allows you to automatically exit this mode after entering a single pattern. "),
+ "
",
+ "If you want to enter a character from its HUC8 representation, simply enter the HUC8 pattern. Since a HUC8 sequence must fit on 3 cells, the interpretation will be performed each time 3 dot combinations are entered. If you wish to enter a character from its hexadecimal, decimal, octal or binary value, do the following:",
+ "
",
+ "First specify the basis as follows:",
+ f"- ⠭ or ⠓{punctuationSeparator}:" + _("for a hexadecimal value") + "
",
+ f"⠙{punctuationSeparator}: " + _("for a decimal value") + "",
+ f"⠕{punctuationSeparator}: " + _("for an octal value") + "",
+ f"⠃{punctuationSeparator}: " + ("for a binary value") + "",
+ "
",
+ "- " + _("Enter the value of the character according to the previously selected basis.") + "
",
+ "- " + _("Press Space to validate.") + "
",
+ "
",
+ "",
+ _("For abbreviations, you must first add them in the dialog box - Advanced mode dictionaries -. Then, you just have to enter your abbreviation and press space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."),
+ "
",
+ _("Here are some examples of sequences to be entered for given characters:"),
+ "
",
+ ''.join(["%s
" % (''.join(["<{0}>{1}{0}>".format("th" if i == 0 else "td", e) for e in l])) for i, l in enumerate(undefinedCharsSamples)]),
+ "
",
+ _("Note: the HUC6 input is currently not supported."),
+ "
",
+ ],
+ _("One-hand mode"): [
+ "",
+ _("This feature allows you to compose a cell in several steps. This can be activated in the general settings of the extension's preferences or on the fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). Three input methods are available."),
+ "
" + _("Method #1: fill a cell in 2 stages on both sides") + "
",
+ "",
+ _("With this method, type the left side dots, then the right side dots. If one side is empty, type the dots correspondig to the opposite side twice, or type the dots corresponding to the non-empty side in 2 steps."),
+ "
", _("For example:"),
+ "
",
+ "- " + _("For ⠛: press Dots 1-2 then dots 4-5.") + "
",
+ "- " + _("For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2.") + "
",
+ "- " + _("For ⠘: press 4-5 then 4-5, or dot 4 then dot 5.") + "
",
+ "
",
+ "" + _("Method #2: fill a cell in two stages on one side (Space = empty side)") + "
",
+ "",
+ _("Using this method, you can compose a cell with one hand, regardless of which side of the Braille keyboard you choose. The first step allows you to enter dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. An empty cell will be obtained by pressing the space key twice."),
+ "
" + _("For example:"),
+ "
",
+ "- " + _("For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5.") + "
",
+"- " + _("For ⠃: press dots 1-2 then space, or 4-5 then space.") + "
",
+"- " + _("For ⠘: press space then 1-2, or space then dots 4-5.") + "
",
+ "
",
+ "" + _("Method #3: fill a cell dots by dots (each dot is a toggle, press Space to validate the character)") + "
",
+ "",
+ "In this mode, each dot is a toggle. You must press the space key as soon as the cell you have entered is the desired one to input the character. Thus, the more dots are contained in the cell, the more ways you have to enter the character.",
+ "
" + "For example, for ⠛, you can compose the cell in the following ways:",
+ "
",
+ "- " + _("Dots 1-2, then dots 4-5, then space.") + "
",
+ "- " + _("Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space.") + "
",
+ "- " + _("Dot 1, then dots 2-4-5, then space.") + "
",
+ "- " + _("Dots 1-2-4, then dot 5, then space.") + "
",
+ "- " + _("Dot 2, then dot 1, then dot 5, then dot 4, and then space.") + "
",
+ "- " + _("Etcc.") + "
",
+ "
"
+ ]
+ }
+ out = ""
+ for title, desc in features.items():
+ out += f"{title}
{''.join(desc)}"
+ return out
+
+class AddonDoc:
instanceGP = None
def __init__(self, instanceGP):
- if not instanceGP: return
+ initializeRandomChar()
+ if not instanceGP:
+ return
self.instanceGP = instanceGP
gestures = instanceGP.getGestures()
- doc = """
- {NAME}{DISPLAY}{PROFILE}
- Version {VERSION}
-
{DESC}
- """.format(
- NAME=addonName,
- DISPLAY=punctuationSeparator + ': ' + _('%s braille display') % configBE.curBD.capitalize() if configBE.gesturesFileExists else '',
- PROFILE = ", "+_("profile loaded: %s") % "default",
- VERSION=addonVersion,
- DESC=self.getDescFormated(addonDesc)
- )
+ manifestDescription = self.getDescFormated(addonDesc)
+ doc = f"{addonSummary} {addonVersion} — " + _("Documentation") + "
"
+ doc += f"{manifestDescription}
"
+ doc += "Let's explore some features
"
+ doc += getFeaturesDoc()
+ doc += "Profile gestures
"
if configBE.gesturesFileExists:
+ brailleDisplayDriverName = configBE.curBD.capitalize()
+ profileName = "default"
+ doc += ''.join([
+ "",
+ _("Driver loaded") + f"{punctuationSeparator}: {brailleDisplayDriverName}" + "
",
+ _("Profile") + f"{punctuationSeparator}: {profileName}",
+ "
"
+ ])
mKB = OrderedDict()
mNV = OrderedDict()
mW = OrderedDict()
- for g in configBE.iniGestures['globalCommands.GlobalCommands'].keys(
- ):
- if 'kb:' in g:
- if '+' in g:
- mW[g] = configBE.iniGestures['globalCommands.GlobalCommands'][g]
+ for g in configBE.iniGestures["globalCommands.GlobalCommands"].keys():
+ if "kb:" in g:
+ if "+" in g:
+ mW[g] = configBE.iniGestures["globalCommands.GlobalCommands"][g]
else:
- mKB[g] = configBE.iniGestures['globalCommands.GlobalCommands'][g]
+ mKB[g] = configBE.iniGestures["globalCommands.GlobalCommands"][g]
else:
- mNV[g] = configBE.iniGestures['globalCommands.GlobalCommands'][g]
- doc += ("" + _("Simple keys") + " (%d)
") % len(mKB)
+ mNV[g] = configBE.iniGestures["globalCommands.GlobalCommands"][g]
+ doc += ("" + _("Simple keys") + " (%d)
") % len(mKB)
doc += self.translateLst(mKB)
- doc += ("" + _("Usual shortcuts") + " (%d)
") % len(mW)
+ doc += ("" + _("Usual shortcuts") + " (%d)
") % len(mW)
doc += self.translateLst(mW)
- doc += ("" + _("Standard NVDA commands") + " (%d)
") % len(mNV)
+ doc += ("" + _("Standard NVDA commands") + " (%d)
") % len(mNV)
doc += self.translateLst(mNV)
- doc += "{0} ({1})
".format(_("Modifier keys"), len(configBE.iniProfile["modifierKeys"]))
+ doc += "{0} ({1})
".format(
+ _("Modifier keys"), len(configBE.iniProfile["modifierKeys"])
+ )
doc += self.translateLst(configBE.iniProfile["modifierKeys"])
- doc += "" + _("Quick navigation keys") + "
"
- doc += self.translateLst(configBE.iniGestures['cursorManager.CursorManager'])
- doc += "" + _("Rotor feature") + "
"
- doc += self.translateLst({k: configBE.iniProfile["miscs"][k] for k in configBE.iniProfile["miscs"] if "rotor" in k.lower()}) + self.translateLst(configBE.iniProfile["rotor"])
- doc += ("" + _("Gadget commands") + " (%d)
") % (len(configBE.iniProfile["miscs"]) - 2)
- doc += self.translateLst(OrderedDict([(k, configBE.iniProfile["miscs"][k]) for k in configBE.iniProfile["miscs"] if k not in ['nextRotor', 'priorRotor']]))
- doc += "{0} ({1})
".format(_("Shortcuts defined outside add-on"), len(braille.handler.display.gestureMap._map))
+ doc += "" + _("Quick navigation keys") + "
"
+ doc += self.translateLst(
+ configBE.iniGestures["cursorManager.CursorManager"]
+ )
+ doc += "" + _("Rotor feature") + "
"
+ doc += self.translateLst(
+ {
+ k: configBE.iniProfile["miscs"][k]
+ for k in configBE.iniProfile["miscs"]
+ if "rotor" in k.lower()
+ }
+ ) + self.translateLst(configBE.iniProfile["rotor"])
+ doc += ("" + _("Gadget commands") + " (%d)
") % (
+ len(configBE.iniProfile["miscs"]) - 2
+ )
+ doc += self.translateLst(
+ OrderedDict(
+ [
+ (k, configBE.iniProfile["miscs"][k])
+ for k in configBE.iniProfile["miscs"]
+ if k not in ["nextRotor", "priorRotor"]
+ ]
+ )
+ )
+ doc += "{0} ({1})
".format(
+ _("Shortcuts defined outside add-on"),
+ len(braille.handler.display.gestureMap._map),
+ )
doc += ""
for g in braille.handler.display.gestureMap._map:
doc += ("- {0}{1}: {2}{3};
").format(
@@ -70,143 +216,197 @@ def __init__(self, instanceGP):
punctuationSeparator,
utils.uncapitalize(
re.sub(
- '^([A-Z])',
+ "^([A-Z])",
lambda m: m.group(1).lower(),
self.getDocScript(
- braille.handler.display.gestureMap._map[g]))),
- punctuationSeparator)
- doc = re.sub(r'[ ]?;()$', r'.\1', doc)
+ braille.handler.display.gestureMap._map[g]
+ ),
+ )
+ ),
+ punctuationSeparator,
+ )
+ doc = re.sub(r"[ ]?;()$", r".\1", doc)
doc += "
"
# list keyboard layouts
- if not instanceGP.noKeyboarLayout() and 'keyboardLayouts' in configBE.iniProfile:
+ if (
+ not instanceGP.noKeyboarLayout()
+ and "keyboardLayouts" in configBE.iniProfile
+ ):
lb = instanceGP.getKeyboardLayouts()
- doc += '{}
'.format(
- _('Keyboard configurations provided'))
- doc += '{}{}:
'.format(
- _('Keyboard configurations are'), punctuationSeparator)
- for l in lb:
- doc += '- {}.
'.format(l)
- doc += '
'
+ doc += "{}
".format(_("Keyboard configurations provided"))
+ doc += (
+ ""
+ + _("Keyboard configurations are")
+ + punctuationSeparator
+ + "
"
+ )
+ doc += "".join(f"- {l}.
" for l in lb)
+ doc += "
"
else:
doc += (
- "" + _("Warning:") + "
" +
- _("BrailleExtender has no gesture map yet for your braille display.") + "
" +
- _("However, you can still assign your own gestures in the \"Input Gestures\" dialog (under Preferences menu).") + "
"
+ ""
+ + _("Warning:")
+ + "
"
+ + _("BrailleExtender has no gesture map yet for your braille display.")
+ + "
"
+ + _(
+ 'However, you can still assign your own gestures in the "Input Gestures" dialog (under Preferences menu).'
+ )
+ + "
"
)
- doc += ("" + _("Add-on gestures on the system keyboard") +
- " (%s)
") % (len(gestures) - 4)
+ doc += ("" + _("Add-on gestures on the system keyboard") + " (%s)
") % (
+ len(gestures) - 4
+ )
doc += ""
- for g in [k for k in gestures if k.lower().startswith('kb:')]:
+ for g in [k for k in gestures if k.lower().startswith("kb:")]:
if g.lower() not in [
"kb:volumeup",
"kb:volumedown",
- "kb:volumemute"] and gestures[g] not in ["logFieldsAtCursor"]:
+ "kb:volumemute",
+ ] and gestures[g] not in ["logFieldsAtCursor"]:
doc += ("- {0}{1}: {2}{3};
").format(
utils.getKeysTranslation(g),
punctuationSeparator,
re.sub(
"^([A-Z])",
lambda m: m.group(1).lower(),
- self.getDocScript(gestures[g])
+ self.getDocScript(gestures[g]),
),
- punctuationSeparator
+ punctuationSeparator,
)
- doc = re.sub(r'[ ]?;()$', r'.\1', doc)
+ doc = re.sub(r"[ ]?;()$", r".\1", doc)
doc += "
"
translators = {
_("Arabic"): "Ikrami Ahmad",
_("Croatian"): "Zvonimir Stanečić ",
- _("German"): "Adriani Botez , Karl Eick, Jürgen Schwingshandl ",
- _("Hebrew"): "Shmuel Naaman , Afik Sofer, David Rechtman, Pavel Kaplan",
+ _(
+ "French"
+ ): "Sof , André-Abush Clause ",
+ _(
+ "German"
+ ): "Adriani Botez , Karl Eick, Jürgen Schwingshandl ",
+ _(
+ "Hebrew"
+ ): "Shmuel Naaman , Afik Sofer, David Rechtman, Pavel Kaplan",
_("Persian"): "Mohammadreza Rashad ",
_("Polish"): "Zvonimir Stanečić, Dorota Krać",
_("Russian"): "Zvonimir Stanečić, Pavel Kaplan ",
}
- doc += "" + _("Copyrights and acknowledgements") + "
" + (''.join([
- "",
- "Copyright (C) 2016-2020 André-Abush Clause ", _("and other contributors"),
- ":
",
- "
%s\n%s
" % (addonURL, addonGitHubURL),
- "
",
- "" + _("Translators") + "
"
- ]))
+ doc += (
+ "" + _("Copyrights and acknowledgements") + "
"
+ + (
+ "".join(
+ [
+ "",
+ "Copyright (C) 2016-2020 André-Abush Clause ",
+ _("and other contributors"),
+ ":
",
+ "
%s\n%s
" % (addonURL, addonGitHubURL),
+ "
",
+ "" + _("Translators") + "
",
+ ]
+ )
+ )
+ )
for language, authors in translators.items():
- doc += f"- {language}{punctuationSeparator}: {authors}
"
- doc += ''.join([
- "
",
- "" + _("Code contributions and other")+"
" + _("Additional third party copyrighted code is included:") + "
",
- """",
- "" + _("Thanks also to") + punctuationSeparator +": ",
- "Daniel Cotto, Corentin, Louis.
",
- "" + _("And thank you very much for all your feedback and comments.") + " ☺
"
- ])
- ui.browseableMessage(doc, _("%s\'s documentation") % addonName, True)
+ doc += f"{language}{punctuationSeparator}: {escape(authors)}"
+ doc += "".join(
+ [
+ "",
+ "" + _("Code contributions and other") + "
",
+ ""
+ + _("Additional third party copyrighted code is included:")
+ + "
",
+ "",
+ f"- Attribra{punctuationSeparator}: Copyright (C) 2017 Alberto Zanella <lapostadialberto@gmail.com> → https://github.com/albzan/attribra/
",
+ "
",
+ ""
+ + _("Thanks also to")
+ + f"{punctuationSeparator}: Daniel Cotto, Corentin, Louis.
",
+ _("And thank you very much for all your feedback and comments.")
+ + " ☺
",
+ ]
+ )
+ ui.browseableMessage(doc, _("%s's documentation") % addonName, True)
@staticmethod
def getDescFormated(txt):
- txt = re.sub(r'\n\* ([^\n]+)(\n|$)', r'\n\1\2', txt)
- txt = re.sub(r'\n\* ([^\n]+)(\n|$)', r'\n\1\2', txt)
- txt = re.sub(r'([^>])\n', r'\1\n- ', txt)
- txt = re.sub(r'
\n([^<]|$)', r'
\n\1', txt)
- txt = re.sub(r'$', r'', txt)
+ txt = re.sub(r"\n\* ([^\n]+)(\n|$)", r"\n\1\2", txt)
+ txt = re.sub(r"\n\* ([^\n]+)(\n|$)", r"\n\1\2", txt)
+ txt = re.sub(r"([^>])\n", r"\1\n- ", txt)
+ txt = re.sub(r"
\n([^<]|$)", r"
\n\1", txt)
+ txt = re.sub(r"$", r"", txt)
return txt
def getDocScript(self, n):
- if n == "defaultQuickLaunches": n = "quickLaunch"
+ if n == "defaultQuickLaunches":
+ n = "quickLaunch"
doc = None
if isinstance(n, list):
n = str(n[-1][-1])
- if n.startswith('kb:'): return _("Emulates pressing %s on the system keyboard") % utils.getKeysTranslation(n)
+ if n.startswith("kb:"):
+ return _(
+ "Emulates pressing %s on the system keyboard"
+ ) % utils.getKeysTranslation(n)
places = [globalCommands.commands, self.instanceGP, cursorManager.CursorManager]
for place in places:
- func = getattr(place, ('script_%s' % n), None)
+ func = getattr(place, ("script_%s" % n), None)
if func:
doc = func.__doc__
break
- return doc if doc is not None else _("description currently unavailable for this shortcut")
-
+ return (
+ doc
+ if doc is not None
+ else _("description currently unavailable for this shortcut")
+ )
def translateLst(self, lst):
- doc = ''
+ doc = ""
for g in lst:
- if 'kb:' in g and 'capsLock' not in g and 'insert' not in g:
+ if "kb:" in g and "capsLock" not in g and "insert" not in g:
if isinstance(lst[g], list):
- doc += '- {0}{2}: {1}{2};
'.format(
+ doc += "- {0}{2}: {1}{2};
".format(
utils.getKeysTranslation(g),
utils.beautifulSht(lst[g]),
- punctuationSeparator)
+ punctuationSeparator,
+ )
else:
- doc += '- {0}{2}: {1}{2};
'.format(
+ doc += "- {0}{2}: {1}{2};
".format(
utils.getKeysTranslation(g),
utils.beautifulSht(lst[g]),
- punctuationSeparator)
- elif 'kb:' in g:
- gt = _('caps lock') if 'capsLock' in g else g
- doc += '- {0}{2}: {1}{2};
'.format(
- gt.replace(
- 'kb:', ''), utils.beautifulSht(lst[g]), punctuationSeparator)
+ punctuationSeparator,
+ )
+ elif "kb:" in g:
+ gt = _("caps lock") if "capsLock" in g else g
+ doc += "- {0}{2}: {1}{2};
".format(
+ gt.replace("kb:", ""),
+ utils.beautifulSht(lst[g]),
+ punctuationSeparator,
+ )
else:
if isinstance(lst[g], list):
- doc += '- {0}{1}: {2}{3};
'.format(utils.beautifulSht(lst[g]),
+ doc += "- {0}{1}: {2}{3};
".format(
+ utils.beautifulSht(lst[g]),
punctuationSeparator,
re.sub(
- '^([A-Z])',
+ "^([A-Z])",
lambda m: m.group(1).lower(),
- utils.uncapitalize(
- self.getDocScript(g))),
- punctuationSeparator)
+ utils.uncapitalize(self.getDocScript(g)),
+ ),
+ punctuationSeparator,
+ )
else:
- doc += '- {0}{1}: {2}{3};
'.format(
- utils.beautifulSht(
- lst[g]), punctuationSeparator,
+ doc += "- {0}{1}: {2}{3};
".format(
+ utils.beautifulSht(lst[g]),
+ punctuationSeparator,
re.sub(
- '^([A-Z])',
+ "^([A-Z])",
lambda m: m.group(1).lower(),
- utils.uncapitalize(
- self.getDocScript(g))),
- punctuationSeparator)
- doc = re.sub(r'[ ]?;()$', r'.\1', doc)
+ utils.uncapitalize(self.getDocScript(g)),
+ ),
+ punctuationSeparator,
+ )
+ doc = re.sub(r"[ ]?;()$", r".\1", doc)
doc += "
"
return doc
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 5fb70f99..da102f27 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -51,7 +51,22 @@
CHOICE_dec = 11
CHOICE_oct = 12
CHOICE_bin = 13
-
+CHOICES_undefinedCharRepr = [
+ _("Use braille table behavior"),
+ _("Dots 1-8 (⣿)"),
+ _("Dots 1-6 (⠿)"),
+ _("Empty cell (⠀)"),
+ _("Other dot pattern (e.g.: 6-123456)"),
+ _("Question mark (depending output table)"),
+ _("Other sign/pattern (e.g.: \, ??)"),
+ _("Hexadecimal, Liblouis style"),
+ _("Hexadecimal, HUC8"),
+ _("Hexadecimal, HUC6"),
+ _("Hexadecimal"),
+ _("Decimal"),
+ _("Octal"),
+ _("Binary")
+]
outputMessage = dict([
(CHOICE_none, _("none")),
(CHOICE_braille, _("braille only")),
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 53764010..f0b20657 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -364,22 +364,7 @@ def makeSettings(self, settingsSizer):
self.tabSize = sHelper.addLabeledControl(_("Number of &space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
# Translators: label of a dialog.
label = _("Representation of &undefined characters")
- choices = [
- _("Use braille table behavior"),
- _("Dots 1-8 (⣿)"),
- _("Dots 1-6 (⠿)"),
- _("Empty cell (⠀)"),
- _("Other dot pattern (e.g.: 6-123456)"),
- _("Question mark (depending output table)"),
- _("Other sign/pattern (e.g.: \, ??)"),
- _("Hexadecimal, Liblouis style"),
- _("Hexadecimal, HUC8"),
- _("Hexadecimal, HUC6"),
- _("Hexadecimal"),
- _("Decimal"),
- _("Octal"),
- _("Binary")
- ]
+ choices = configBE.CHOICES_undefinedCharRepr
self.undefinedCharReprList = sHelper.addLabeledControl(label, wx.Choice, choices=choices)
self.undefinedCharReprList.Bind(wx.EVT_CHOICE, self.onUndefinedCharReprList)
self.undefinedCharReprList.SetSelection(config.conf["brailleExtender"]["undefinedCharReprMethod"])
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 8ddaf028..eda2081a 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -194,19 +194,24 @@ def reload_brailledisplay(bd_name):
ui.message(_("Reload failed"))
return False
-def currentCharDesc():
- ch = getCurrentChar()
- if not ch: return ui.message(_("Not a character"))
+def currentCharDesc(ch=None, display=True):
+ if not ch:
+ ch = getCurrentChar()
+ if not ch: return ui.message(_("Not a character"))
c = ord(ch)
if c:
- try: descChar = unicodedata.name(ch)
- except ValueError: descChar = _("unknown")
+ charDescCurLang = getSpeechSymbols(ch)
+ try: charDesc = unicodedata.name(ch)
+ except ValueError: charDesc = _("N/A")
HUCrepr = " (%s, %s)" % (huc.translate(ch, False), huc.translate(ch, True))
- s = '%c%s: %s; %s; %s; %s; %s [%s]' % (ch, HUCrepr, hex(c), c, oct(c), bin(c), descChar, unicodedata.category(ch))
+ brch = getTextInBraille(ch)
+ brchDesc = huc.unicodeBrailleToDescription(brch)
+ charCategory = unicodedata.category(ch)
+ s = f"{ch}{HUCrepr}: {hex(c)}, {c}, {oct(c)}, {bin(c)}, {charDescCurLang} / {charDesc} [{charCategory}]. {brch} {brchDesc}"
+ if not display: return s
if scriptHandler.getLastScriptRepeatCount() == 0: ui.message(s)
elif scriptHandler.getLastScriptRepeatCount() == 1:
- brch = getTextInBraille(ch)
- ui.browseableMessage("%s\n%s (%s)" % (s, brch, huc.unicodeBrailleToDescription(brch)), r'\x%d (%s) - Char info' % (c, ch))
+ ui.browseableMessage(s, r'\x%d (%s) - Char info' % (c, ch))
else: ui.message(_("Not a character"))
def getCurrentChar():
From fbb4b8de03eebb4750b875cb0762e8caaaa9f5e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 19 Mar 2020 07:56:59 +0100
Subject: [PATCH 38/87] Fixes #49
---
addon/globalPlugins/brailleExtender/utils.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 8ddaf028..f07e192c 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -252,7 +252,6 @@ def getTextInBraille(t=None, table=None):
if not t: t = getTextSelection()
if not t.strip(): return ''
if not table or table == "current": table = [os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])]
- else: table = [os.path.join(brailleTables.TABLES_DIR, table)]
nt = []
res = ''
t = t.split("\n")
From 750a42fb0a3c004018383cd6b9693a26d464eae5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 19 Mar 2020 10:30:02 +0100
Subject: [PATCH 39/87] Fixes
---
.../globalPlugins/brailleExtender/addonDoc.py | 29 ++++++++-----------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index 5b233862..6a82d46e 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -77,12 +77,13 @@ def getFeaturesDoc():
"",
"If you want to enter a character from its HUC8 representation, simply enter the HUC8 pattern. Since a HUC8 sequence must fit on 3 cells, the interpretation will be performed each time 3 dot combinations are entered. If you wish to enter a character from its hexadecimal, decimal, octal or binary value, do the following:",
"
",
- "First specify the basis as follows:",
- f"- ⠭ or ⠓{punctuationSeparator}:" + _("for a hexadecimal value") + "
",
- f"⠙{punctuationSeparator}: " + _("for a decimal value") + "",
- f"⠕{punctuationSeparator}: " + _("for an octal value") + "",
- f"⠃{punctuationSeparator}: " + ("for a binary value") + "",
- "
",
+ "- " + _("Specify the basis as follows") + f"{punctuationSeparator}:",
+ "
- ",
+ _("⠭ or ⠓") + f"{punctuationSeparator}: " + _("for a hexadecimal value") + "
",
+ f"- ⠙{punctuationSeparator}: " + _("for a decimal value") + "
",
+ f"- ⠕{punctuationSeparator}: " + _("for an octal value") + "
",
+ f"- ⠃{punctuationSeparator}: " + ("for a binary value") + "
",
+ "
",
"- " + _("Enter the value of the character according to the previously selected basis.") + "
",
"- " + _("Press Space to validate.") + "
",
"
",
@@ -104,7 +105,7 @@ def getFeaturesDoc():
_("With this method, type the left side dots, then the right side dots. If one side is empty, type the dots correspondig to the opposite side twice, or type the dots corresponding to the non-empty side in 2 steps."),
"
", _("For example:"),
"",
- "- " + _("For ⠛: press Dots 1-2 then dots 4-5.") + "
",
+ "- " + _("For ⠛: press dots 1-2 then dots 4-5.") + "
",
"- " + _("For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2.") + "
",
"- " + _("For ⠘: press 4-5 then 4-5, or dot 4 then dot 5.") + "
",
"
",
@@ -127,7 +128,7 @@ def getFeaturesDoc():
"- " + _("Dot 1, then dots 2-4-5, then space.") + "
",
"- " + _("Dots 1-2-4, then dot 5, then space.") + "
",
"- " + _("Dot 2, then dot 1, then dot 5, then dot 4, and then space.") + "
",
- "- " + _("Etcc.") + "
",
+ "- " + _("Etc.") + "
",
"
"
]
}
@@ -280,15 +281,9 @@ def __init__(self, instanceGP):
translators = {
_("Arabic"): "Ikrami Ahmad",
_("Croatian"): "Zvonimir Stanečić ",
- _(
- "French"
- ): "Sof , André-Abush Clause ",
- _(
- "German"
- ): "Adriani Botez , Karl Eick, Jürgen Schwingshandl ",
- _(
- "Hebrew"
- ): "Shmuel Naaman , Afik Sofer, David Rechtman, Pavel Kaplan",
+ _("French"): "Sof , André-Abush Clause ",
+ _("German"): "Adriani Botez , Karl Eick, Jürgen Schwingshandl ",
+ _("Hebrew"): "Shmuel Naaman , Afik Sofer, David Rechtman, Pavel Kaplan",
_("Persian"): "Mohammadreza Rashad ",
_("Polish"): "Zvonimir Stanečić, Dorota Krać",
_("Russian"): "Zvonimir Stanečić, Pavel Kaplan ",
From 6568bb1a22c7dc755b48725f6ebe6ebf44e7d5c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 20 Mar 2020 15:18:40 +0100
Subject: [PATCH 40/87] fixup: bug fix with undefined chars description
---
addon/globalPlugins/brailleExtender/patchs.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index bae08572..92e28109 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -208,7 +208,7 @@ def undefinedCharProcess(self):
start=start,
end=end,
),
- table=config.conf["brailleExtender"]["undefinedCharBrailleTable"]
+ table=[config.conf["brailleExtender"]["undefinedCharBrailleTable"]]
) for braillePos in allBraillePos}
elif config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_HUC6, configBE.CHOICE_HUC8]:
HUC6 = config.conf["brailleExtender"]["undefinedCharReprMethod"] == configBE.CHOICE_HUC6
From 8b391204803693931ad5bd497c79d1a9cb8ee242 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 21 Mar 2020 22:51:22 +0100
Subject: [PATCH 41/87] Fixes #51
---
addon/globalPlugins/brailleExtender/utils.py | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index f07e192c..19e88de1 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -248,10 +248,14 @@ def getKeysTranslation(n):
return o
return nk + n
-def getTextInBraille(t=None, table=None):
+def getTextInBraille(t=None, table=[]):
+ if not isinstance(table, list): raise TypeError("Wrong type for table parameter: %s" % repr(table))
if not t: t = getTextSelection()
if not t.strip(): return ''
- if not table or table == "current": table = [os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])]
+ if not table or "current" in table:
+ currentTable = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
+ if "current" in table: table[table.index("current")] = currentTable
+ else: table.append(currentTable)
nt = []
res = ''
t = t.split("\n")
From 004f83c4b2ce38754506c87473e960f518c91b39 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 4 Apr 2020 13:28:09 +0200
Subject: [PATCH 42/87] Advanced input mode: possibility to quit the mode after
typing one char
---
addon/globalPlugins/brailleExtender/configBE.py | 1 +
addon/globalPlugins/brailleExtender/patchs.py | 8 +++++---
addon/globalPlugins/brailleExtender/settings.py | 17 ++++++++++++++++-
3 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 02a681b1..4b6a7249 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -167,6 +167,7 @@ def getConfspec():
"undefinedCharEnd": "string(default=])",
"undefinedCharLang": "string(default=Windows)",
"undefinedCharBrailleTable": "string(default=current)",
+ "exitAdvancedInputModeAfterOneChar": "boolean(default=False)",
"postTable": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 92e28109..035894d9 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -434,18 +434,18 @@ def input_(self, dots):
pos = self.untranslatedStart + self.untranslatedCursorPos
advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
if advancedInputStr:
+ res = ''
if advancedInputStr[0] in "⠃⠙⠓⠕⠭⡃⡙⡓⡕⡭":
equiv = {'⠃': 'b', '⠙': 'd', '⠓': 'h', '⠕': 'o', '⠭': 'x', '⡃': 'B', '⡙': 'D', '⡓': 'H', '⡕': 'O', '⡭': 'X'}
if advancedInputStr[-1] == '⠀':
text = equiv[advancedInputStr[0]]+louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr[1:-1])[0]
try:
- char = getCharFromValue(text)
- sendChar(char)
+ res = getCharFromValue(text)
+ sendChar(res)
except BaseException as err:
speech.speakMessage(repr(err))
badInput(self)
else: self._reportUntranslated(pos)
- return
else:
res = huc.isValidHUCInput(advancedInputStr)
if res == huc.HUC_INPUT_INCOMPLETE: return self._reportUntranslated(pos)
@@ -453,6 +453,8 @@ def input_(self, dots):
else:
res = huc.backTranslate(advancedInputStr)
sendChar(res)
+ if res and config.conf["brailleExtender"]["exitAdvancedInputModeAfterOneChar"]:
+ instanceGP.advancedInput = False
return
# For uncontracted braille, translate the buffer for each cell added.
# Any new characters produced are then sent immediately.
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index ecdd0242..8c0f5d7d 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -407,7 +407,6 @@ def onSave(self):
repr_ = re.sub('\-+','-', repr_)
config.conf["brailleExtender"]["undefinedCharRepr"] = repr_
instanceGP.reloadBrailleTables()
- super(BrailleTablesDlg, self).onOk(evt)
if restartRequired:
res = gui.messageBox(
_("NVDA must be restarted for some new options to take effect. Do you want restart now?"),
@@ -511,6 +510,21 @@ def onTables(self, evt):
utils.refreshBD()
else: evt.Skip()
+class AdvancedDlg(gui.settingsDialogs.SettingsPanel):
+
+ # Translators: title of a dialog.
+ title = _("Advanced")
+
+ def makeSettings(self, settingsSizer):
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+
+ # Translators: label of a dialog.
+ self.exitAdvancedInputModeAfterOneChar = sHelper.addItem(wx.CheckBox(self, label=_("E&xit the advanced input mode after typing one character")))
+ self.exitAdvancedInputModeAfterOneChar.SetValue(config.conf["brailleExtender"]["exitAdvancedInputModeAfterOneChar"])
+
+ def onSave(self):
+ config.conf["brailleExtender"]["exitAdvancedInputModeAfterOneChar"] = self.exitAdvancedInputModeAfterOneChar.IsChecked()
+
class UndefinedCharsDlg(gui.settingsDialogs.SettingsDialog):
@@ -975,6 +989,7 @@ class AddonSettingsDialog(gui.settingsDialogs.MultiCategorySettingsDialog):
AttribraDlg,
BrailleTablesDlg,
RoleLabelsDlg,
+ AdvancedDlg
]
def __init__(self, parent, initialCategory=None):
From 731de0f0d8b97283d75aa4bf0ce9da0897f9dfa0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 4 Apr 2020 13:41:45 +0200
Subject: [PATCH 43/87] Mention english translator
---
addon/globalPlugins/brailleExtender/addonDoc.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index 38d0aa17..a9d5241f 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -282,7 +282,7 @@ def __init__(self, instanceGP):
_("Arabic"): "Ikrami Ahmad",
_("Croatian"): "Zvonimir Stanečić ",
_("Danish"): "Daniel Gartmann ",
- _("French"): "Sof , André-Abush Clause ",
+ _("English and french"): "Sof , André-Abush Clause ",
_("German"): "Adriani Botez , Karl Eick, Jürgen Schwingshandl ",
_("Hebrew"): "Shmuel Naaman , Afik Sofer, David Rechtman, Pavel Kaplan",
_("Persian"): "Mohammadreza Rashad ",
From 985451c5f6055861acb92aa6ee961e43eec771f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 4 Apr 2020 13:49:52 +0200
Subject: [PATCH 44/87] fixup
---
addon/globalPlugins/brailleExtender/addonDoc.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index a9d5241f..99a3ac23 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -282,7 +282,7 @@ def __init__(self, instanceGP):
_("Arabic"): "Ikrami Ahmad",
_("Croatian"): "Zvonimir Stanečić ",
_("Danish"): "Daniel Gartmann ",
- _("English and french"): "Sof , André-Abush Clause ",
+ _("English and French"): "Sof , André-Abush Clause ",
_("German"): "Adriani Botez , Karl Eick, Jürgen Schwingshandl ",
_("Hebrew"): "Shmuel Naaman , Afik Sofer, David Rechtman, Pavel Kaplan",
_("Persian"): "Mohammadreza Rashad ",
From 16f749dcbfb96326cfdc706ab21bb54778b5e21d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 4 Apr 2020 14:15:04 +0200
Subject: [PATCH 45/87] Translators section: Sorts languages in alphabetical
order
---
addon/globalPlugins/brailleExtender/addonDoc.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index 99a3ac23..912c3bfe 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -305,7 +305,7 @@ def __init__(self, instanceGP):
)
)
)
- for language, authors in translators.items():
+ for language, authors in sorted(translators.items()):
doc += f"{language}{punctuationSeparator}: {escape(authors)}"
doc += "".join(
[
From 0110866f141d95593aa444d286f5415b61226eba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 5 Apr 2020 02:03:30 +0200
Subject: [PATCH 46/87] Implements advanced input mode dictionary
---
.../globalPlugins/brailleExtender/__init__.py | 14 +-
.../brailleExtender/advancedInputMode.py | 211 ++++++++++++++++++
.../globalPlugins/brailleExtender/configBE.py | 6 +-
addon/globalPlugins/brailleExtender/huc.py | 6 +-
addon/globalPlugins/brailleExtender/patchs.py | 23 +-
.../globalPlugins/brailleExtender/settings.py | 12 +-
6 files changed, 256 insertions(+), 16 deletions(-)
create mode 100644 addon/globalPlugins/brailleExtender/advancedInputMode.py
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 8a55c54f..69565d46 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -50,6 +50,7 @@
config.conf.spec["brailleExtender"] = configBE.getConfspec()
from . import utils
from .updateCheck import *
+from . import advancedInputMode
from . import dictionaries
from . import huc
from . import patchs
@@ -180,6 +181,7 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
switchedMode = False
def __init__(self):
+ startTime = time.time()
super(globalPluginHandler.GlobalPlugin, self).__init__()
patchs.instanceGP = self
self.reloadBrailleTables()
@@ -205,7 +207,8 @@ def __init__(self):
braille.TextInfoRegion._getTypeformFromFormatField = decorator(braille.TextInfoRegion._getTypeformFromFormatField, "_getTypeformFromFormatField")
if config.conf["brailleExtender"]["reverseScrollBtns"]: self.reverseScrollBtns()
self.createMenu()
- log.info("%s %s loaded" % (addonName, addonVersion))
+ advancedInputMode.initialize()
+ log.info(f"{addonName} {addonVersion} loaded ({round(time.time()-startTime, 2)}s)")
def event_gainFocus(self, obj, nextHandler):
global rotorItem, lastRotorItemInVD, lastRotorItemInVDSaved
@@ -264,7 +267,7 @@ def createMenu(self):
item
)
dictionariesMenu = wx.Menu()
- self.submenu.AppendSubMenu(dictionariesMenu, _("Braille &dictionaries"), _("'Braille dictionaries' menu"))
+ self.submenu.AppendSubMenu(dictionariesMenu, _("Table &dictionaries"), _("'Braille dictionaries' menu"))
item = dictionariesMenu.Append(wx.ID_ANY, _("&Global dictionary"), _("A dialog where you can set global dictionary by adding dictionary entries to the list."))
gui.mainFrame.sysTrayIcon.Bind(wx.EVT_MENU, self.onDefaultDictionary, item)
item = dictionariesMenu.Append(wx.ID_ANY, _("&Table dictionary"), _("A dialog where you can set table-specific dictionary by adding dictionary entries to the list."))
@@ -272,6 +275,12 @@ def createMenu(self):
item = dictionariesMenu.Append(wx.ID_ANY, _("Te&mporary dictionary"), _("A dialog where you can set temporary dictionary by adding dictionary entries to the list."))
gui.mainFrame.sysTrayIcon.Bind(wx.EVT_MENU, self.onTemporaryDictionary, item)
+ item = self.submenu.Append(wx.ID_ANY, "%s..." % _("Advanced &input mode dictionary"), _("Advanced input mode configuration"))
+ gui.mainFrame.sysTrayIcon.Bind(
+ wx.EVT_MENU,
+ lambda event: gui.mainFrame._popupSettingsDialog(advancedInputMode.AdvancedInputModeDlg),
+ item
+ )
item = self.submenu.Append(wx.ID_ANY, "%s..." % _("&Quick launches"), _("Quick launches configuration"))
gui.mainFrame.sysTrayIcon.Bind(
wx.EVT_MENU,
@@ -1317,6 +1326,7 @@ def terminate(self):
config.conf["braille"]["showCursor"] = self.backupShowCursor
if self.autoTestPlayed: self.autoTestTimer.Stop()
dictionaries.removeTmpDict()
+ advancedInputMode.terminate()
super(GlobalPlugin, self).terminate()
def removeMenu(self):
diff --git a/addon/globalPlugins/brailleExtender/advancedInputMode.py b/addon/globalPlugins/brailleExtender/advancedInputMode.py
new file mode 100644
index 00000000..4c257068
--- /dev/null
+++ b/addon/globalPlugins/brailleExtender/advancedInputMode.py
@@ -0,0 +1,211 @@
+# coding: utf-8
+# advancedInputMode.py
+# Part of BrailleExtender addon for NVDA
+# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
+from collections import namedtuple
+import codecs
+import json
+import gui
+import wx
+
+import addonHandler
+addonHandler.initTranslation()
+import brailleInput
+import brailleTables
+from .common import *
+from .utils import getTextInBraille
+
+AdvancedInputModeDictEntry = namedtuple("AdvancedInputModeDictEntry", ("abreviation", "replaceBy", "table"))
+
+entries = None
+
+def getPathDict():
+ return f"{configDir}/brailleDicts/advancedInputMode.json"
+
+def getDictionary():
+ return entries if entries else []
+
+def initialize():
+ global entries
+ entries = []
+ fp = getPathDict()
+ if not os.path.exists(fp): return
+ json_ = json.load(codecs.open(fp, 'r', "UTF-8"))
+ for entry in json_:
+ entries.append(AdvancedInputModeDictEntry(entry["abreviation"], entry["replaceBy"], entry["table"]))
+
+
+def terminate(save=False):
+ global entries
+ if save: saveDict()
+ entries = None
+
+def setDict(newDict):
+ global entries
+ entries = newDict
+
+def saveDict(entries=None):
+ if not entries: entries = getDictionary()
+ entries = [{"abreviation": entry.abreviation, "replaceBy": entry.replaceBy, "table": entry.table} for entry in entries]
+ with codecs.open(getPathDict(), 'w', "UTF-8") as outfile:
+ json.dump(entries, outfile, ensure_ascii=False, indent=2)
+
+def getReplacements(abreviations, strict=False):
+ if isinstance(abreviations, str): abreviations = [abreviations]
+ currentInputTable = brailleInput.handler.table.fileName
+ out = []
+ for abreviation in abreviations:
+ if abreviation.endswith('⠀'):
+ strict = True
+ abreviation = abreviation[:-1]
+ if not strict:
+ out += [entry for entry in getDictionary() if entry.abreviation.startswith(abreviation) and entry.table in [currentInputTable, '*']]
+ else:
+ out += [entry for entry in getDictionary() if entry.abreviation == abreviation and entry.table in [currentInputTable, '*']]
+ return out
+
+def translateTable(tableFilename):
+ if tableFilename == '*': return _("all tables")
+ else:
+ for table in brailleTables.listTables():
+ if table.fileName == tableFilename: return table.displayName
+ return tableFilename
+
+class AdvancedInputModeDlg(gui.settingsDialogs.SettingsDialog):
+ # Translators: title of a dialog.
+ title = _("Advanced input mode dictionary")
+
+ def makeSettings(self, settingsSizer):
+ self.tmpDict = getDictionary()
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ # Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
+ entriesLabelText = _("Dictionary &entries")
+ self.dictList = sHelper.addLabeledControl(entriesLabelText, wx.ListCtrl, style=wx.LC_REPORT | wx.LC_SINGLE_SEL,
+ size=(550, 350))
+ # Translators: The label for a column in dictionary entries list used to identify comments for the entry.
+ self.dictList.InsertColumn(0, _("Abbreviation"), width=150)
+ self.dictList.InsertColumn(1, _("Replace by"), width=150)
+ self.dictList.InsertColumn(2, _("Input table"), width=150)
+ self.onSetEntries()
+ bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
+ label=_("&Add")
+ ).Bind(wx.EVT_BUTTON, self.onAddClick)
+
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
+ label=_("&Edit")
+ ).Bind(wx.EVT_BUTTON, self.onEditClick)
+
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
+ label=_("Re&move")
+ ).Bind(wx.EVT_BUTTON, self.onRemoveClick)
+
+ sHelper.addItem(bHelper)
+ bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
+ label=_("&Open the dictionary file in an editor")
+ ).Bind(wx.EVT_BUTTON, self.onOpenFileClick)
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
+ label=_("&Reload the dictionary")
+ ).Bind(wx.EVT_BUTTON, self.onReloadDictClick)
+ sHelper.addItem(bHelper)
+
+ def onSetEntries(self):
+ self.dictList.DeleteAllItems()
+ for entry in self.tmpDict:
+ self.dictList.Append((entry.abreviation, entry.replaceBy, translateTable(entry.table)))
+ self.dictList.SetFocus()
+
+ def onAddClick(self, event):
+ entryDialog = DictionaryEntryDlg(self,title=_("Add Dictionary Entry"))
+ if entryDialog.ShowModal() == wx.ID_OK:
+ entry = entryDialog.dictEntry
+ self.tmpDict.append(entry)
+ self.dictList.Append((entry.abreviation, entry.replaceBy, translateTable(entry.table)))
+ index = self.dictList.GetFirstSelected()
+ while index >= 0:
+ self.dictList.Select(index,on=0)
+ index=self.dictList.GetNextSelected(index)
+ addedIndex = self.dictList.GetItemCount()-1
+ self.dictList.Select(addedIndex)
+ self.dictList.Focus(addedIndex)
+ self.dictList.SetFocus()
+ entryDialog.Destroy()
+
+ def onEditClick(self, event):
+ if self.dictList.GetSelectedItemCount() != 1: return
+ editIndex = self.dictList.GetFirstSelected()
+ entryDialog = DictionaryEntryDlg(self)
+ entryDialog.abreviationTextCtrl.SetValue(self.tmpDict[editIndex].abreviation)
+ entryDialog.replaceByTextCtrl.SetValue(self.tmpDict[editIndex].replaceBy)
+ if entryDialog.ShowModal() == wx.ID_OK:
+ entry = entryDialog.dictEntry
+ self.tmpDict[editIndex] = entry
+ self.dictList.SetItem(editIndex, 0, entry.abreviation)
+ self.dictList.SetItem(editIndex, 1, entry.replaceBy)
+ self.dictList.SetItem(editIndex, 2, translateTable(entry.table))
+ self.dictList.SetFocus()
+ entryDialog.Destroy()
+
+ def onRemoveClick(self, event):
+ index = self.dictList.GetFirstSelected()
+ while index>=0:
+ self.dictList.DeleteItem(index)
+ del self.tmpDict[index]
+ index = self.dictList.GetNextSelected(index)
+ self.dictList.SetFocus()
+
+ def onOpenFileClick(self, event):
+ dictPath = getPathDict()
+ if not os.path.exists(dictPath): return ui.message(_("File doesn't exist yet"))
+ try: os.startfile(dictPath)
+ except OSError: os.popen("notepad \"%s\"" % dictPath)
+
+ def onReloadDictClick(self, event):
+ self.tmpDict = getDictionary()
+ self.onSetEntries()
+
+ def postInit(self): self.dictList.SetFocus()
+
+ def onOk(self, evt):
+ saveDict(self.tmpDict)
+ setDict(self.tmpDict)
+ super(AdvancedInputModeDlg, self).onOk(evt)
+
+class DictionaryEntryDlg(wx.Dialog):
+ # Translators: This is the label for the edit dictionary entry dialog.
+ def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
+ super(DictionaryEntryDlg, self).__init__(parent, title=title)
+ mainSizer=wx.BoxSizer(wx.VERTICAL)
+ sHelper = gui.guiHelper.BoxSizerHelper(self, orientation=wx.VERTICAL)
+ # Translators: This is a label for an edit field in add dictionary entry dialog.
+ abreviationLabelText = _("&Abreviation")
+ self.abreviationTextCtrl = sHelper.addLabeledControl(abreviationLabelText, wx.TextCtrl)
+ # Translators: This is a label for an edit field in add dictionary entry dialog.
+ replaceByLabelText = _("&Replace by")
+ self.replaceByTextCtrl = sHelper.addLabeledControl(replaceByLabelText, wx.TextCtrl)
+
+ sHelper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK|wx.CANCEL))
+
+ mainSizer.Add(sHelper.sizer,border=20,flag=wx.ALL)
+ mainSizer.Fit(self)
+ self.SetSizer(mainSizer)
+ self.abreviationTextCtrl.SetFocus()
+ self.Bind(wx.EVT_BUTTON,self.onOk,id=wx.ID_OK)
+
+ def onOk(self, evt):
+ abreviation = getTextInBraille(self.abreviationTextCtrl.GetValue())
+ replaceBy = self.replaceByTextCtrl.GetValue()
+ newEntry = AdvancedInputModeDictEntry(abreviation, replaceBy, '*')
+ self.dictEntry = newEntry
+ evt.Skip()
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 4b6a7249..0da6ca78 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -167,7 +167,6 @@ def getConfspec():
"undefinedCharEnd": "string(default=])",
"undefinedCharLang": "string(default=Windows)",
"undefinedCharBrailleTable": "string(default=current)",
- "exitAdvancedInputModeAfterOneChar": "boolean(default=False)",
"postTable": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
@@ -222,6 +221,11 @@ def getConfspec():
"quickLaunches": {},
"roleLabels": {},
"brailleTables": {},
+ "advancedInputMode": {
+ "stopAfterOneChar": "boolean(default=True)",
+ "startSign": "string(default=⠼)",
+ }
+
}
def loadPreferedTables():
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
index aa0ae374..a6f1cd31 100644
--- a/addon/globalPlugins/brailleExtender/huc.py
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -208,7 +208,11 @@ def splitInTwoCells(dotPattern):
return [c1, c2]
def isValidHUCInput(s):
- if not s or len(s) < 2: return HUC_INPUT_INCOMPLETE
+ if not s: return HUC_INPUT_INCOMPLETE
+ if len(s) == 1:
+ matchePatterns = [e for e in HUC8_patterns.keys() if e.startswith(s)]
+ if matchePatterns: return HUC_INPUT_INCOMPLETE
+ else: return HUC_INPUT_INVALID
prefix = s[0:2] if len(s) == 4 else s[0]
s = s[2:] if len(s) == 4 else s[1:]
size = len(s)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 035894d9..0d7e629f 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -39,6 +39,7 @@
from logHandler import log
import addonHandler
addonHandler.initTranslation()
+from . import advancedInputMode
from . import dictionaries
from . import huc
from .utils import getCurrentChar, getTether, getTextInBraille, getCharFromValue
@@ -435,25 +436,33 @@ def input_(self, dots):
advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
if advancedInputStr:
res = ''
- if advancedInputStr[0] in "⠃⠙⠓⠕⠭⡃⡙⡓⡕⡭":
+ abreviations = advancedInputMode.getReplacements([advancedInputStr])
+ startUnicodeValue = "⠃⠙⠓⠕⠭⡃⡙⡓⡕⡭"
+ if not abreviations and advancedInputStr[0] in startUnicodeValue: advancedInputStr = config.conf["brailleExtender"]["advancedInputMode"]["startSign"] + advancedInputStr
+ if advancedInputStr == config.conf["brailleExtender"]["advancedInputMode"]["startSign"] or (advancedInputStr.startswith(config.conf["brailleExtender"]["advancedInputMode"]["startSign"]) and len(advancedInputStr) > 1 and advancedInputStr[1] in startUnicodeValue):
equiv = {'⠃': 'b', '⠙': 'd', '⠓': 'h', '⠕': 'o', '⠭': 'x', '⡃': 'B', '⡙': 'D', '⡓': 'H', '⡕': 'O', '⡭': 'X'}
if advancedInputStr[-1] == '⠀':
- text = equiv[advancedInputStr[0]]+louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr[1:-1])[0]
+ text = equiv[advancedInputStr[1]] + louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr[2:-1])[0]
try:
res = getCharFromValue(text)
sendChar(res)
except BaseException as err:
speech.speakMessage(repr(err))
- badInput(self)
+ return badInput(self)
else: self._reportUntranslated(pos)
+ elif abreviations:
+ if len(abreviations) == 1:
+ res = abreviations[0].replaceBy
+ sendChar(res)
+ else: return self._reportUntranslated(pos)
else:
res = huc.isValidHUCInput(advancedInputStr)
if res == huc.HUC_INPUT_INCOMPLETE: return self._reportUntranslated(pos)
- elif res == huc.HUC_INPUT_INVALID: badInput(self)
+ elif res == huc.HUC_INPUT_INVALID: return badInput(self)
else:
res = huc.backTranslate(advancedInputStr)
sendChar(res)
- if res and config.conf["brailleExtender"]["exitAdvancedInputModeAfterOneChar"]:
+ if res and config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"]:
instanceGP.advancedInput = False
return
# For uncontracted braille, translate the buffer for each cell added.
@@ -482,7 +491,9 @@ def input_(self, dots):
def sendChar(char):
nvwave.playWaveFile(os.path.join(configBE.baseDir, "res/sounds/keyPress.wav"))
core.callLater(0, brailleInput.handler.sendChars, char)
- core.callLater(100, speech.speakSpelling, char)
+ if len(char) == 1:
+ core.callLater(100, speech.speakSpelling, char)
+ else: core.callLater(100, speech.speakMessage, char)
def badInput(self):
nvwave.playWaveFile("waves/textError.wav")
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 8c0f5d7d..bff48938 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -510,20 +510,20 @@ def onTables(self, evt):
utils.refreshBD()
else: evt.Skip()
-class AdvancedDlg(gui.settingsDialogs.SettingsPanel):
+class AdvancedInputModeDlg(gui.settingsDialogs.SettingsPanel):
# Translators: title of a dialog.
- title = _("Advanced")
+ title = _("Advanced input mode")
def makeSettings(self, settingsSizer):
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
# Translators: label of a dialog.
- self.exitAdvancedInputModeAfterOneChar = sHelper.addItem(wx.CheckBox(self, label=_("E&xit the advanced input mode after typing one character")))
- self.exitAdvancedInputModeAfterOneChar.SetValue(config.conf["brailleExtender"]["exitAdvancedInputModeAfterOneChar"])
+ self.stopAdvancedInputModeAfterOneChar = sHelper.addItem(wx.CheckBox(self, label=_("E&xit the advanced input mode after typing one pattern")))
+ self.stopAdvancedInputModeAfterOneChar.SetValue(config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"])
def onSave(self):
- config.conf["brailleExtender"]["exitAdvancedInputModeAfterOneChar"] = self.exitAdvancedInputModeAfterOneChar.IsChecked()
+ config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
class UndefinedCharsDlg(gui.settingsDialogs.SettingsDialog):
@@ -989,7 +989,7 @@ class AddonSettingsDialog(gui.settingsDialogs.MultiCategorySettingsDialog):
AttribraDlg,
BrailleTablesDlg,
RoleLabelsDlg,
- AdvancedDlg
+ AdvancedInputModeDlg
]
def __init__(self, parent, initialCategory=None):
From 2773090d8d790d162fcff9b0b6e3145fc47639da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 5 Apr 2020 02:12:07 +0200
Subject: [PATCH 47/87] Small update for advanced input mode
---
addon/globalPlugins/brailleExtender/addonDoc.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index 912c3bfe..ce44bab5 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -11,6 +11,7 @@
import braille
from . import configBE
from collections import OrderedDict
+import config
import cursorManager
import globalCommands
import ui
@@ -42,6 +43,8 @@ def getFeaturesDoc():
ch = undefinedCharsSamples[i][0][0]
undefinedCharsSamples[i][0] = "%s (%s)" % (ch, utils.getSpeechSymbols(ch))
+ braillePattern = config.conf["brailleExtender"]["advancedInputMode"]["startSign"]
+
features = {
_("Representation of undefined characters"): [
"",
@@ -77,6 +80,7 @@ def getFeaturesDoc():
"
",
"If you want to enter a character from its HUC8 representation, simply enter the HUC8 pattern. Since a HUC8 sequence must fit on 3 cells, the interpretation will be performed each time 3 dot combinations are entered. If you wish to enter a character from its hexadecimal, decimal, octal or binary value, do the following:",
"
",
+ "- " + _(f"Enter {braillePattern}") + "
",
"- " + _("Specify the basis as follows") + f"{punctuationSeparator}:",
"
- ",
_("⠭ or ⠓") + f"{punctuationSeparator}: " + _("for a hexadecimal value") + "
",
From 8e616a59ce8a7e30a47f1cc93b5839fcc83ba543 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 7 Apr 2020 12:30:14 +0200
Subject: [PATCH 48/87] Undefined characters: emoji on several characters are
now also described
---
addon/globalPlugins/brailleExtender/patchs.py | 25 +++++++++++++++----
addon/globalPlugins/brailleExtender/utils.py | 9 ++++++-
2 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 0d7e629f..94d4c975 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -42,7 +42,7 @@
from . import advancedInputMode
from . import dictionaries
from . import huc
-from .utils import getCurrentChar, getTether, getTextInBraille, getCharFromValue
+from .utils import getCurrentChar, getTether, getTextInBraille, getCharFromValue, getExtendedSymbols
from .common import *
import louisHelper
@@ -163,16 +163,18 @@ def setUndefinedChar(t=None):
v = huc.unicodeBrailleToDescription(getTextInBraille(s, getCurrentBrailleTables()))
louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+def getExtendedSymbolsForString(s):
+ return {c: (d, [(m.start(), m.end()) for m in re.finditer(c, s)]) for c, d in extendedSymbols.items() if c in s}
def getDescChar(c, lang="Windows", start='', end=''):
if lang == "Windows": lang = languageHandler.getLanguage()
- desc = characterProcessing.processSpeechSymbols(lang, c, characterProcessing.SYMLVL_CHAR).strip()
+ desc = characterProcessing.processSpeechSymbols(lang, c, characterProcessing.SYMLVL_CHAR).strip().replace(" ", ' ')
if not desc or desc == c:
if config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_HUC6, configBE.CHOICE_HUC8]:
HUC6 = config.conf["brailleExtender"]["undefinedCharReprMethod"] == configBE.CHOICE_HUC6
return huc.translate(c, HUC6=HUC6)
else: return getTextInBraille(''.join(getNotationOrd(c)))
- return start + desc + end
+ return f"{start}{desc}{end}"
def getLiblouisStyle(c):
if c < 0x10000: return r"\x%.4x" % c
@@ -193,8 +195,12 @@ def getNotationOrd(s, notation=None):
return s
def undefinedCharProcess(self):
+ extendedSymbolsRawText = getExtendedSymbolsForString(self.rawText)
unicodeBrailleRepr = ''.join([chr(10240 + cell) for cell in self.brailleCells])
allBraillePos = [m.start() for m in re.finditer(undefinedCharPattern, unicodeBrailleRepr)]
+ allExtendedPos = {}
+ for c, v in extendedSymbolsRawText.items():
+ for start, end in v[1]: allExtendedPos[start] = end
if not allBraillePos: return
if config.conf["brailleExtender"]["undefinedCharDesc"]:
start = config.conf["brailleExtender"]["undefinedCharStart"]
@@ -203,11 +209,18 @@ def undefinedCharProcess(self):
if end: end = getTextInBraille(end)
replacements = {braillePos:
getTextInBraille(
- getDescChar(
+ (
+ getDescChar(
+ self.rawText[self.brailleToRawPos[braillePos]:allExtendedPos[self.brailleToRawPos[braillePos]]],
+ lang=config.conf["brailleExtender"]["undefinedCharLang"],
+ start=start,
+ end=f":{allExtendedPos[self.brailleToRawPos[braillePos]] - self.brailleToRawPos[braillePos]}{end}" + getDescChar(self.rawText[self.brailleToRawPos[braillePos]], lang=config.conf["brailleExtender"]["undefinedCharLang"], start=start, end=end)
+ )
+ ) if self.brailleToRawPos[braillePos] in allExtendedPos else getDescChar(
self.rawText[self.brailleToRawPos[braillePos]],
lang=config.conf["brailleExtender"]["undefinedCharLang"],
start=start,
- end=end,
+ end=end
),
table=[config.conf["brailleExtender"]["undefinedCharBrailleTable"]]
) for braillePos in allBraillePos}
@@ -245,6 +258,7 @@ def undefinedCharProcess(self):
self.brailleToRawPos = newBrailleToRawPos
self.rawToBraillePos = newRawToBraillePos
if self.cursorPos: self.brailleCursorPos = self.rawToBraillePos[self.cursorPos]
+ # self.brailleCells self.rawText self.rawToBraillePos self.brailleToRawPos
#: braille.TextInfoRegion.nextLine()
def nextLine(self):
@@ -580,3 +594,4 @@ def _createTablesString(tablesList):
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
+extendedSymbols = getExtendedSymbols(config.conf["brailleExtender"]["undefinedCharLang"])
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 19e88de1..d55ac312 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -442,7 +442,7 @@ def getSpeechSymbols(text = None):
if not text: text = getTextSelection()
if not text: return ui.message(_("No text selected"))
locale = languageHandler.getLanguage()
- return characterProcessing.processSpeechSymbols(locale, text, characterProcessing.SYMLVL_MOST).strip()
+ return characterProcessing.processSpeechSymbols(locale, text, characterProcessing.SYMLVL_CHAR).strip()
def getTether():
if hasattr(braille.handler, "getTether"):
@@ -459,3 +459,10 @@ def getCharFromValue(s):
b = supportedBases[base]
n = int(n, b)
return chr(n)
+
+def getExtendedSymbols(locale):
+ if locale == "Windows": locale = languageHandler.getLanguage()
+ b, u = characterProcessing._getSpeechSymbolsForLocale(locale)
+ a = {k: v.replacement.replace(" ", " ") for k, v in b.symbols.items() if len(k) > 1}
+ a.update({k: v.replacement.replace(" ", " ") for k, v in u.symbols.items() if len(k) > 1})
+ return a
From 2fd2e03ca76383d82e56491a065a1ae779260471 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 7 Apr 2020 19:19:39 +0200
Subject: [PATCH 49/87] fixup
---
addon/globalPlugins/brailleExtender/patchs.py | 6 +++++-
addon/globalPlugins/brailleExtender/utils.py | 5 ++++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 94d4c975..e4fa1cd4 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -594,4 +594,8 @@ def _createTablesString(tablesList):
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
-extendedSymbols = getExtendedSymbols(config.conf["brailleExtender"]["undefinedCharLang"])
+try:
+ extendedSymbols = getExtendedSymbols(config.conf["brailleExtender"]["undefinedCharLang"])
+except BaseException as err:
+ extendedSymbols = {}
+ log.error(f"Unable to load extended symbols for %s: %s" % (config.conf["brailleExtender"]["undefinedCharLang"], err))
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index d55ac312..b11f14f3 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -462,7 +462,10 @@ def getCharFromValue(s):
def getExtendedSymbols(locale):
if locale == "Windows": locale = languageHandler.getLanguage()
- b, u = characterProcessing._getSpeechSymbolsForLocale(locale)
+ try:
+ b, u = characterProcessing._getSpeechSymbolsForLocale(locale)
+ except LookupError:
+ b, u = characterProcessing._getSpeechSymbolsForLocale(locale.split('_')[0])
a = {k: v.replacement.replace(" ", " ") for k, v in b.symbols.items() if len(k) > 1}
a.update({k: v.replacement.replace(" ", " ") for k, v in u.symbols.items() if len(k) > 1})
return a
From 5c78fbaa3b3744e673362adb084819d582e7176f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Wed, 8 Apr 2020 23:04:51 +0200
Subject: [PATCH 50/87] Refactoring code + small fixes
---
.../globalPlugins/brailleExtender/__init__.py | 10 +-
.../brailleExtender/advancedInputMode.py | 171 +++++--
.../globalPlugins/brailleExtender/configBE.py | 27 +-
addon/globalPlugins/brailleExtender/patchs.py | 158 +------
.../globalPlugins/brailleExtender/settings.py | 106 +----
.../brailleExtender/undefinedChars.py | 428 ++++++++++++++++++
addon/globalPlugins/brailleExtender/utils.py | 30 +-
7 files changed, 620 insertions(+), 310 deletions(-)
create mode 100644 addon/globalPlugins/brailleExtender/undefinedChars.py
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 69565d46..3b11c5c7 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -20,8 +20,6 @@
import gui
import wx
-from . import settings
-
import addonHandler
addonHandler.initTranslation()
import api
@@ -54,7 +52,9 @@
from . import dictionaries
from . import huc
from . import patchs
+from . import settings
from .common import *
+from . import undefinedChars
instanceGP = None
lang = configBE.lang
@@ -312,7 +312,7 @@ def reloadBrailleTables(self):
if isPy3:
patchs.louis.compileString(patchs.getCurrentBrailleTables(), bytes(liblouisDef, "ASCII"))
else: patchs.louis.compileString(patchs.getCurrentBrailleTables(), bytes(liblouisDef))
- patchs.setUndefinedChar()
+ undefinedChars.setUndefinedChar()
@staticmethod
def onDefaultDictionary(evt):
@@ -658,9 +658,9 @@ def script_advancedInput(self, gesture):
script_advancedInput.__doc__ = _("Enable/disable the advanced input mode")
def script_undefinedCharsDesc(self, gesture):
- config.conf["brailleExtender"]["undefinedCharDesc"] = not config.conf["brailleExtender"]["undefinedCharDesc"]
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["desc"] = not config.conf["brailleExtender"]["undefinedCharsRepr"]["desc"]
states = [_("disabled"), _("enabled")]
- speech.speakMessage(_("Description of undefined characters %s") % states[int(config.conf["brailleExtender"]["undefinedCharDesc"])])
+ speech.speakMessage(_("Description of undefined characters %s") % states[int(config.conf["brailleExtender"]["undefinedCharsRepr"]["desc"])])
utils.refreshBD()
script_undefinedCharsDesc.__doc__ = _("Enable/disable description of undefined characters")
diff --git a/addon/globalPlugins/brailleExtender/advancedInputMode.py b/addon/globalPlugins/brailleExtender/advancedInputMode.py
index 4c257068..003edd5c 100644
--- a/addon/globalPlugins/brailleExtender/advancedInputMode.py
+++ b/addon/globalPlugins/brailleExtender/advancedInputMode.py
@@ -9,79 +9,124 @@
import wx
import addonHandler
+
addonHandler.initTranslation()
import brailleInput
import brailleTables
+import config
from .common import *
from .utils import getTextInBraille
-AdvancedInputModeDictEntry = namedtuple("AdvancedInputModeDictEntry", ("abreviation", "replaceBy", "table"))
+AdvancedInputModeDictEntry = namedtuple(
+ "AdvancedInputModeDictEntry", ("abreviation", "replaceBy", "table")
+)
entries = None
+
def getPathDict():
return f"{configDir}/brailleDicts/advancedInputMode.json"
+
def getDictionary():
return entries if entries else []
+
def initialize():
global entries
entries = []
fp = getPathDict()
- if not os.path.exists(fp): return
- json_ = json.load(codecs.open(fp, 'r', "UTF-8"))
+ if not os.path.exists(fp):
+ return
+ json_ = json.load(codecs.open(fp, "r", "UTF-8"))
for entry in json_:
- entries.append(AdvancedInputModeDictEntry(entry["abreviation"], entry["replaceBy"], entry["table"]))
+ entries.append(
+ AdvancedInputModeDictEntry(
+ entry["abreviation"], entry["replaceBy"], entry["table"]
+ )
+ )
def terminate(save=False):
global entries
- if save: saveDict()
+ if save:
+ saveDict()
entries = None
+
def setDict(newDict):
global entries
entries = newDict
+
def saveDict(entries=None):
- if not entries: entries = getDictionary()
- entries = [{"abreviation": entry.abreviation, "replaceBy": entry.replaceBy, "table": entry.table} for entry in entries]
- with codecs.open(getPathDict(), 'w', "UTF-8") as outfile:
+ if not entries:
+ entries = getDictionary()
+ entries = [
+ {
+ "abreviation": entry.abreviation,
+ "replaceBy": entry.replaceBy,
+ "table": entry.table,
+ }
+ for entry in entries
+ ]
+ with codecs.open(getPathDict(), "w", "UTF-8") as outfile:
json.dump(entries, outfile, ensure_ascii=False, indent=2)
+
def getReplacements(abreviations, strict=False):
- if isinstance(abreviations, str): abreviations = [abreviations]
+ if isinstance(abreviations, str):
+ abreviations = [abreviations]
currentInputTable = brailleInput.handler.table.fileName
out = []
for abreviation in abreviations:
- if abreviation.endswith('⠀'):
+ if abreviation.endswith("⠀"):
strict = True
abreviation = abreviation[:-1]
if not strict:
- out += [entry for entry in getDictionary() if entry.abreviation.startswith(abreviation) and entry.table in [currentInputTable, '*']]
+ out += [
+ entry
+ for entry in getDictionary()
+ if entry.abreviation.startswith(abreviation)
+ and entry.table in [currentInputTable, "*"]
+ ]
else:
- out += [entry for entry in getDictionary() if entry.abreviation == abreviation and entry.table in [currentInputTable, '*']]
+ out += [
+ entry
+ for entry in getDictionary()
+ if entry.abreviation == abreviation
+ and entry.table in [currentInputTable, "*"]
+ ]
return out
+
def translateTable(tableFilename):
- if tableFilename == '*': return _("all tables")
+ if tableFilename == "*":
+ return _("all tables")
else:
for table in brailleTables.listTables():
- if table.fileName == tableFilename: return table.displayName
+ if table.fileName == tableFilename:
+ return table.displayName
return tableFilename
+
class AdvancedInputModeDlg(gui.settingsDialogs.SettingsDialog):
+
# Translators: title of a dialog.
title = _("Advanced input mode dictionary")
def makeSettings(self, settingsSizer):
self.tmpDict = getDictionary()
+ self.tmpDict.sort(key=lambda e: e.replaceBy)
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
# Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
entriesLabelText = _("Dictionary &entries")
- self.dictList = sHelper.addLabeledControl(entriesLabelText, wx.ListCtrl, style=wx.LC_REPORT | wx.LC_SINGLE_SEL,
- size=(550, 350))
+ self.dictList = sHelper.addLabeledControl(
+ entriesLabelText,
+ wx.ListCtrl,
+ style=wx.LC_REPORT | wx.LC_SINGLE_SEL,
+ size=(550, 350),
+ )
# Translators: The label for a column in dictionary entries list used to identify comments for the entry.
self.dictList.InsertColumn(0, _("Abbreviation"), width=150)
self.dictList.InsertColumn(1, _("Replace by"), width=150)
@@ -91,19 +136,19 @@ def makeSettings(self, settingsSizer):
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
- label=_("&Add")
+ label=_("&Add"),
).Bind(wx.EVT_BUTTON, self.onAddClick)
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
- label=_("&Edit")
+ label=_("&Edit"),
).Bind(wx.EVT_BUTTON, self.onEditClick)
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
- label=_("Re&move")
+ label=_("Re&move"),
).Bind(wx.EVT_BUTTON, self.onRemoveClick)
sHelper.addItem(bHelper)
@@ -111,39 +156,44 @@ def makeSettings(self, settingsSizer):
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
- label=_("&Open the dictionary file in an editor")
+ label=_("&Open the dictionary file in an editor"),
).Bind(wx.EVT_BUTTON, self.onOpenFileClick)
bHelper.addButton(
parent=self,
# Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
- label=_("&Reload the dictionary")
+ label=_("&Reload the dictionary"),
).Bind(wx.EVT_BUTTON, self.onReloadDictClick)
sHelper.addItem(bHelper)
def onSetEntries(self):
self.dictList.DeleteAllItems()
for entry in self.tmpDict:
- self.dictList.Append((entry.abreviation, entry.replaceBy, translateTable(entry.table)))
+ self.dictList.Append(
+ (entry.abreviation, entry.replaceBy, translateTable(entry.table))
+ )
self.dictList.SetFocus()
def onAddClick(self, event):
- entryDialog = DictionaryEntryDlg(self,title=_("Add Dictionary Entry"))
+ entryDialog = DictionaryEntryDlg(self, title=_("Add Dictionary Entry"))
if entryDialog.ShowModal() == wx.ID_OK:
entry = entryDialog.dictEntry
self.tmpDict.append(entry)
- self.dictList.Append((entry.abreviation, entry.replaceBy, translateTable(entry.table)))
+ self.dictList.Append(
+ (entry.abreviation, entry.replaceBy, translateTable(entry.table))
+ )
index = self.dictList.GetFirstSelected()
while index >= 0:
- self.dictList.Select(index,on=0)
- index=self.dictList.GetNextSelected(index)
- addedIndex = self.dictList.GetItemCount()-1
+ self.dictList.Select(index, on=0)
+ index = self.dictList.GetNextSelected(index)
+ addedIndex = self.dictList.GetItemCount() - 1
self.dictList.Select(addedIndex)
self.dictList.Focus(addedIndex)
self.dictList.SetFocus()
entryDialog.Destroy()
def onEditClick(self, event):
- if self.dictList.GetSelectedItemCount() != 1: return
+ if self.dictList.GetSelectedItemCount() != 1:
+ return
editIndex = self.dictList.GetFirstSelected()
entryDialog = DictionaryEntryDlg(self)
entryDialog.abreviationTextCtrl.SetValue(self.tmpDict[editIndex].abreviation)
@@ -159,7 +209,7 @@ def onEditClick(self, event):
def onRemoveClick(self, event):
index = self.dictList.GetFirstSelected()
- while index>=0:
+ while index >= 0:
self.dictList.DeleteItem(index)
del self.tmpDict[index]
index = self.dictList.GetNextSelected(index)
@@ -167,45 +217,86 @@ def onRemoveClick(self, event):
def onOpenFileClick(self, event):
dictPath = getPathDict()
- if not os.path.exists(dictPath): return ui.message(_("File doesn't exist yet"))
- try: os.startfile(dictPath)
- except OSError: os.popen("notepad \"%s\"" % dictPath)
+ if not os.path.exists(dictPath):
+ return ui.message(_("File doesn't exist yet"))
+ try:
+ os.startfile(dictPath)
+ except OSError:
+ os.popen('notepad "%s"' % dictPath)
def onReloadDictClick(self, event):
self.tmpDict = getDictionary()
self.onSetEntries()
- def postInit(self): self.dictList.SetFocus()
+ def postInit(self):
+ self.dictList.SetFocus()
def onOk(self, evt):
saveDict(self.tmpDict)
setDict(self.tmpDict)
super(AdvancedInputModeDlg, self).onOk(evt)
+
class DictionaryEntryDlg(wx.Dialog):
# Translators: This is the label for the edit dictionary entry dialog.
def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
super(DictionaryEntryDlg, self).__init__(parent, title=title)
- mainSizer=wx.BoxSizer(wx.VERTICAL)
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
sHelper = gui.guiHelper.BoxSizerHelper(self, orientation=wx.VERTICAL)
# Translators: This is a label for an edit field in add dictionary entry dialog.
abreviationLabelText = _("&Abreviation")
- self.abreviationTextCtrl = sHelper.addLabeledControl(abreviationLabelText, wx.TextCtrl)
+ self.abreviationTextCtrl = sHelper.addLabeledControl(
+ abreviationLabelText, wx.TextCtrl
+ )
# Translators: This is a label for an edit field in add dictionary entry dialog.
replaceByLabelText = _("&Replace by")
- self.replaceByTextCtrl = sHelper.addLabeledControl(replaceByLabelText, wx.TextCtrl)
+ self.replaceByTextCtrl = sHelper.addLabeledControl(
+ replaceByLabelText, wx.TextCtrl
+ )
- sHelper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK|wx.CANCEL))
+ sHelper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK | wx.CANCEL))
- mainSizer.Add(sHelper.sizer,border=20,flag=wx.ALL)
+ mainSizer.Add(sHelper.sizer, border=20, flag=wx.ALL)
mainSizer.Fit(self)
self.SetSizer(mainSizer)
self.abreviationTextCtrl.SetFocus()
- self.Bind(wx.EVT_BUTTON,self.onOk,id=wx.ID_OK)
+ self.Bind(wx.EVT_BUTTON, self.onOk, id=wx.ID_OK)
def onOk(self, evt):
abreviation = getTextInBraille(self.abreviationTextCtrl.GetValue())
replaceBy = self.replaceByTextCtrl.GetValue()
- newEntry = AdvancedInputModeDictEntry(abreviation, replaceBy, '*')
+ newEntry = AdvancedInputModeDictEntry(abreviation, replaceBy, "*")
self.dictEntry = newEntry
evt.Skip()
+
+
+class SettingsDlg(gui.settingsDialogs.SettingsPanel):
+
+ # Translators: title of a dialog.
+ title = _("Advanced input mode")
+
+ def makeSettings(self, settingsSizer):
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+
+ # Translators: label of a dialog.
+ self.stopAdvancedInputModeAfterOneChar = sHelper.addItem(
+ wx.CheckBox(
+ self, label=_("E&xit the advanced input mode after typing one pattern")
+ )
+ )
+ self.stopAdvancedInputModeAfterOneChar.SetValue(
+ config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"]
+ )
+ self.escapeSignUnicodeValue = sHelper.addLabeledControl(
+ _("Escape sign for Unicode values"),
+ wx.TextCtrl,
+ value=config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"],
+ )
+
+ def onSave(self):
+ config.conf["brailleExtender"]["advancedInputMode"][
+ "stopAfterOneChar"
+ ] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
+ s = self.escapeSignUnicodeValue.Value
+ if s:
+ config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] = getTextInBraille(s[0])
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 0da6ca78..c33c48bb 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -13,13 +13,12 @@
import braille
import config
import configobj
-if hasattr(configobj, "validate"):
- Validator = configobj.validate.Validator
-else: from validate import Validator
import inputCore
import languageHandler
from .common import *
+Validator = configobj.validate.Validator
+
CHANNEL_stable = "stable"
CHANNEL_testing = "testing"
CHANNEL_dev = "dev"
@@ -159,14 +158,18 @@ def getConfspec():
"inputTables": 'string(default="%s")' % config.conf["braille"]["inputTable"] + ", unicode-braille.utb",
"outputTables": "string(default=%s)" % config.conf["braille"]["translationTable"],
"tabSpace": "boolean(default=False)",
- "tabSize_%s" % curBD: "integer(min=1, default=2, max=42)",
- "undefinedCharReprMethod": "integer(min=0, default=%s, max=%s)" % (CHOICE_HUC8, CHOICE_bin),
- "undefinedCharRepr": "string(default=0)",
- "undefinedCharDesc": "boolean(default=True)",
- "undefinedCharStart": "string(default=[)",
- "undefinedCharEnd": "string(default=])",
- "undefinedCharLang": "string(default=Windows)",
- "undefinedCharBrailleTable": "string(default=current)",
+ f"tabSize_{curBD}": "integer(min=1, default=2, max=42)",
+ "undefinedCharsRepr": {
+ "method": "integer(min=0, default=%s, max=%s)" % (CHOICE_HUC8, CHOICE_bin),
+ "hardSignPatternValue": "string(default=??)",
+ "hardDotPatternValue": "string(default=6-12345678)",
+ "desc": "boolean(default=True)",
+ "extendedDesc": "boolean(default=True)",
+ "start": "string(default=[)",
+ "end": "string(default=])",
+ "lang": "string(default=Windows)",
+ "table": "string(default=current)"
+ },
"postTable": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
@@ -223,7 +226,7 @@ def getConfspec():
"brailleTables": {},
"advancedInputMode": {
"stopAfterOneChar": "boolean(default=True)",
- "startSign": "string(default=⠼)",
+ "escapeSignUnicodeValue": "string(default=⠼)",
}
}
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index e4fa1cd4..6a789cb7 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -19,16 +19,15 @@
import braille
import brailleInput
import brailleTables
-import characterProcessing
import controlTypes
import config
import core
-from . import configBE
import globalCommands
import inputCore
import keyboardHandler
import languageHandler
import louis
+import louisHelper
import queueHandler
import sayAllHandler
import scriptHandler
@@ -37,18 +36,20 @@
import treeInterceptorHandler
import watchdog
from logHandler import log
+
+
import addonHandler
addonHandler.initTranslation()
+
from . import advancedInputMode
+from . import configBE
from . import dictionaries
from . import huc
-from .utils import getCurrentChar, getTether, getTextInBraille, getCharFromValue, getExtendedSymbols
+from . import undefinedChars
+from .utils import getCurrentChar, getTether, getCharFromValue, getCurrentBrailleTables
from .common import *
-import louisHelper
instanceGP = None
-HUCDotPattern = "12345678-78-12345678"
-undefinedCharPattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
SELECTION_SHAPE = lambda: braille.SELECTION_SHAPE
origFunc = {
@@ -74,24 +75,6 @@ def sayCurrentLine():
info.expand(textInfos.UNIT_LINE)
speech.speakTextInfo(info, unit=textInfos.UNIT_LINE, reason=controlTypes.REASON_CARET)
-def getCurrentBrailleTables(input_=False):
- if instanceGP.BRFMode:
- tables = [
- os.path.join(baseDir, "res", "brf.ctb").encode("UTF-8"),
- os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
- ]
- else:
- tables = []
- app = appModuleHandler.getAppModuleForNVDAObject(api.getNavigatorObject())
- if brailleInput.handler._table.fileName == config.conf["braille"]["translationTable"] and app and app.appName != "nvda": tables += dictionaries.dictTables
- if input_: mainTable = os.path.join(brailleTables.TABLES_DIR, brailleInput.handler._table.fileName)
- else: mainTable = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
- tables += [
- mainTable,
- os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
- ]
- return tables
-
# globalCommands.GlobalCommands.script_braille_routeTo()
def script_braille_routeTo(self, gesture):
obj = obj = api.getNavigatorObject()
@@ -130,13 +113,14 @@ def update(self):
mode = louis.dotsIO
if config.conf["braille"]["expandAtCursor"] and self.cursorPos is not None: mode |= louis.compbrlAtCursor
self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, self.brailleCursorPos = louisHelper.translate(
- getCurrentBrailleTables(),
+ getCurrentBrailleTables(brf=instanceGP.BRFMode),
self.rawText,
typeform=self.rawTextTypeforms,
mode=mode,
cursorPos=self.cursorPos
)
- if config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_liblouis, configBE.CHOICE_HUC8, configBE.CHOICE_HUC6, configBE.CHOICE_hex, configBE.CHOICE_dec, configBE.CHOICE_oct, configBE.CHOICE_bin]: undefinedCharProcess(self)
+ if config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [configBE.CHOICE_liblouis, configBE.CHOICE_HUC8, configBE.CHOICE_HUC6, configBE.CHOICE_hex, configBE.CHOICE_dec, configBE.CHOICE_oct, configBE.CHOICE_bin]:
+ undefinedChars.undefinedCharProcess(self)
if self.selectionStart is not None and self.selectionEnd is not None:
try:
# Mark the selection.
@@ -152,113 +136,6 @@ def update(self):
if instanceGP and instanceGP.hideDots78:
self.brailleCells = [(cell & 63) for cell in self.brailleCells]
-def setUndefinedChar(t=None):
- if not t or t > CHOICE_HUC6 or t < 0: t = config.conf["brailleExtender"]["undefinedCharReprMethod"]
- if t == 0: return
- c = ["default", "12345678", "123456", '0', config.conf["brailleExtender"]["undefinedCharRepr"], "questionMark", "sign"] + [HUCDotPattern]*7
- v = c[t]
- if v in ["questionMark", "sign"]:
- if v == "questionMark": s = '?'
- else: s = config.conf["brailleExtender"]["undefinedCharRepr"]
- v = huc.unicodeBrailleToDescription(getTextInBraille(s, getCurrentBrailleTables()))
- louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
-
-def getExtendedSymbolsForString(s):
- return {c: (d, [(m.start(), m.end()) for m in re.finditer(c, s)]) for c, d in extendedSymbols.items() if c in s}
-
-def getDescChar(c, lang="Windows", start='', end=''):
- if lang == "Windows": lang = languageHandler.getLanguage()
- desc = characterProcessing.processSpeechSymbols(lang, c, characterProcessing.SYMLVL_CHAR).strip().replace(" ", ' ')
- if not desc or desc == c:
- if config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_HUC6, configBE.CHOICE_HUC8]:
- HUC6 = config.conf["brailleExtender"]["undefinedCharReprMethod"] == configBE.CHOICE_HUC6
- return huc.translate(c, HUC6=HUC6)
- else: return getTextInBraille(''.join(getNotationOrd(c)))
- return f"{start}{desc}{end}"
-
-def getLiblouisStyle(c):
- if c < 0x10000: return r"\x%.4x" % c
- elif c <= 0x100000: return r"\y%.5x" % c
- else: return r"\z%.6x" % c
-
-def getNotationOrd(s, notation=None):
- if not notation: notation = config.conf["brailleExtender"]["undefinedCharReprMethod"]
- matches = {
- configBE.CHOICE_bin: bin,
- configBE.CHOICE_oct: oct,
- configBE.CHOICE_dec: lambda s: s,
- configBE.CHOICE_hex: hex,
- configBE.CHOICE_liblouis: getLiblouisStyle,
- }
- fn = matches[notation]
- s = getTextInBraille(''.join(["'%s'" % fn(ord(c)) for c in s]))
- return s
-
-def undefinedCharProcess(self):
- extendedSymbolsRawText = getExtendedSymbolsForString(self.rawText)
- unicodeBrailleRepr = ''.join([chr(10240 + cell) for cell in self.brailleCells])
- allBraillePos = [m.start() for m in re.finditer(undefinedCharPattern, unicodeBrailleRepr)]
- allExtendedPos = {}
- for c, v in extendedSymbolsRawText.items():
- for start, end in v[1]: allExtendedPos[start] = end
- if not allBraillePos: return
- if config.conf["brailleExtender"]["undefinedCharDesc"]:
- start = config.conf["brailleExtender"]["undefinedCharStart"]
- end = config.conf["brailleExtender"]["undefinedCharEnd"]
- if start: start = getTextInBraille(start)
- if end: end = getTextInBraille(end)
- replacements = {braillePos:
- getTextInBraille(
- (
- getDescChar(
- self.rawText[self.brailleToRawPos[braillePos]:allExtendedPos[self.brailleToRawPos[braillePos]]],
- lang=config.conf["brailleExtender"]["undefinedCharLang"],
- start=start,
- end=f":{allExtendedPos[self.brailleToRawPos[braillePos]] - self.brailleToRawPos[braillePos]}{end}" + getDescChar(self.rawText[self.brailleToRawPos[braillePos]], lang=config.conf["brailleExtender"]["undefinedCharLang"], start=start, end=end)
- )
- ) if self.brailleToRawPos[braillePos] in allExtendedPos else getDescChar(
- self.rawText[self.brailleToRawPos[braillePos]],
- lang=config.conf["brailleExtender"]["undefinedCharLang"],
- start=start,
- end=end
- ),
- table=[config.conf["brailleExtender"]["undefinedCharBrailleTable"]]
- ) for braillePos in allBraillePos}
- elif config.conf["brailleExtender"]["undefinedCharReprMethod"] in [configBE.CHOICE_HUC6, configBE.CHOICE_HUC8]:
- HUC6 = config.conf["brailleExtender"]["undefinedCharReprMethod"] == configBE.CHOICE_HUC6
- replacements = {braillePos: huc.translate(self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6) for braillePos in allBraillePos}
- else:
- replacements = {braillePos: getNotationOrd(self.rawText[self.brailleToRawPos[braillePos]]) for braillePos in allBraillePos}
- newBrailleCells = []
- newBrailleToRawPos = []
- newRawToBraillePos = []
- lenBrailleToRawPos = len(self.brailleToRawPos)
- alreadyDone = []
- i = 0
- for iBrailleCells, brailleCells in enumerate(self.brailleCells):
- brailleToRawPos = self.brailleToRawPos[iBrailleCells]
- if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(undefinedCharPattern[0]):
- toAdd = [ord(c)-10240 for c in replacements[iBrailleCells]]
- newBrailleCells += toAdd
- newBrailleToRawPos += [i] * len(toAdd)
- alreadyDone += list(range(iBrailleCells, iBrailleCells+3))
- i += 1
- else:
- if iBrailleCells in alreadyDone: continue
- newBrailleCells.append(self.brailleCells[iBrailleCells])
- newBrailleToRawPos += [i]
- if (iBrailleCells + 1) < lenBrailleToRawPos and self.brailleToRawPos[iBrailleCells+1] != brailleToRawPos:
- i += 1
- pos = -42
- for i, brailleToRawPos in enumerate(newBrailleToRawPos):
- if brailleToRawPos != pos:
- pos = brailleToRawPos
- newRawToBraillePos.append(i)
- self.brailleCells = newBrailleCells
- self.brailleToRawPos = newBrailleToRawPos
- self.rawToBraillePos = newRawToBraillePos
- if self.cursorPos: self.brailleCursorPos = self.rawToBraillePos[self.cursorPos]
- # self.brailleCells self.rawText self.rawToBraillePos self.brailleToRawPos
#: braille.TextInfoRegion.nextLine()
def nextLine(self):
@@ -452,11 +329,12 @@ def input_(self, dots):
res = ''
abreviations = advancedInputMode.getReplacements([advancedInputStr])
startUnicodeValue = "⠃⠙⠓⠕⠭⡃⡙⡓⡕⡭"
- if not abreviations and advancedInputStr[0] in startUnicodeValue: advancedInputStr = config.conf["brailleExtender"]["advancedInputMode"]["startSign"] + advancedInputStr
- if advancedInputStr == config.conf["brailleExtender"]["advancedInputMode"]["startSign"] or (advancedInputStr.startswith(config.conf["brailleExtender"]["advancedInputMode"]["startSign"]) and len(advancedInputStr) > 1 and advancedInputStr[1] in startUnicodeValue):
+ if not abreviations and advancedInputStr[0] in startUnicodeValue: advancedInputStr = config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] + advancedInputStr
+ lenEscapeSign = len(config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"])
+ if advancedInputStr == config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] or (advancedInputStr.startswith(config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"]) and len(advancedInputStr) > lenEscapeSign and advancedInputStr[lenEscapeSign] in startUnicodeValue):
equiv = {'⠃': 'b', '⠙': 'd', '⠓': 'h', '⠕': 'o', '⠭': 'x', '⡃': 'B', '⡙': 'D', '⡓': 'H', '⡕': 'O', '⡭': 'X'}
if advancedInputStr[-1] == '⠀':
- text = equiv[advancedInputStr[1]] + louis.backTranslate(getCurrentBrailleTables(True), advancedInputStr[2:-1])[0]
+ text = equiv[advancedInputStr[1]] + louis.backTranslate(getCurrentBrailleTables(True, brf=instanceGP.BRFMode), advancedInputStr[2:-1])[0]
try:
res = getCharFromValue(text)
sendChar(res)
@@ -533,7 +411,7 @@ def _translate(self, endWord):
mode = louis.dotsIO | louis.noUndefinedDots
if (not self.currentFocusIsTextObj or self.currentModifiers) and self._table.contracted:
mode |= louis.partialTrans
- self.bufferText = louis.backTranslate(getCurrentBrailleTables(True),
+ self.bufferText = louis.backTranslate(getCurrentBrailleTables(True, brf=instanceGP.BRFMode),
data, mode=mode)[0]
newText = self.bufferText[oldTextLen:]
if newText:
@@ -593,9 +471,3 @@ def _createTablesString(tablesList):
globalCommands.GlobalCommands.script_braille_routeTo = script_braille_routeTo
louis._createTablesString = _createTablesString
script_braille_routeTo.__doc__ = origFunc["script_braille_routeTo"].__doc__
-
-try:
- extendedSymbols = getExtendedSymbols(config.conf["brailleExtender"]["undefinedCharLang"])
-except BaseException as err:
- extendedSymbols = {}
- log.error(f"Unable to load extended symbols for %s: %s" % (config.conf["brailleExtender"]["undefinedCharLang"], err))
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index bff48938..c4fca195 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -26,6 +26,8 @@
from . import configBE
from . import utils
from .common import *
+from . import advancedInputMode
+from . import undefinedChars
instanceGP = None
def notImplemented(msg='', style=wx.OK|wx.ICON_INFORMATION):
@@ -354,33 +356,6 @@ def makeSettings(self, settingsSizer):
# Translators: label of a dialog.
self.tabSize = sHelper.addLabeledControl(_("Number of &space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
- # Translators: label of a dialog.
- label = _("Representation of &undefined characters")
- choices = [
- _("Use braille table behavior"),
- _("Dots 1-8 (⣿)"),
- _("Dots 1-6 (⠿)"),
- _("Empty cell (⠀)"),
- _("Other dot pattern (e.g.: 6-123456)"),
- _("Question mark (depending output table)"),
- _("Other sign/pattern (e.g.: \, ??)"),
- _("Hexadecimal, Liblouis style"),
- _("Hexadecimal, HUC8"),
- _("Hexadecimal, HUC6"),
- _("Hexadecimal"),
- _("Decimal"),
- _("Octal"),
- _("Binary")
- ]
- self.undefinedCharReprList = sHelper.addLabeledControl(label, wx.Choice, choices=choices)
- self.undefinedCharReprList.Bind(wx.EVT_CHOICE, self.onUndefinedCharReprList)
- self.undefinedCharReprList.SetSelection(config.conf["brailleExtender"]["undefinedCharReprMethod"])
- # Translators: label of a dialog.
- self.undefinedCharReprEdit = sHelper.addLabeledControl(_("Specify another pattern"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharRepr"])
- self.onUndefinedCharReprList()
- self.undefinedCharsBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Description of undefined characters"), wx.DefaultPosition)
- self.undefinedCharsBtn.Bind(wx.EVT_BUTTON, self.onUndefinedCharsBtn)
-
self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
self.customBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onCustomBrailleTablesBtn)
sHelper.addItem(bHelper1)
@@ -394,19 +369,11 @@ def onSave(self):
postTableID = self.postTable.GetSelection()
postTable = "None" if postTableID == 0 else configBE.tablesFN[postTableID]
config.conf["brailleExtender"]["postTable"] = postTable
- if ((self.tabSpace.IsChecked() and config.conf["brailleExtender"]["tabSpace"] != self.tabSpace.IsChecked())
- or (self.undefinedCharReprList.GetSelection() != 0 and config.conf["brailleExtender"]["undefinedCharReprMethod"] != self.undefinedCharReprList.GetSelection())):
+ if self.tabSpace.IsChecked() and config.conf["brailleExtender"]["tabSpace"] != self.tabSpace.IsChecked():
restartRequired = True
else: restartRequired = False
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD] = self.tabSize.Value
- config.conf["brailleExtender"]["undefinedCharReprMethod"] = self.undefinedCharReprList.GetSelection()
- repr_ = self.undefinedCharReprEdit.Value
- if self.undefinedCharReprList.GetSelection() == configBE.CHOICE_otherDots:
- repr_ = re.sub("[^0-8\-]", "", repr_).strip('-')
- repr_ = re.sub('\-+','-', repr_)
- config.conf["brailleExtender"]["undefinedCharRepr"] = repr_
- instanceGP.reloadBrailleTables()
if restartRequired:
res = gui.messageBox(
_("NVDA must be restarted for some new options to take effect. Do you want restart now?"),
@@ -469,15 +436,6 @@ def changeSwitch(self, tbl, direction=1, loop=True):
else: return
self.setCurrentSelection(tbl, newDir)
- def onUndefinedCharReprList(self, evt=None):
- selected = self.undefinedCharReprList.GetSelection()
- if selected in [configBE.CHOICE_otherDots, configBE.CHOICE_otherSign]: self.undefinedCharReprEdit.Enable()
- else: self.undefinedCharReprEdit.Disable()
-
- def onUndefinedCharsBtn(self, evt):
- undefinedCharsDlg = UndefinedCharsDlg(self, multiInstanceAllowed=True)
- undefinedCharsDlg.ShowModal()
-
def onCustomBrailleTablesBtn(self, evt):
customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
customBrailleTablesDlg.ShowModal()
@@ -510,61 +468,6 @@ def onTables(self, evt):
utils.refreshBD()
else: evt.Skip()
-class AdvancedInputModeDlg(gui.settingsDialogs.SettingsPanel):
-
- # Translators: title of a dialog.
- title = _("Advanced input mode")
-
- def makeSettings(self, settingsSizer):
- sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
-
- # Translators: label of a dialog.
- self.stopAdvancedInputModeAfterOneChar = sHelper.addItem(wx.CheckBox(self, label=_("E&xit the advanced input mode after typing one pattern")))
- self.stopAdvancedInputModeAfterOneChar.SetValue(config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"])
-
- def onSave(self):
- config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
-
-
-class UndefinedCharsDlg(gui.settingsDialogs.SettingsDialog):
-
- # Translators: title of a dialog.
- title = "Braille Extender - %s" % _("Description of undefined characters")
-
- def makeSettings(self, settingsSizer):
- sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
- self.undefinedCharDesc = sHelper.addItem(wx.CheckBox(self, label=_("Describe undefined characters if possible")))
- self.undefinedCharDesc.SetValue(config.conf["brailleExtender"]["undefinedCharDesc"])
- self.undefinedCharStart = sHelper.addLabeledControl(_("Start tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharStart"])
- self.undefinedCharEnd = sHelper.addLabeledControl(_("End tag"), wx.TextCtrl, value=config.conf["brailleExtender"]["undefinedCharEnd"])
- values = [lang[1] for lang in languageHandler.getAvailableLanguages()]
- keys = [lang[0] for lang in languageHandler.getAvailableLanguages()]
- undefinedCharLang = config.conf["brailleExtender"]["undefinedCharLang"]
- if not undefinedCharLang in keys: undefinedCharLang = keys[-1]
- undefinedCharLangID = keys.index(undefinedCharLang)
- self.undefinedCharLang = sHelper.addLabeledControl(_("Language"), wx.Choice, choices=values)
- self.undefinedCharLang.SetSelection(undefinedCharLangID)
- values = [_("Use the current output table")] + [table.displayName for table in configBE.tables if table.output]
- keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
- undefinedCharBrailleTable = config.conf["brailleExtender"]["undefinedCharBrailleTable"]
- if undefinedCharBrailleTable not in configBE.tablesFN + ["current"]: undefinedCharBrailleTable = "current"
- undefinedCharBrailleTableID = keys.index(undefinedCharBrailleTable)
- self.undefinedCharBrailleTable = sHelper.addLabeledControl(_("Braille table"), wx.Choice, choices=values)
- self.undefinedCharBrailleTable.SetSelection(undefinedCharBrailleTableID)
-
-
- def postInit(self): self.undefinedCharDesc.SetFocus()
-
- def onOk(self, evt):
- config.conf["brailleExtender"]["undefinedCharDesc"] = self.undefinedCharDesc.IsChecked()
- config.conf["brailleExtender"]["undefinedCharStart"] = self.undefinedCharStart.Value
- config.conf["brailleExtender"]["undefinedCharEnd"] = self.undefinedCharEnd.Value
- config.conf["brailleExtender"]["undefinedCharLang"] = languageHandler.getAvailableLanguages()[self.undefinedCharLang.GetSelection()][0]
- undefinedCharBrailleTable = self.undefinedCharBrailleTable.GetSelection()
- keys = ["current"] + [table.fileName for table in configBE.tables if table.output]
- config.conf["brailleExtender"]["undefinedCharBrailleTable"] = keys[undefinedCharBrailleTable]
- super(UndefinedCharsDlg, self).onOk(evt)
-
class CustomBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
@@ -988,8 +891,9 @@ class AddonSettingsDialog(gui.settingsDialogs.MultiCategorySettingsDialog):
GeneralDlg,
AttribraDlg,
BrailleTablesDlg,
+ undefinedChars.SettingsDlg,
+ advancedInputMode.SettingsDlg,
RoleLabelsDlg,
- AdvancedInputModeDlg
]
def __init__(self, parent, initialCategory=None):
diff --git a/addon/globalPlugins/brailleExtender/undefinedChars.py b/addon/globalPlugins/brailleExtender/undefinedChars.py
new file mode 100644
index 00000000..601dd305
--- /dev/null
+++ b/addon/globalPlugins/brailleExtender/undefinedChars.py
@@ -0,0 +1,428 @@
+# coding: utf-8
+# undefinedChars.py
+# Part of BrailleExtender addon for NVDA
+# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
+from collections import namedtuple
+import codecs
+import json
+import re
+import gui
+import wx
+
+import addonHandler
+
+addonHandler.initTranslation()
+import brailleInput
+import brailleTables
+import characterProcessing
+import config
+import louis
+
+from .common import *
+from .utils import getTextInBraille
+from . import configBE
+from . import huc
+from .utils import getCurrentBrailleTables
+
+HUCDotPattern = "12345678-78-12345678"
+undefinedCharPattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
+
+
+def setUndefinedChar(t=None):
+ if not t or t > CHOICE_HUC6 or t < 0:
+ t = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
+ if t == 0:
+ return
+ c = [
+ "default",
+ "12345678",
+ "123456",
+ "0",
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["hardDotPatternValue"],
+ "questionMark",
+ "sign",
+ ] + [HUCDotPattern] * 7
+ v = c[t]
+ if v in ["questionMark", "sign"]:
+ if v == "questionMark":
+ s = "?"
+ else:
+ s = config.conf["brailleExtender"]["undefinedCharsRepr"][""]
+ v = huc.unicodeBrailleToDescription(
+ getTextInBraille(s, getCurrentBrailleTables())
+ )
+ louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+
+
+def getExtendedSymbolsForString(s: str) -> dict:
+ return {
+ c: (d, [(m.start(), m.end()) for m in re.finditer(c, s)])
+ for c, d in extendedSymbols.items()
+ if c in s
+ }
+
+
+def getDescChar(c, lang="Windows", start="", end=""):
+ if lang == "Windows":
+ lang = languageHandler.getLanguage()
+ desc = characterProcessing.processSpeechSymbols(
+ lang, c, characterProcessing.SYMLVL_CHAR
+ ).replace(' ', '').strip()
+ if not desc or desc == c:
+ if config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
+ configBE.CHOICE_HUC6,
+ configBE.CHOICE_HUC8,
+ ]:
+ HUC6 = (
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
+ == configBE.CHOICE_HUC6
+ )
+ return huc.translate(c, HUC6=HUC6)
+ else:
+ return getTextInBraille("".join(getUnicodeNotation(c)))
+ return f"{start}{desc}{end}"
+
+
+def getLiblouisStyle(c):
+ if c < 0x10000:
+ return r"\x%.4x" % c
+ elif c <= 0x100000:
+ return r"\y%.5x" % c
+ else:
+ return r"\z%.6x" % c
+
+
+def getUnicodeNotation(s, notation=None):
+ if not notation:
+ notation = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
+ matches = {
+ configBE.CHOICE_bin: bin,
+ configBE.CHOICE_oct: oct,
+ configBE.CHOICE_dec: lambda s: s,
+ configBE.CHOICE_hex: hex,
+ configBE.CHOICE_liblouis: getLiblouisStyle,
+ }
+ fn = matches[notation]
+ s = getTextInBraille("".join(["'%s'" % fn(ord(c)) for c in s]))
+ return s
+
+
+def undefinedCharProcess(self):
+ extendedSymbolsRawText = {}
+ if config.conf["brailleExtender"]["undefinedCharsRepr"]["extendedDesc"]:
+ extendedSymbolsRawText = getExtendedSymbolsForString(self.rawText)
+ unicodeBrailleRepr = "".join([chr(10240 + cell) for cell in self.brailleCells])
+ allBraillePos = [
+ m.start() for m in re.finditer(undefinedCharPattern, unicodeBrailleRepr)
+ ]
+ allExtendedPos = {}
+ for c, v in extendedSymbolsRawText.items():
+ for start, end in v[1]:
+ allExtendedPos[start] = end
+ if not allBraillePos:
+ return
+ if config.conf["brailleExtender"]["undefinedCharsRepr"]["desc"]:
+ start = config.conf["brailleExtender"]["undefinedCharsRepr"]["start"]
+ end = config.conf["brailleExtender"]["undefinedCharsRepr"]["end"]
+ if start:
+ start = getTextInBraille(start)
+ if end:
+ end = getTextInBraille(end)
+ replacements = {
+ braillePos: getTextInBraille(
+ (
+ getDescChar(
+ self.rawText[
+ self.brailleToRawPos[braillePos] : allExtendedPos[
+ self.brailleToRawPos[braillePos]
+ ]
+ ],
+ lang=config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "lang"
+ ],
+ start=start,
+ end=f":{allExtendedPos[self.brailleToRawPos[braillePos]] - self.brailleToRawPos[braillePos]}{end}"
+ + getDescChar(
+ self.rawText[self.brailleToRawPos[braillePos]],
+ lang=config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "lang"
+ ],
+ start=start,
+ end=end,
+ ),
+ )
+ )
+ if self.brailleToRawPos[braillePos] in allExtendedPos
+ else getDescChar(
+ self.rawText[self.brailleToRawPos[braillePos]],
+ lang=config.conf["brailleExtender"]["undefinedCharsRepr"]["lang"],
+ start=start,
+ end=end,
+ ),
+ table=[config.conf["brailleExtender"]["undefinedCharsRepr"]["table"]],
+ )
+ for braillePos in allBraillePos
+ }
+ elif config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
+ configBE.CHOICE_HUC6,
+ configBE.CHOICE_HUC8,
+ ]:
+ HUC6 = (
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
+ == configBE.CHOICE_HUC6
+ )
+ replacements = {
+ braillePos: huc.translate(
+ self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6
+ )
+ for braillePos in allBraillePos
+ }
+ else:
+ replacements = {
+ braillePos: getUnicodeNotation(
+ self.rawText[self.brailleToRawPos[braillePos]]
+ )
+ for braillePos in allBraillePos
+ }
+ newBrailleCells = []
+ newBrailleToRawPos = []
+ newRawToBraillePos = []
+ lenBrailleToRawPos = len(self.brailleToRawPos)
+ alreadyDone = []
+ i = 0
+ for iBrailleCells, brailleCells in enumerate(self.brailleCells):
+ brailleToRawPos = self.brailleToRawPos[iBrailleCells]
+ if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(
+ undefinedCharPattern[0]
+ ):
+ toAdd = [ord(c) - 10240 for c in replacements[iBrailleCells]]
+ newBrailleCells += toAdd
+ newBrailleToRawPos += [i] * len(toAdd)
+ alreadyDone += list(range(iBrailleCells, iBrailleCells + 3))
+ i += 1
+ else:
+ if iBrailleCells in alreadyDone:
+ continue
+ newBrailleCells.append(self.brailleCells[iBrailleCells])
+ newBrailleToRawPos += [i]
+ if (iBrailleCells + 1) < lenBrailleToRawPos and self.brailleToRawPos[
+ iBrailleCells + 1
+ ] != brailleToRawPos:
+ i += 1
+ pos = -42
+ for i, brailleToRawPos in enumerate(newBrailleToRawPos):
+ if brailleToRawPos != pos:
+ pos = brailleToRawPos
+ newRawToBraillePos.append(i)
+ self.brailleCells = newBrailleCells
+ self.brailleToRawPos = newBrailleToRawPos
+ self.rawToBraillePos = newRawToBraillePos
+ if self.cursorPos:
+ self.brailleCursorPos = self.rawToBraillePos[self.cursorPos]
+
+
+class SettingsDlg(gui.settingsDialogs.SettingsPanel):
+
+ # Translators: title of a dialog.
+ title = _("Representation of undefined characters")
+
+ def makeSettings(self, settingsSizer):
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ # Translators: label of a dialog.
+ label = _("Representation &method")
+ dotPatternSample = "6-12345678"
+ signPatternSample = "??"
+ choices = [
+ _("Use braille table behavior"),
+ _("Dots 1-8 (⣿)"),
+ _("Dots 1-6 (⠿)"),
+ _("Empty cell (⠀)"),
+ _(f"Other dot pattern (e.g.: {dotPatternSample})"),
+ _("Question mark (depending output table)"),
+ _(f"Other sign/pattern (e.g.: {signPatternSample})"),
+ _("Hexadecimal, Liblouis style"),
+ _("Hexadecimal, HUC8"),
+ _("Hexadecimal, HUC6"),
+ _("Hexadecimal"),
+ _("Decimal"),
+ _("Octal"),
+ _("Binary"),
+ ]
+ self.undefinedCharReprList = sHelper.addLabeledControl(
+ label, wx.Choice, choices=choices
+ )
+ self.undefinedCharReprList.SetSelection(
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
+ )
+ self.undefinedCharReprList.Bind(wx.EVT_CHOICE, self.onUndefinedCharReprList)
+ # Translators: label of a dialog.
+ self.undefinedCharReprEdit = sHelper.addLabeledControl(
+ _("Specify another pattern"), wx.TextCtrl, value=self.getHardValue()
+ )
+ self.onUndefinedCharReprList()
+ self.undefinedCharDesc = sHelper.addItem(
+ wx.CheckBox(self, label=_("Describe undefined characters if possible"))
+ )
+ self.undefinedCharDesc.SetValue(
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["desc"]
+ )
+ self.undefinedCharDesc.Bind(wx.EVT_CHECKBOX, self.onUndefinedCharDesc)
+ self.undefinedCharExtendedDesc = sHelper.addItem(
+ wx.CheckBox(
+ self, label=_("Also describe extended characters (e.g.: country flags)")
+ )
+ )
+ self.undefinedCharExtendedDesc.SetValue(
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["extendedDesc"]
+ )
+ self.undefinedCharStart = sHelper.addLabeledControl(
+ _("Start tag"),
+ wx.TextCtrl,
+ value=config.conf["brailleExtender"]["undefinedCharsRepr"]["start"],
+ )
+ self.undefinedCharEnd = sHelper.addLabeledControl(
+ _("End tag"),
+ wx.TextCtrl,
+ value=config.conf["brailleExtender"]["undefinedCharsRepr"]["end"],
+ )
+ values = [lang[1] for lang in languageHandler.getAvailableLanguages()]
+ keys = [lang[0] for lang in languageHandler.getAvailableLanguages()]
+ undefinedCharLang = config.conf["brailleExtender"]["undefinedCharsRepr"]["lang"]
+ if not undefinedCharLang in keys:
+ undefinedCharLang = keys[-1]
+ undefinedCharLangID = keys.index(undefinedCharLang)
+ self.undefinedCharLang = sHelper.addLabeledControl(
+ _("Language"), wx.Choice, choices=values
+ )
+ self.undefinedCharLang.SetSelection(undefinedCharLangID)
+ values = [_("Use the current output table")] + [
+ table.displayName for table in configBE.tables if table.output
+ ]
+ keys = ["current"] + [
+ table.fileName for table in configBE.tables if table.output
+ ]
+ undefinedCharTable = config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "table"
+ ]
+ if undefinedCharTable not in configBE.tablesFN + ["current"]:
+ undefinedCharTable = "current"
+ undefinedCharTableID = keys.index(undefinedCharTable)
+ self.undefinedCharTable = sHelper.addLabeledControl(
+ _("Braille table"), wx.Choice, choices=values
+ )
+ self.undefinedCharTable.SetSelection(undefinedCharTableID)
+
+ def getHardValue(self):
+ selected = self.undefinedCharReprList.GetSelection()
+ if selected == configBE.CHOICE_otherDots:
+ return config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "hardDotPatternValue"
+ ]
+ elif selected == configBE.CHOICE_otherSign:
+ return config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "hardSignPatternValue"
+ ]
+ else:
+ return ""
+
+ def onUndefinedCharDesc(self, evt):
+ l = [
+ self.undefinedCharReprEdit,
+ self.undefinedCharExtendedDesc,
+ self.undefinedCharStart,
+ self.undefinedCharEnd,
+ self.undefinedCharLang,
+ self.undefinedCharTable,
+ ]
+ for e in l:
+ if self.undefinedCharDesc.IsChecked():
+ e.Enable()
+ else:
+ e.Disable()
+
+ def onUndefinedCharReprList(self, evt=None):
+ selected = self.undefinedCharReprList.GetSelection()
+ if selected in [configBE.CHOICE_otherDots, configBE.CHOICE_otherSign]:
+ self.undefinedCharReprEdit.Enable()
+ else:
+ self.undefinedCharReprEdit.Disable()
+ self.undefinedCharReprEdit.SetValue(self.getHardValue())
+
+ def postInit(self):
+ self.undefinedCharDesc.SetFocus()
+
+ def onSave(self):
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "method"
+ ] = self.undefinedCharReprList.GetSelection()
+ repr_ = self.undefinedCharReprEdit.Value
+ if self.undefinedCharReprList.GetSelection() == configBE.CHOICE_otherDots:
+ repr_ = re.sub("[^0-8\-]", "", repr_).strip("-")
+ repr_ = re.sub("\-+", "-", repr_)
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "hardDotPatternValue"
+ ] = repr_
+ else:
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "hardSignPatternValue"
+ ] = repr_
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "desc"
+ ] = self.undefinedCharDesc.IsChecked()
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "extendedDesc"
+ ] = self.undefinedCharExtendedDesc.IsChecked()
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "start"
+ ] = self.undefinedCharStart.Value
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "end"
+ ] = self.undefinedCharEnd.Value
+ config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "lang"
+ ] = languageHandler.getAvailableLanguages()[
+ self.undefinedCharLang.GetSelection()
+ ][
+ 0
+ ]
+ undefinedCharTable = self.undefinedCharTable.GetSelection()
+ keys = ["current"] + [
+ table.fileName for table in configBE.tables if table.output
+ ]
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["table"] = keys[
+ undefinedCharTable
+ ]
+
+
+def getExtendedSymbols(locale):
+ if locale == "Windows":
+ locale = languageHandler.getLanguage()
+ try:
+ b, u = characterProcessing._getSpeechSymbolsForLocale(locale)
+ except LookupError:
+ b, u = characterProcessing._getSpeechSymbolsForLocale(locale.split("_")[0])
+ a = {
+ k.strip(): v.replacement.replace(' ', '').strip()
+ for k, v in b.symbols.items()
+ if len(k) > 1
+ }
+ a.update(
+ {
+ k.strip(): v.replacement.replace(' ', '').strip()
+ for k, v in u.symbols.items()
+ if len(k) > 1
+ }
+ )
+ return a
+
+
+try:
+ extendedSymbols = getExtendedSymbols(
+ config.conf["brailleExtender"]["undefinedCharsRepr"]["lang"]
+ )
+except BaseException as err:
+ extendedSymbols = {}
+ log.error(
+ f"Unable to load extended symbols for %s: %s"
+ % (config.conf["brailleExtender"]["undefinedCharsRepr"]["lang"], err)
+ )
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index b11f14f3..33285c52 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -7,7 +7,9 @@
import os.path as osp
import re
import api
+import appModuleHandler
import braille
+import brailleInput
import brailleTables
import characterProcessing
import louis
@@ -24,6 +26,7 @@
import unicodedata
from .common import *
from . import huc
+from . import dictionaries
charToDotsInLouis = hasattr(louis, "charToDots")
@@ -460,12 +463,21 @@ def getCharFromValue(s):
n = int(n, b)
return chr(n)
-def getExtendedSymbols(locale):
- if locale == "Windows": locale = languageHandler.getLanguage()
- try:
- b, u = characterProcessing._getSpeechSymbolsForLocale(locale)
- except LookupError:
- b, u = characterProcessing._getSpeechSymbolsForLocale(locale.split('_')[0])
- a = {k: v.replacement.replace(" ", " ") for k, v in b.symbols.items() if len(k) > 1}
- a.update({k: v.replacement.replace(" ", " ") for k, v in u.symbols.items() if len(k) > 1})
- return a
+def getCurrentBrailleTables(input_=False, brf=False):
+ if brf:
+ tables = [
+ os.path.join(baseDir, "res", "brf.ctb").encode("UTF-8"),
+ os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
+ ]
+ else:
+ tables = []
+ app = appModuleHandler.getAppModuleForNVDAObject(api.getNavigatorObject())
+ if brailleInput.handler._table.fileName == config.conf["braille"]["translationTable"] and app and app.appName != "nvda": tables += dictionaries.dictTables
+ if input_: mainTable = os.path.join(brailleTables.TABLES_DIR, brailleInput.handler._table.fileName)
+ else: mainTable = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
+ tables += [
+ mainTable,
+ os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
+ ]
+ return tables
+
From 481d9f487973a6b852d0add46eee267557075a6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Wed, 8 Apr 2020 23:21:28 +0200
Subject: [PATCH 51/87] fixup
---
.../brailleExtender/undefinedChars.py | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/undefinedChars.py b/addon/globalPlugins/brailleExtender/undefinedChars.py
index 601dd305..dc9e3a70 100644
--- a/addon/globalPlugins/brailleExtender/undefinedChars.py
+++ b/addon/globalPlugins/brailleExtender/undefinedChars.py
@@ -27,6 +27,18 @@
HUCDotPattern = "12345678-78-12345678"
undefinedCharPattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
+def getHardValue():
+ selected = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
+ if selected == configBE.CHOICE_otherDots:
+ return config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "hardDotPatternValue"
+ ]
+ elif selected == configBE.CHOICE_otherSign:
+ return config.conf["brailleExtender"]["undefinedCharsRepr"][
+ "hardSignPatternValue"
+ ]
+ else:
+ return ""
def setUndefinedChar(t=None):
if not t or t > CHOICE_HUC6 or t < 0:
@@ -47,7 +59,7 @@ def setUndefinedChar(t=None):
if v == "questionMark":
s = "?"
else:
- s = config.conf["brailleExtender"]["undefinedCharsRepr"][""]
+ s = getHardValue()
v = huc.unicodeBrailleToDescription(
getTextInBraille(s, getCurrentBrailleTables())
)
From 715cfd049d3db1cc3debaf75d2ba69367c1dda25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 9 Apr 2020 19:58:30 +0200
Subject: [PATCH 52/87] L10n updates for: da
---
addon/locale/da/LC_MESSAGES/nvda.po | 1343 ++++++++++++++++++---------
1 file changed, 893 insertions(+), 450 deletions(-)
diff --git a/addon/locale/da/LC_MESSAGES/nvda.po b/addon/locale/da/LC_MESSAGES/nvda.po
index 992c2dbc..6b2de2de 100644
--- a/addon/locale/da/LC_MESSAGES/nvda.po
+++ b/addon/locale/da/LC_MESSAGES/nvda.po
@@ -7,187 +7,187 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender 20.02.27:19953a8\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-02-27 15:39+0100\n"
-"PO-Revision-Date: 2020-03-19 20:55+0100\n"
+"POT-Creation-Date: 2020-04-02 01:47+0200\n"
+"PO-Revision-Date: 2020-04-09 17:05+0200\n"
+"Last-Translator: Daniel Gartmann \n"
"Language-Team: \n"
+"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
-"Last-Translator: Daniel Gartmann \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"Language: da\n"
"X-Poedit-Bookmarks: -1,-1,-1,-1,398,-1,-1,-1,-1,-1\n"
-#: addon/globalPlugins/brailleExtender/__init__.py:61
+#: addon\globalPlugins\brailleExtender\__init__.py:63
msgid "Default"
msgstr "Standard"
-#: addon/globalPlugins/brailleExtender/__init__.py:62
+#: addon\globalPlugins\brailleExtender\__init__.py:64
msgid "Moving in the text"
msgstr "Flytter i teksten"
-#: addon/globalPlugins/brailleExtender/__init__.py:63
+#: addon\globalPlugins\brailleExtender\__init__.py:65
msgid "Text selection"
msgstr "Tekstvalg"
-#: addon/globalPlugins/brailleExtender/__init__.py:64
+#: addon\globalPlugins\brailleExtender\__init__.py:66
msgid "Objects"
msgstr "Objekter"
-#: addon/globalPlugins/brailleExtender/__init__.py:65
+#: addon\globalPlugins\brailleExtender\__init__.py:67
msgid "Review"
msgstr "Gennemsyn"
-#: addon/globalPlugins/brailleExtender/__init__.py:66
+#: addon\globalPlugins\brailleExtender\__init__.py:68
msgid "Links"
msgstr "Links"
-#: addon/globalPlugins/brailleExtender/__init__.py:67
+#: addon\globalPlugins\brailleExtender\__init__.py:69
msgid "Unvisited links"
msgstr "Ikke-besøgte links"
-#: addon/globalPlugins/brailleExtender/__init__.py:68
+#: addon\globalPlugins\brailleExtender\__init__.py:70
msgid "Visited links"
msgstr "Besøgte links"
-#: addon/globalPlugins/brailleExtender/__init__.py:69
+#: addon\globalPlugins\brailleExtender\__init__.py:71
msgid "Landmarks"
msgstr "Landmærker"
-#: addon/globalPlugins/brailleExtender/__init__.py:70
+#: addon\globalPlugins\brailleExtender\__init__.py:72
msgid "Headings"
msgstr "Overskrifter"
-#: addon/globalPlugins/brailleExtender/__init__.py:71
+#: addon\globalPlugins\brailleExtender\__init__.py:73
msgid "Headings at level 1"
msgstr "Overskrifter på niveau 1"
-#: addon/globalPlugins/brailleExtender/__init__.py:72
+#: addon\globalPlugins\brailleExtender\__init__.py:74
msgid "Headings at level 2"
msgstr "Overskrifter på niveau 2"
-#: addon/globalPlugins/brailleExtender/__init__.py:73
+#: addon\globalPlugins\brailleExtender\__init__.py:75
msgid "Headings at level 3"
msgstr "Overskrifter på niveau 3"
-#: addon/globalPlugins/brailleExtender/__init__.py:74
+#: addon\globalPlugins\brailleExtender\__init__.py:76
msgid "Headings at level 4"
msgstr "Overskrifter på niveau 4"
-#: addon/globalPlugins/brailleExtender/__init__.py:75
+#: addon\globalPlugins\brailleExtender\__init__.py:77
msgid "Headings at level 5"
msgstr "Overskrifter på niveau 5"
-#: addon/globalPlugins/brailleExtender/__init__.py:76
+#: addon\globalPlugins\brailleExtender\__init__.py:78
msgid "Headings at level 6"
msgstr "Overskrifter på niveau 6"
-#: addon/globalPlugins/brailleExtender/__init__.py:77
+#: addon\globalPlugins\brailleExtender\__init__.py:79
msgid "Lists"
msgstr "Lister"
-#: addon/globalPlugins/brailleExtender/__init__.py:78
+#: addon\globalPlugins\brailleExtender\__init__.py:80
msgid "List items"
msgstr "Listeelementer"
-#: addon/globalPlugins/brailleExtender/__init__.py:79
+#: addon\globalPlugins\brailleExtender\__init__.py:81
msgid "Graphics"
msgstr "Grafik"
-#: addon/globalPlugins/brailleExtender/__init__.py:80
+#: addon\globalPlugins\brailleExtender\__init__.py:82
msgid "Block quotes"
msgstr "Blokcitater"
-#: addon/globalPlugins/brailleExtender/__init__.py:81
+#: addon\globalPlugins\brailleExtender\__init__.py:83
msgid "Buttons"
msgstr "Knapper"
-#: addon/globalPlugins/brailleExtender/__init__.py:82
+#: addon\globalPlugins\brailleExtender\__init__.py:84
msgid "Form fields"
msgstr "Formularfelter"
-#: addon/globalPlugins/brailleExtender/__init__.py:83
+#: addon\globalPlugins\brailleExtender\__init__.py:85
msgid "Edit fields"
msgstr "Editfelter"
-#: addon/globalPlugins/brailleExtender/__init__.py:84
+#: addon\globalPlugins\brailleExtender\__init__.py:86
msgid "Radio buttons"
msgstr "Radioknapper"
-#: addon/globalPlugins/brailleExtender/__init__.py:85
+#: addon\globalPlugins\brailleExtender\__init__.py:87
msgid "Combo boxes"
msgstr "Combo boxe"
-#: addon/globalPlugins/brailleExtender/__init__.py:86
+#: addon\globalPlugins\brailleExtender\__init__.py:88
msgid "Check boxes"
msgstr "Check boxe"
-#: addon/globalPlugins/brailleExtender/__init__.py:87
+#: addon\globalPlugins\brailleExtender\__init__.py:89
msgid "Not link blocks"
msgstr "Blokke uden links"
-#: addon/globalPlugins/brailleExtender/__init__.py:88
+#: addon\globalPlugins\brailleExtender\__init__.py:90
msgid "Frames"
msgstr "Rammer"
-#: addon/globalPlugins/brailleExtender/__init__.py:89
+#: addon\globalPlugins\brailleExtender\__init__.py:91
msgid "Separators"
msgstr "Separatorer"
-#: addon/globalPlugins/brailleExtender/__init__.py:90
+#: addon\globalPlugins\brailleExtender\__init__.py:92
msgid "Embedded objects"
msgstr "Indlejrede objekter"
-#: addon/globalPlugins/brailleExtender/__init__.py:91
+#: addon\globalPlugins\brailleExtender\__init__.py:93
msgid "Annotations"
msgstr "Annotationer"
-#: addon/globalPlugins/brailleExtender/__init__.py:92
+#: addon\globalPlugins\brailleExtender\__init__.py:94
msgid "Spelling errors"
msgstr "Stavefejl"
-#: addon/globalPlugins/brailleExtender/__init__.py:93
+#: addon\globalPlugins\brailleExtender\__init__.py:95
msgid "Tables"
msgstr "Tabeller"
-#: addon/globalPlugins/brailleExtender/__init__.py:94
+#: addon\globalPlugins\brailleExtender\__init__.py:96
msgid "Move in table"
msgstr "Flytte i tabel"
-#: addon/globalPlugins/brailleExtender/__init__.py:100
+#: addon\globalPlugins\brailleExtender\__init__.py:102
msgid "If pressed twice, presents the information in browse mode"
msgstr "Ved to tryk vises informationen i gennemsynstilstand"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon\globalPlugins\brailleExtender\__init__.py:254
msgid "Docu&mentation"
msgstr "Doku&mentation"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon\globalPlugins\brailleExtender\__init__.py:254
msgid "Opens the addon's documentation."
msgstr "Åbner tilfføjelsesprogrammets dokumentation."
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon\globalPlugins\brailleExtender\__init__.py:260
msgid "&Settings"
msgstr "&Indstillinger"
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon\globalPlugins\brailleExtender\__init__.py:260
msgid "Opens the addons' settings."
msgstr "Åbner tilføjelsesprogrammets indstillinger"
-#: addon/globalPlugins/brailleExtender/__init__.py:265
+#: addon\globalPlugins\brailleExtender\__init__.py:267
msgid "Braille &dictionaries"
msgstr "Punktskrift&ordbøger"
-#: addon/globalPlugins/brailleExtender/__init__.py:265
+#: addon\globalPlugins\brailleExtender\__init__.py:267
msgid "'Braille dictionaries' menu"
msgstr "Menuen 'Punktskriftordbøger'"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon\globalPlugins\brailleExtender\__init__.py:268
msgid "&Global dictionary"
msgstr "&Global ordbog"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon\globalPlugins\brailleExtender\__init__.py:268
msgid ""
"A dialog where you can set global dictionary by adding dictionary entries to "
"the list."
@@ -195,11 +195,11 @@ msgstr ""
"En dialog til at lave en global ordbog ved at tilføje ordbogselementer til "
"listen."
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon\globalPlugins\brailleExtender\__init__.py:270
msgid "&Table dictionary"
msgstr "&Tabel-specifik ordbog"
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon\globalPlugins\brailleExtender\__init__.py:270
msgid ""
"A dialog where you can set table-specific dictionary by adding dictionary "
"entries to the list."
@@ -207,11 +207,11 @@ msgstr ""
"En dialog, hvor der kan angives en tabel-specifick ordbog ved at tilføje "
"ordbogsemner til listen."
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon\globalPlugins\brailleExtender\__init__.py:272
msgid "Te&mporary dictionary"
msgstr "Mi&dlertidig ordbog"
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon\globalPlugins\brailleExtender\__init__.py:272
msgid ""
"A dialog where you can set temporary dictionary by adding dictionary entries "
"to the list."
@@ -219,119 +219,120 @@ msgstr ""
"En dialog, hvor der kan angives en midlertidig ordbog ved at tilføje "
"ordbogsemner til listen."
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon\globalPlugins\brailleExtender\__init__.py:275
msgid "&Quick launches"
msgstr "&Hurtigstartere"
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon\globalPlugins\brailleExtender\__init__.py:275
msgid "Quick launches configuration"
msgstr "Opsætning af Hurtigstartere"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon\globalPlugins\brailleExtender\__init__.py:281
msgid "&Profile editor"
msgstr "&Profileditor"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon\globalPlugins\brailleExtender\__init__.py:281
msgid "Profile editor"
msgstr "Profileditor"
-#: addon/globalPlugins/brailleExtender/__init__.py:285
+#: addon\globalPlugins\brailleExtender\__init__.py:287
msgid "Overview of the current input braille table"
msgstr "Oversigt over den aktuelle indtastningstabel"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon\globalPlugins\brailleExtender\__init__.py:289
msgid "Reload add-on"
msgstr "Genindlæs tilføjelsesprogram"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon\globalPlugins\brailleExtender\__init__.py:289
msgid "Reload this add-on."
msgstr "Genindlæs dette tilføjelsesprogram."
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon\globalPlugins\brailleExtender\__init__.py:291
msgid "&Check for update"
msgstr "&Søg efter opdateringer"
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon\globalPlugins\brailleExtender\__init__.py:291
msgid "Checks if update is available"
msgstr "Undersøger, om der er opdateringer"
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon\globalPlugins\brailleExtender\__init__.py:293
msgid "&Website"
msgstr "&Website"
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon\globalPlugins\brailleExtender\__init__.py:293
msgid "Open addon's website."
msgstr "Åbn tilføjelsesprogrammets website."
-#: addon/globalPlugins/brailleExtender/__init__.py:293
+#: addon\globalPlugins\brailleExtender\__init__.py:295
msgid "&Braille Extender"
msgstr "&Udvidelse til Punktskrift"
-#: addon/globalPlugins/brailleExtender/__init__.py:297
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon\globalPlugins\brailleExtender\__init__.py:310
+#: addon\globalPlugins\brailleExtender\dictionaries.py:343
msgid "Global dictionary"
msgstr "Global ordbog"
-#: addon/globalPlugins/brailleExtender/__init__.py:302
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon\globalPlugins\brailleExtender\__init__.py:315
+#: addon\globalPlugins\brailleExtender\dictionaries.py:343
msgid "Table dictionary"
msgstr "Tabel-specifik ordbog"
-#: addon/globalPlugins/brailleExtender/__init__.py:306
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon\globalPlugins\brailleExtender\__init__.py:319
+#: addon\globalPlugins\brailleExtender\dictionaries.py:343
msgid "Temporary dictionary"
msgstr "Midlertidig ordbog"
-#: addon/globalPlugins/brailleExtender/__init__.py:416
+#: addon\globalPlugins\brailleExtender\__init__.py:429
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
msgid "Character"
msgstr "Tegn"
-#: addon/globalPlugins/brailleExtender/__init__.py:417
+#: addon\globalPlugins\brailleExtender\__init__.py:430
msgid "Word"
msgstr "Ord"
-#: addon/globalPlugins/brailleExtender/__init__.py:418
+#: addon\globalPlugins\brailleExtender\__init__.py:431
msgid "Line"
msgstr "Linje"
-#: addon/globalPlugins/brailleExtender/__init__.py:419
+#: addon\globalPlugins\brailleExtender\__init__.py:432
msgid "Paragraph"
msgstr "Afsnit"
-#: addon/globalPlugins/brailleExtender/__init__.py:420
+#: addon\globalPlugins\brailleExtender\__init__.py:433
msgid "Page"
msgstr "Side"
-#: addon/globalPlugins/brailleExtender/__init__.py:421
+#: addon\globalPlugins\brailleExtender\__init__.py:434
msgid "Document"
msgstr "Dokument"
-#: addon/globalPlugins/brailleExtender/__init__.py:457
+#: addon\globalPlugins\brailleExtender\__init__.py:470
msgid "Not available here"
msgstr "Ikke tilgængelig her"
-#: addon/globalPlugins/brailleExtender/__init__.py:475
-#: addon/globalPlugins/brailleExtender/__init__.py:497
+#: addon\globalPlugins\brailleExtender\__init__.py:488
+#: addon\globalPlugins\brailleExtender\__init__.py:510
msgid "Not supported here or browse mode not enabled"
msgstr "Understøttes ikke her eller gennemsynstilstand ikke slået til"
-#: addon/globalPlugins/brailleExtender/__init__.py:477
+#: addon\globalPlugins\brailleExtender\__init__.py:490
msgid "Select previous rotor setting"
msgstr "Vælg forrige rotorindstilling"
-#: addon/globalPlugins/brailleExtender/__init__.py:478
+#: addon\globalPlugins\brailleExtender\__init__.py:491
msgid "Select next rotor setting"
msgstr "Vælg næste rotorindstilling"
-#: addon/globalPlugins/brailleExtender/__init__.py:526
+#: addon\globalPlugins\brailleExtender\__init__.py:539
msgid "Move to previous item depending rotor setting"
msgstr "Flytter til forrige element afhængig af rotor-indstilling"
-#: addon/globalPlugins/brailleExtender/__init__.py:527
+#: addon\globalPlugins\brailleExtender\__init__.py:540
msgid "Move to next item depending rotor setting"
msgstr "Flytter til næste element afhængig af rotor-indstilling"
-#: addon/globalPlugins/brailleExtender/__init__.py:535
+#: addon\globalPlugins\brailleExtender\__init__.py:548
msgid ""
"Varies depending on rotor setting. Eg: in object mode, it's similar to NVDA"
"+enter"
@@ -339,98 +340,115 @@ msgstr ""
"Varierer alt efter rotor-indstilling. Fx: I objekt-tilstand svarer det til "
"NVDA+enter"
-#: addon/globalPlugins/brailleExtender/__init__.py:538
+#: addon\globalPlugins\brailleExtender\__init__.py:551
msgid "Move to previous item using rotor setting"
msgstr "Flytter til forrige element alt efter rotor-indstilling"
-#: addon/globalPlugins/brailleExtender/__init__.py:539
+#: addon\globalPlugins\brailleExtender\__init__.py:552
msgid "Move to next item using rotor setting"
msgstr "Flytter til næste element alt efter rotor-indstilling"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
+#: addon\globalPlugins\brailleExtender\__init__.py:556
#, python-format
msgid "Braille keyboard %s"
msgstr "Punktskrifttastatur %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon\globalPlugins\brailleExtender\__init__.py:556
+#: addon\globalPlugins\brailleExtender\__init__.py:579
msgid "locked"
msgstr "låst"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon\globalPlugins\brailleExtender\__init__.py:556
+#: addon\globalPlugins\brailleExtender\__init__.py:579
msgid "unlocked"
msgstr "låst op"
-#: addon/globalPlugins/brailleExtender/__init__.py:544
+#: addon\globalPlugins\brailleExtender\__init__.py:557
msgid "Lock/unlock braille keyboard"
msgstr "Lås/lås op for punktskrifttastatur"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#, python-format
-msgid "Dots 7 and 8: %s"
-msgstr "Punkterne 7 og 8: %s"
+#: addon\globalPlugins\brailleExtender\__init__.py:561
+#: addon\globalPlugins\brailleExtender\__init__.py:567
+#: addon\globalPlugins\brailleExtender\__init__.py:574
+#: addon\globalPlugins\brailleExtender\__init__.py:585
+#: addon\globalPlugins\brailleExtender\__init__.py:653
+#: addon\globalPlugins\brailleExtender\__init__.py:659
+msgid "enabled"
+msgstr "slået til"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
+#: addon\globalPlugins\brailleExtender\__init__.py:561
+#: addon\globalPlugins\brailleExtender\__init__.py:567
+#: addon\globalPlugins\brailleExtender\__init__.py:574
+#: addon\globalPlugins\brailleExtender\__init__.py:585
+#: addon\globalPlugins\brailleExtender\__init__.py:653
+#: addon\globalPlugins\brailleExtender\__init__.py:659
msgid "disabled"
msgstr "slået fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
-msgid "enabled"
-msgstr "slået til"
+#: addon\globalPlugins\brailleExtender\__init__.py:562
+#, python-format
+msgid "One hand mode %s"
+msgstr "Enhåndstilstand %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:550
+#: addon\globalPlugins\brailleExtender\__init__.py:563
+#, fuzzy
+#| msgid "Enable/disable BRF mode"
+msgid "Enable/disable one hand mode feature"
+msgstr "Slå BRF-tilstand til/fra"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:567
+#, python-format
+msgid "Dots 7 and 8: %s"
+msgstr "Punkterne 7 og 8: %s"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:569
msgid "Hide/show dots 7 and 8"
msgstr "Skjul/vis punkt 7 og 8"
-#: addon/globalPlugins/brailleExtender/__init__.py:555
+#: addon\globalPlugins\brailleExtender\__init__.py:574
#, python-format
msgid "BRF mode: %s"
msgstr "BRF-tilstand: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:556
+#: addon\globalPlugins\brailleExtender\__init__.py:575
msgid "Enable/disable BRF mode"
msgstr "Slå BRF-tilstand til/fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon\globalPlugins\brailleExtender\__init__.py:579
#, python-format
msgid "Modifier keys %s"
msgstr "Modifikationstaster %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:561
+#: addon\globalPlugins\brailleExtender\__init__.py:580
msgid "Lock/unlock modifiers keys"
msgstr "Tryk/slip modifikationstaster"
-#: addon/globalPlugins/brailleExtender/__init__.py:567
+#: addon\globalPlugins\brailleExtender\__init__.py:586
msgid "Enable/disable Attribra"
msgstr "Slå Attribra til/fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:577
+#: addon\globalPlugins\brailleExtender\__init__.py:596
msgid "Quick access to the \"say current line while scrolling in\" option"
msgstr "Hurtig adgang til indstillingen \"sig aktuel linje under rul i\""
-#: addon/globalPlugins/brailleExtender/__init__.py:582
+#: addon\globalPlugins\brailleExtender\__init__.py:601
msgid "Speech on"
msgstr "Tale til"
-#: addon/globalPlugins/brailleExtender/__init__.py:585
+#: addon\globalPlugins\brailleExtender\__init__.py:604
msgid "Speech off"
msgstr "Tale fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:587
+#: addon\globalPlugins\brailleExtender\__init__.py:606
msgid "Toggle speech on or off"
msgstr "Slår tale til eller fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:595
+#: addon\globalPlugins\brailleExtender\__init__.py:614
msgid "No extra info for this element"
msgstr "Ingen yderligere oplysninger om dette emne"
#. Translators: Input help mode message for report extra infos command.
-#: addon/globalPlugins/brailleExtender/__init__.py:599
+#: addon\globalPlugins\brailleExtender\__init__.py:618
msgid ""
"Reports some extra infos for the current element. For example, the URL on a "
"link"
@@ -438,35 +456,35 @@ msgstr ""
"Giver yderligere oplysninger om det aktuelle element. Det kan fx være "
"adressen på et link"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon\globalPlugins\brailleExtender\__init__.py:623
msgid " Input table"
msgstr "Indtastningstabel"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon\globalPlugins\brailleExtender\__init__.py:623
msgid "Output table"
-msgstr "Oversættelsestabel"
+msgstr "Visningstabel"
-#: addon/globalPlugins/brailleExtender/__init__.py:606
+#: addon\globalPlugins\brailleExtender\__init__.py:625
#, python-format
msgid "Table overview (%s)"
msgstr "Tabelvisning (%s)"
-#: addon/globalPlugins/brailleExtender/__init__.py:607
+#: addon\globalPlugins\brailleExtender\__init__.py:626
msgid "Display an overview of current input braille table"
msgstr ""
"Viser en oversigt over den aktuelt valgte punktskrifttabel til indtastning"
-#: addon/globalPlugins/brailleExtender/__init__.py:612
-#: addon/globalPlugins/brailleExtender/__init__.py:620
-#: addon/globalPlugins/brailleExtender/__init__.py:627
+#: addon\globalPlugins\brailleExtender\__init__.py:631
+#: addon\globalPlugins\brailleExtender\__init__.py:639
+#: addon\globalPlugins\brailleExtender\__init__.py:646
msgid "No text selection"
msgstr "Ingen tekst valgt"
-#: addon/globalPlugins/brailleExtender/__init__.py:613
+#: addon\globalPlugins\brailleExtender\__init__.py:632
msgid "Unicode Braille conversion"
msgstr "Unicode punktskriftkonvertering"
-#: addon/globalPlugins/brailleExtender/__init__.py:614
+#: addon\globalPlugins\brailleExtender\__init__.py:633
msgid ""
"Convert the text selection in unicode braille and display it in a browseable "
"message"
@@ -474,11 +492,11 @@ msgstr ""
"Konvertér den valgte tekst til unicode punktskrift og vis teksten i en "
"navigérbar meddelelse"
-#: addon/globalPlugins/brailleExtender/__init__.py:621
+#: addon\globalPlugins\brailleExtender\__init__.py:640
msgid "Braille Unicode to cell descriptions"
msgstr "Punktskrift Unicode til beskrivelser af punktcelle"
-#: addon/globalPlugins/brailleExtender/__init__.py:622
+#: addon\globalPlugins\brailleExtender\__init__.py:641
msgid ""
"Convert text selection in braille cell descriptions and display it in a "
"browseable message"
@@ -486,11 +504,11 @@ msgstr ""
"Konvertér valgte tekst til beskrivelse af punktceller og viser den i en "
"navigérbar meddelelse"
-#: addon/globalPlugins/brailleExtender/__init__.py:629
+#: addon\globalPlugins\brailleExtender\__init__.py:648
msgid "Cell descriptions to braille Unicode"
msgstr "Beskrivelse af punktceller til punktskrift Unicode"
-#: addon/globalPlugins/brailleExtender/__init__.py:630
+#: addon\globalPlugins\brailleExtender\__init__.py:649
msgid ""
"Braille cell description to Unicode Braille. E.g.: in a edit field type "
"'125-24-0-1-123-123'. Then select this text and execute this command"
@@ -498,81 +516,101 @@ msgstr ""
"Beskrivelse af punktcelle til Unicode punktskrift. I et editfelt kan du fx "
"skrive '125-24-0-1-123-123'. Vælg derefter teksten og udfør denne kommando"
-#: addon/globalPlugins/brailleExtender/__init__.py:634
+#: addon\globalPlugins\brailleExtender\__init__.py:654
+#, python-format
+msgid "Advanced braille input mode %s"
+msgstr "Avanceret indtastningstilstand til punktskrift %s"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:655
+#, fuzzy
+#| msgid "Enable/disable BRF mode"
+msgid "Enable/disable the advanced input mode"
+msgstr "Slå BRF-tilstand til/fra"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:660
+#, python-format
+msgid "Description of undefined characters %s"
+msgstr "Beskrivelse af ikke-defineredd tegn %s"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:662
+msgid "Enable/disable description of undefined characters"
+msgstr "Slå beskrivelse af ikke-definerede tegn til og fra"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:666
msgid "Get the cursor position of text"
msgstr "Oplys markørens placering i teksten"
-#: addon/globalPlugins/brailleExtender/__init__.py:660
+#: addon\globalPlugins\brailleExtender\__init__.py:692
msgid "Hour and date with autorefresh"
msgstr "Tid og dato med automatisk opdatering"
-#: addon/globalPlugins/brailleExtender/__init__.py:673
+#: addon\globalPlugins\brailleExtender\__init__.py:705
msgid "Autoscroll stopped"
msgstr "Autorul stoppet"
-#: addon/globalPlugins/brailleExtender/__init__.py:680
+#: addon\globalPlugins\brailleExtender\__init__.py:712
msgid "Unable to start autoscroll. More info in NVDA log"
msgstr "Autorul kunne ikke starte. Yderligere oplysninger i NVDA loggen"
-#: addon/globalPlugins/brailleExtender/__init__.py:685
+#: addon\globalPlugins\brailleExtender\__init__.py:717
msgid "Enable/disable autoscroll"
msgstr "Slå autorul til/fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:700
+#: addon\globalPlugins\brailleExtender\__init__.py:732
msgid "Increase the master volume"
msgstr "Skru op for systemlydstyrke"
-#: addon/globalPlugins/brailleExtender/__init__.py:717
+#: addon\globalPlugins\brailleExtender\__init__.py:749
msgid "Decrease the master volume"
msgstr "Skru ned for systemlydstyrke"
-#: addon/globalPlugins/brailleExtender/__init__.py:723
+#: addon\globalPlugins\brailleExtender\__init__.py:755
msgid "Muted sound"
msgstr "Lyd slået fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:725
+#: addon\globalPlugins\brailleExtender\__init__.py:757
#, python-format
msgid "Unmuted sound (%3d%%)"
msgstr "Lyd slået til (%3d%%)"
-#: addon/globalPlugins/brailleExtender/__init__.py:731
+#: addon\globalPlugins\brailleExtender\__init__.py:763
msgid "Mute or unmute sound"
msgstr "Slå lyd til eller fra"
-#: addon/globalPlugins/brailleExtender/__init__.py:736
+#: addon\globalPlugins\brailleExtender\__init__.py:768
#, python-format
msgid "Show the %s documentation"
msgstr "Vis %s dokumentationen"
-#: addon/globalPlugins/brailleExtender/__init__.py:774
+#: addon\globalPlugins\brailleExtender\__init__.py:806
msgid "No such file or directory"
msgstr "Denne fil eller mappe findes ikke"
-#: addon/globalPlugins/brailleExtender/__init__.py:776
+#: addon\globalPlugins\brailleExtender\__init__.py:808
msgid "Opens a custom program/file. Go to settings to define them"
msgstr "Åbner valgfrigt program/fil. Angiv dem i indstillinger"
-#: addon/globalPlugins/brailleExtender/__init__.py:783
+#: addon\globalPlugins\brailleExtender\__init__.py:815
#, python-format
msgid "Check for %s updates, and starts the download if there is one"
msgstr ""
"Søger efter %s opdateringer og påbegynder hentningen, hvis der findes én"
-#: addon/globalPlugins/brailleExtender/__init__.py:813
+#: addon\globalPlugins\brailleExtender\__init__.py:845
msgid "Increase autoscroll delay"
msgstr "Sæt forsinkelse ved autorul op"
-#: addon/globalPlugins/brailleExtender/__init__.py:814
+#: addon\globalPlugins\brailleExtender\__init__.py:846
msgid "Decrease autoscroll delay"
msgstr "Sæt forsinkelse ved autorul ned"
-#: addon/globalPlugins/brailleExtender/__init__.py:818
-#: addon/globalPlugins/brailleExtender/__init__.py:836
+#: addon\globalPlugins\brailleExtender\__init__.py:850
+#: addon\globalPlugins\brailleExtender\__init__.py:868
msgid "Please use NVDA 2017.3 minimum for this feature"
msgstr "Brug venligst som minimum NVDA 2017.3 til denne funktion "
-#: addon/globalPlugins/brailleExtender/__init__.py:820
-#: addon/globalPlugins/brailleExtender/__init__.py:838
+#: addon\globalPlugins\brailleExtender\__init__.py:852
+#: addon\globalPlugins\brailleExtender\__init__.py:870
msgid ""
"You must choose at least two tables for this feature. Please fill in the "
"settings"
@@ -580,49 +618,49 @@ msgstr ""
"Du skal vælge mindst to tabeller til denne funktion. Udfyld venligst "
"indstillingerne"
-#: addon/globalPlugins/brailleExtender/__init__.py:827
+#: addon\globalPlugins\brailleExtender\__init__.py:859
#, python-format
msgid "Input: %s"
msgstr "Indtastning: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:831
+#: addon\globalPlugins\brailleExtender\__init__.py:863
msgid "Switch between his favorite input braille tables"
msgstr "Skift imellem foretrukne indtastningstabeller"
-#: addon/globalPlugins/brailleExtender/__init__.py:847
+#: addon\globalPlugins\brailleExtender\__init__.py:879
#, python-format
msgid "Output: %s"
-msgstr "Oversættelse: %s"
+msgstr "Visning: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:850
+#: addon\globalPlugins\brailleExtender\__init__.py:882
msgid "Switch between his favorite output braille tables"
msgstr "Skift imellem foretrukne oversættelsestabeller"
-#: addon/globalPlugins/brailleExtender/__init__.py:856
+#: addon\globalPlugins\brailleExtender\__init__.py:888
#, python-brace-format
msgid "I⣿O:{I}"
msgstr "I⣿O:{I}"
-#: addon/globalPlugins/brailleExtender/__init__.py:857
+#: addon\globalPlugins\brailleExtender\__init__.py:889
#, python-brace-format
msgid "Input and output: {I}."
msgstr "Indtastning og oversættelse: {I}."
-#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon\globalPlugins\brailleExtender\__init__.py:891
#, python-brace-format
msgid "I:{I} ⣿ O: {O}"
msgstr "I:{I} ⣿ O: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:860
+#: addon\globalPlugins\brailleExtender\__init__.py:892
#, python-brace-format
msgid "Input: {I}; Output: {O}"
msgstr "Indtastning: {I}; Oversættelse: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:864
+#: addon\globalPlugins\brailleExtender\__init__.py:896
msgid "Announce the current input and output braille tables"
msgstr "Oplyser aktuelt valgte punkttabeller til indskrivning og visning "
-#: addon/globalPlugins/brailleExtender/__init__.py:869
+#: addon\globalPlugins\brailleExtender\__init__.py:901
msgid ""
"Gives the Unicode value of the character where the cursor is located and the "
"decimal, binary and octal equivalent."
@@ -630,7 +668,7 @@ msgstr ""
"Oplyser Unicode-værdien for tegnet hvor cursoren er placeret samt den samme "
"værdi i decimal, binær og oktal."
-#: addon/globalPlugins/brailleExtender/__init__.py:877
+#: addon\globalPlugins\brailleExtender\__init__.py:909
msgid ""
"Show the output speech for selected text in braille. Useful for emojis for "
"example"
@@ -638,110 +676,110 @@ msgstr ""
"Vis taleoutput for den valgte tekst på punkt. Nyttigt for eksempel ved "
"emojier"
-#: addon/globalPlugins/brailleExtender/__init__.py:881
+#: addon\globalPlugins\brailleExtender\__init__.py:913
msgid "No shortcut performed from a braille display"
msgstr "Ingen genvej udført fra punktdisplay"
-#: addon/globalPlugins/brailleExtender/__init__.py:885
+#: addon\globalPlugins\brailleExtender\__init__.py:917
msgid "Repeat the last shortcut performed from a braille display"
msgstr "Udfør seneste genvej fra punktdisplay igen"
-#: addon/globalPlugins/brailleExtender/__init__.py:899
+#: addon\globalPlugins\brailleExtender\__init__.py:931
#, python-format
msgid "%s reloaded"
msgstr "%s genindlæst"
-#: addon/globalPlugins/brailleExtender/__init__.py:911
+#: addon\globalPlugins\brailleExtender\__init__.py:943
#, python-format
msgid "Reload %s"
msgstr "Genindlæs %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:914
+#: addon\globalPlugins\brailleExtender\__init__.py:946
msgid "Reload the first braille display defined in settings"
msgstr "Genindlæs det første punktdisplay angivet i indstillinger"
-#: addon/globalPlugins/brailleExtender/__init__.py:917
+#: addon\globalPlugins\brailleExtender\__init__.py:949
msgid "Reload the second braille display defined in settings"
msgstr "Genindlæs det andet punktdisplay angivet i indstillinger"
-#: addon/globalPlugins/brailleExtender/__init__.py:923
+#: addon\globalPlugins\brailleExtender\__init__.py:955
msgid "No braille display specified. No reload to do"
msgstr "Ingen punktdisplay angivet. Ingen renindlæsning gennemført"
-#: addon/globalPlugins/brailleExtender/__init__.py:960
+#: addon\globalPlugins\brailleExtender\__init__.py:992
msgid "WIN"
msgstr "WIN"
-#: addon/globalPlugins/brailleExtender/__init__.py:961
+#: addon\globalPlugins\brailleExtender\__init__.py:993
msgid "CTRL"
msgstr "CTRL"
-#: addon/globalPlugins/brailleExtender/__init__.py:962
+#: addon\globalPlugins\brailleExtender\__init__.py:994
msgid "SHIFT"
msgstr "SHIFT"
-#: addon/globalPlugins/brailleExtender/__init__.py:963
+#: addon\globalPlugins\brailleExtender\__init__.py:995
msgid "ALT"
msgstr "ALT"
-#: addon/globalPlugins/brailleExtender/__init__.py:1065
+#: addon\globalPlugins\brailleExtender\__init__.py:1097
msgid "Keyboard shortcut cancelled"
msgstr "Tastaturgenvej annulleret"
#. /* docstrings for modifier keys */
-#: addon/globalPlugins/brailleExtender/__init__.py:1073
+#: addon\globalPlugins\brailleExtender\__init__.py:1105
msgid "Emulate pressing down "
-msgstr "Svarer til at trykke"
+msgstr "Svarer til at trykke "
-#: addon/globalPlugins/brailleExtender/__init__.py:1074
+#: addon\globalPlugins\brailleExtender\__init__.py:1106
msgid " on the system keyboard"
-msgstr "på systemets tastatur"
+msgstr " på systemets tastatur"
-#: addon/globalPlugins/brailleExtender/__init__.py:1130
+#: addon\globalPlugins\brailleExtender\__init__.py:1162
msgid "Current braille view saved"
msgstr "Det viste på punktdisplayet er blevet gemt"
-#: addon/globalPlugins/brailleExtender/__init__.py:1133
+#: addon\globalPlugins\brailleExtender\__init__.py:1165
msgid "Buffer cleaned"
msgstr "Buffer renset"
-#: addon/globalPlugins/brailleExtender/__init__.py:1134
+#: addon\globalPlugins\brailleExtender\__init__.py:1166
msgid "Save the current braille view. Press twice quickly to clean the buffer"
msgstr ""
"Gem det, der vises på punktdisplayet. Tryk 2 gange hurtigt for at tømme "
"bufferen"
-#: addon/globalPlugins/brailleExtender/__init__.py:1139
+#: addon\globalPlugins\brailleExtender\__init__.py:1171
msgid "View saved"
msgstr "Vis gemte"
-#: addon/globalPlugins/brailleExtender/__init__.py:1140
+#: addon\globalPlugins\brailleExtender\__init__.py:1172
msgid "Buffer empty"
msgstr "Buffer er tom"
-#: addon/globalPlugins/brailleExtender/__init__.py:1141
+#: addon\globalPlugins\brailleExtender\__init__.py:1173
msgid "Show the saved braille view through a flash message"
msgstr "Vis det gemte punktdisplay-billede ved hjælp af en flashmeddelelse"
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon\globalPlugins\brailleExtender\__init__.py:1207
msgid "Pause"
msgstr "Pause"
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon\globalPlugins\brailleExtender\__init__.py:1207
msgid "Resume"
msgstr "Genoptag"
-#: addon/globalPlugins/brailleExtender/__init__.py:1217
-#: addon/globalPlugins/brailleExtender/__init__.py:1224
+#: addon\globalPlugins\brailleExtender\__init__.py:1249
+#: addon\globalPlugins\brailleExtender\__init__.py:1256
#, python-format
msgid "Auto test type %d"
msgstr "Autotest type %d"
-#: addon/globalPlugins/brailleExtender/__init__.py:1234
+#: addon\globalPlugins\brailleExtender\__init__.py:1266
msgid "Auto test stopped"
msgstr "Autotest stoppet"
-#: addon/globalPlugins/brailleExtender/__init__.py:1244
+#: addon\globalPlugins\brailleExtender\__init__.py:1276
msgid ""
"Auto test started. Use the up and down arrow keys to change speed. Use the "
"left and right arrow keys to change test type. Use space key to pause or "
@@ -752,92 +790,352 @@ msgstr ""
"Mellemrumstasten til at sætte testen på pause eller genoptage den. Brug "
"Escape til at afbryde"
-#: addon/globalPlugins/brailleExtender/__init__.py:1246
+#: addon\globalPlugins\brailleExtender\__init__.py:1278
msgid "Auto test"
msgstr "Autotest"
-#: addon/globalPlugins/brailleExtender/__init__.py:1251
+#: addon\globalPlugins\brailleExtender\__init__.py:1283
msgid "Add dictionary entry or see a dictionary"
msgstr "Tilføj et ordbogselement eller se en ordbog"
-#: addon/globalPlugins/brailleExtender/__init__.py:1252
+#: addon\globalPlugins\brailleExtender\__init__.py:1284
msgid "Add a entry in braille dictionary"
msgstr "Føj element til punktskriftordbog"
#. Add-on summary, usually the user visible name of the addon.
#. Translators: Summary for this add-on to be shown on installation and add-on information.
-#: addon/globalPlugins/brailleExtender/__init__.py:1299
-#: addon/globalPlugins/brailleExtender/dictionaries.py:111
-#: addon/globalPlugins/brailleExtender/dictionaries.py:367
-#: addon/globalPlugins/brailleExtender/dictionaries.py:374
-#: addon/globalPlugins/brailleExtender/dictionaries.py:378
-#: addon/globalPlugins/brailleExtender/dictionaries.py:382
-#: addon/globalPlugins/brailleExtender/settings.py:33 buildVars.py:24
+#: addon\globalPlugins\brailleExtender\__init__.py:1334
+#: addon\globalPlugins\brailleExtender\dictionaries.py:112
+#: addon\globalPlugins\brailleExtender\dictionaries.py:368
+#: addon\globalPlugins\brailleExtender\dictionaries.py:375
+#: addon\globalPlugins\brailleExtender\dictionaries.py:379
+#: addon\globalPlugins\brailleExtender\dictionaries.py:383
+#: addon\globalPlugins\brailleExtender\settings.py:33
+#: addon\globalPlugins\brailleExtender\settings.py:411 buildVars.py:24
msgid "Braille Extender"
msgstr "Udvidelse til Punktskrift"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:33
-#, python-format
-msgid "%s braille display"
-msgstr "%s punktdisplay"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+msgid "HUC8"
+msgstr "HUC8"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:34
-#, python-format
-msgid "profile loaded: %s"
-msgstr "profil indlæst: %s"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:65
+msgid "Hexadecimal"
+msgstr "Hexadecimal"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:66
+msgid "Decimal"
+msgstr "Decimal"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:67
+msgid "Octal"
+msgstr "Octal"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:68
+#| msgid "Dictionary"
+msgid "Binary"
+msgstr "Binær"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:46
+msgid "Representation of undefined characters"
+msgstr "Repræsentation af ikke-defineredd tegn"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:48
+msgid ""
+"The extension allows you to customize how an undefined character should be "
+"represented within a braille table. To do so, go to the braille table "
+"settings. You can choose between the following representations:"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:52
+msgid ""
+"You can also combine this option with the “describe the character if "
+"possible” setting."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:54
+msgid "Notes:"
+msgstr "Bemærkninger:"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:56
+msgid ""
+"To distinguish the undefined set of characters while maximizing space, the "
+"best combination is the usage of the HUC8 representation without checking "
+"the “describe character if possible” option."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:57
+#, python-brace-format
+msgid "To learn more about the HUC representation, see {url}"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:58
+msgid ""
+"Keep in mind that definitions in tables and those in your table dictionaries "
+"take precedence over character descriptions, which also take precedence over "
+"the chosen representation for undefined characters."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:61
+msgid "Getting Current Character Info"
+msgstr "Finder info for aktuelle tegn"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:63
+msgid ""
+"This feature allows you to obtain various information regarding the "
+"character under the cursor using the current input braille table, such as:"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:65
+msgid ""
+"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
+"values; A description of the character if possible; - The Unicode Braille "
+"representation and the Braille dot pattern."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:67
+msgid ""
+"Pressing the defined gesture associated to this function once shows you the "
+"information in a flash message and a double-press displays the same "
+"information in a virtual NVDA buffer."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:69
+msgid ""
+"On supported displays the defined gesture is ⡉+space. No system gestures are "
+"defined by default."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:71
+#, python-brace-format
+msgid ""
+"For example, for the '{chosenChar}' character, we will get the following "
+"information:"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:74
+msgid "Advanced Braille Input"
+msgstr "Avanceret indtastning i punktskrift"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:76
+msgid ""
+"This feature allows you to enter any character from its HUC8 representation "
+"or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to "
+"develop abbreviations. To use this function, enter the advanced input mode "
+"and then enter the desired pattern. Default gestures: NVDA+Windows+i or ⡊"
+"+space (on supported displays). Press the same gesture to exit this mode. "
+"Alternatively, an option allows you to automatically exit this mode after "
+"entering a single pattern. "
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:80
+msgid "Specify the basis as follows"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+msgid "⠭ or ⠓"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+msgid "for a hexadecimal value"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:83
+msgid "for a decimal value"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:84
+msgid "for an octal value"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:87
+msgid ""
+"Enter the value of the character according to the previously selected basis."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:88
+msgid "Press Space to validate."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:91
+msgid ""
+"For abbreviations, you must first add them in the dialog box - Advanced mode "
+"dictionaries -. Then, you just have to enter your abbreviation and press "
+"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:93
+msgid "Here are some examples of sequences to be entered for given characters:"
+msgstr ""
-#: addon/globalPlugins/brailleExtender/addonDoc.py:51
+#: addon\globalPlugins\brailleExtender\addonDoc.py:97
+msgid "Note: the HUC6 input is currently not supported."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:100
+msgid "One-hand mode"
+msgstr "Enhåndstilstand"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:102
+msgid ""
+"This feature allows you to compose a cell in several steps. This can be "
+"activated in the general settings of the extension's preferences or on the "
+"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
+"Three input methods are available."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:103
+msgid "Method #1: fill a cell in 2 stages on both sides"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:105
+msgid ""
+"With this method, type the left side dots, then the right side dots. If one "
+"side is empty, type the dots correspondig to the opposite side twice, or "
+"type the dots corresponding to the non-empty side in 2 steps."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:106
+#: addon\globalPlugins\brailleExtender\addonDoc.py:115
+msgid "For example:"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:108
+msgid "For ⠛: press dots 1-2 then dots 4-5."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:109
+msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:110
+msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:112
+msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:114
+msgid ""
+"Using this method, you can compose a cell with one hand, regardless of which "
+"side of the Braille keyboard you choose. The first step allows you to enter "
+"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
+"An empty cell will be obtained by pressing the space key twice."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:117
+msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:118
+msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:119
+msgid "For ⠘: press space then 1-2, or space then dots 4-5."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:121
+msgid ""
+"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
+"validate the character)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:126
+msgid "Dots 1-2, then dots 4-5, then space."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:127
+msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:128
+msgid "Dot 1, then dots 2-4-5, then space."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:129
+msgid "Dots 1-2-4, then dot 5, then space."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:130
+msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:131
+msgid "Etc."
+msgstr "Etc."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:150
+#, fuzzy
+#| msgid "Docu&mentation"
+msgid "Documentation"
+msgstr "Doku&mentation"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:160
+msgid "Driver loaded"
+msgstr "Driver indlæst"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:161
+msgid "Profile"
+msgstr "Profil"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:175
msgid "Simple keys"
msgstr "Enkle taster"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:53
+#: addon\globalPlugins\brailleExtender\addonDoc.py:177
msgid "Usual shortcuts"
msgstr "Almindelige genveje"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:55
+#: addon\globalPlugins\brailleExtender\addonDoc.py:179
msgid "Standard NVDA commands"
msgstr "Standard NVDA-kommandoer"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:57
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon\globalPlugins\brailleExtender\addonDoc.py:182
+#: addon\globalPlugins\brailleExtender\settings.py:828
msgid "Modifier keys"
msgstr "Modifikationstaster"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:59
+#: addon\globalPlugins\brailleExtender\addonDoc.py:185
msgid "Quick navigation keys"
msgstr "Lyntaster til navigering"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:61
+#: addon\globalPlugins\brailleExtender\addonDoc.py:189
msgid "Rotor feature"
msgstr "Rotorfunktion"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:63
+#: addon\globalPlugins\brailleExtender\addonDoc.py:197
msgid "Gadget commands"
msgstr "Værktøjskommandoer"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:65
+#: addon\globalPlugins\brailleExtender\addonDoc.py:210
msgid "Shortcuts defined outside add-on"
msgstr "Genveje defineret uden for tilføjelsesprogrammet"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:85
+#: addon\globalPlugins\brailleExtender\addonDoc.py:238
msgid "Keyboard configurations provided"
msgstr "Tastaturkonfigurationer angivet"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:87
+#: addon\globalPlugins\brailleExtender\addonDoc.py:241
msgid "Keyboard configurations are"
msgstr "Tastaturkonfigurationer er"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:93
+#: addon\globalPlugins\brailleExtender\addonDoc.py:250
msgid "Warning:"
msgstr "Advarsel:"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:94
+#: addon\globalPlugins\brailleExtender\addonDoc.py:252
msgid "BrailleExtender has no gesture map yet for your braille display."
msgstr ""
"Udvidelse til Punktskrift har endnu intet sæt af bevægelser til dit "
"punktdisplay."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:95
+#: addon\globalPlugins\brailleExtender\addonDoc.py:255
msgid ""
"However, you can still assign your own gestures in the \"Input Gestures\" "
"dialog (under Preferences menu)."
@@ -845,164 +1143,228 @@ msgstr ""
"Du kan imidlertid tildele dine egne bevægelser i dialogen \"Inputbevægelser"
"\" (under menuen Opsætning)."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:97
+#: addon\globalPlugins\brailleExtender\addonDoc.py:259
msgid "Add-on gestures on the system keyboard"
msgstr "Tilføjelsens bevægelser på systemtastaturet"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:118
+#: addon\globalPlugins\brailleExtender\addonDoc.py:282
msgid "Arabic"
msgstr "Arabisk"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:119
+#: addon\globalPlugins\brailleExtender\addonDoc.py:283
msgid "Croatian"
msgstr "Kroatisk"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:120
+#: addon\globalPlugins\brailleExtender\addonDoc.py:284
+msgid "Danish"
+msgstr "Dansk"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:285
+msgid "French"
+msgstr "Fransk"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:286
msgid "German"
msgstr "Tysk"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:121
+#: addon\globalPlugins\brailleExtender\addonDoc.py:287
msgid "Hebrew"
msgstr "Hebraisk"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:122
+#: addon\globalPlugins\brailleExtender\addonDoc.py:288
msgid "Persian"
msgstr "Persisk"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:123
+#: addon\globalPlugins\brailleExtender\addonDoc.py:289
msgid "Polish"
msgstr "Polsk"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:124
+#: addon\globalPlugins\brailleExtender\addonDoc.py:290
msgid "Russian"
msgstr "Russisk"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:126
+#: addon\globalPlugins\brailleExtender\addonDoc.py:293
msgid "Copyrights and acknowledgements"
msgstr "Copyright og anerkendelser"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:128
+#: addon\globalPlugins\brailleExtender\addonDoc.py:299
msgid "and other contributors"
msgstr "og andre bidragydere"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:132
+#: addon\globalPlugins\brailleExtender\addonDoc.py:303
msgid "Translators"
msgstr "Oversættere"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:138
+#: addon\globalPlugins\brailleExtender\addonDoc.py:313
msgid "Code contributions and other"
msgstr "Bidrag til koden og andre"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:138
+#: addon\globalPlugins\brailleExtender\addonDoc.py:315
msgid "Additional third party copyrighted code is included:"
msgstr "Yderliere ophavsretligt beskyttet kode fra tredjeparter er inkluderet:"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:141
+#: addon\globalPlugins\brailleExtender\addonDoc.py:321
msgid "Thanks also to"
msgstr "Også tak til"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:143
+#: addon\globalPlugins\brailleExtender\addonDoc.py:323
msgid "And thank you very much for all your feedback and comments."
msgstr "Og mange tak for alle tilbagemeldinger og kommentarer."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:145
+#: addon\globalPlugins\brailleExtender\addonDoc.py:327
#, python-format
msgid "%s's documentation"
msgstr "%s's dokumentation"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:161
+#: addon\globalPlugins\brailleExtender\addonDoc.py:346
#, python-format
msgid "Emulates pressing %s on the system keyboard"
msgstr "Svarer til at trykke %s på systemets tastatur"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:168
+#: addon\globalPlugins\brailleExtender\addonDoc.py:357
msgid "description currently unavailable for this shortcut"
msgstr "Beskrivelse i øjeblikket ikke tilgængelig for denne genvej"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:186
+#: addon\globalPlugins\brailleExtender\addonDoc.py:377
msgid "caps lock"
msgstr "caps lock"
-#: addon/globalPlugins/brailleExtender/configBE.py:40
-#: addon/globalPlugins/brailleExtender/configBE.py:47
-#: addon/globalPlugins/brailleExtender/configBE.py:61
-#: addon/globalPlugins/brailleExtender/settings.py:421
+#: addon\globalPlugins\brailleExtender\configBE.py:55
+#, fuzzy
+#| msgid "Custom braille tables"
+msgid "Use braille table behavior"
+msgstr "Tilpassede punkttabeller"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:56
+msgid "Dots 1-8 (⣿)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:57
+msgid "Dots 1-6 (⠿)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:58
+msgid "Empty cell (⠀)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:59
+msgid "Other dot pattern (e.g.: 6-123456)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:60
+msgid "Question mark (depending output table)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:61
+msgid "Other sign/pattern (e.g.: \\, ??)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:62
+msgid "Hexadecimal, Liblouis style"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:63
+msgid "Hexadecimal, HUC8"
+msgstr "Hexadecimal, HUC8"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:64
+msgid "Hexadecimal, HUC6"
+msgstr "Hexadecimal, HUC6"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:71
+#: addon\globalPlugins\brailleExtender\configBE.py:78
+#: addon\globalPlugins\brailleExtender\configBE.py:92
+#: addon\globalPlugins\brailleExtender\settings.py:449
msgid "none"
msgstr "ingen"
-#: addon/globalPlugins/brailleExtender/configBE.py:41
+#: addon\globalPlugins\brailleExtender\configBE.py:72
msgid "braille only"
msgstr "kun punkt"
-#: addon/globalPlugins/brailleExtender/configBE.py:42
+#: addon\globalPlugins\brailleExtender\configBE.py:73
msgid "speech only"
msgstr "kun tale"
-#: addon/globalPlugins/brailleExtender/configBE.py:43
-#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon\globalPlugins\brailleExtender\configBE.py:74
+#: addon\globalPlugins\brailleExtender\configBE.py:95
msgid "both"
msgstr "begge"
-#: addon/globalPlugins/brailleExtender/configBE.py:48
+#: addon\globalPlugins\brailleExtender\configBE.py:79
msgid "dots 7 and 8"
msgstr "Punkterne 7 og 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:49
+#: addon\globalPlugins\brailleExtender\configBE.py:80
msgid "dot 7"
msgstr "punkt 7"
-#: addon/globalPlugins/brailleExtender/configBE.py:50
+#: addon\globalPlugins\brailleExtender\configBE.py:81
msgid "dot 8"
msgstr "punkt 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon\globalPlugins\brailleExtender\configBE.py:87
msgid "stable"
msgstr "stabil"
-#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon\globalPlugins\brailleExtender\configBE.py:88
msgid "development"
msgstr "udvikling"
-#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon\globalPlugins\brailleExtender\configBE.py:93
msgid "focus mode"
msgstr "fokustilstand"
-#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon\globalPlugins\brailleExtender\configBE.py:94
msgid "review mode"
msgstr "gennemsynstilstand"
-#: addon/globalPlugins/brailleExtender/configBE.py:92
+#: addon\globalPlugins\brailleExtender\configBE.py:103
+msgid "Fill a cell in two stages on both sides"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:104
+msgid "Fill a cell in two stages on one side (space = empty side)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:105
+msgid ""
+"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
+"character)"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\configBE.py:132
msgid "last known"
msgstr "sidst kendte"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:29
+#: addon\globalPlugins\brailleExtender\dictionaries.py:30
msgid "Sign"
msgstr "Tegn"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:31
+#: addon\globalPlugins\brailleExtender\dictionaries.py:32
msgid "Math"
msgstr "Matematik"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:33
+#: addon\globalPlugins\brailleExtender\dictionaries.py:34
msgid "Replace"
msgstr "Erstat"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:41
+#: addon\globalPlugins\brailleExtender\dictionaries.py:42
msgid "Both (input and output)"
msgstr "Både (indtastning og visning)"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:42
+#: addon\globalPlugins\brailleExtender\dictionaries.py:43
msgid "Backward (input only)"
msgstr "Bagud (kun indtastning)"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:43
+#: addon\globalPlugins\brailleExtender\dictionaries.py:44
msgid "Forward (output only)"
msgstr "Fremad (kun visning)"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:110
+#: addon\globalPlugins\brailleExtender\dictionaries.py:111
#, python-format
msgid ""
"One or more errors are present in dictionaries tables. Concerned "
@@ -1012,120 +1374,120 @@ msgstr ""
"betyder, at disse ordbøger ikke blev indlæst."
#. Translators: The label for the combo box of dictionary entries in speech dictionary dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:131
+#: addon\globalPlugins\brailleExtender\dictionaries.py:132
msgid "Dictionary &entries"
msgstr "Ordbogs&elementer"
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:134
+#: addon\globalPlugins\brailleExtender\dictionaries.py:135
msgid "Comment"
msgstr "Kommentar"
#. Translators: The label for a column in dictionary entries list used to identify original character.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:136
+#: addon\globalPlugins\brailleExtender\dictionaries.py:137
msgid "Pattern"
msgstr "Mønster"
#. Translators: The label for a column in dictionary entries list and in a list of symbols from symbol pronunciation dialog used to identify replacement for a pattern or a symbol
-#: addon/globalPlugins/brailleExtender/dictionaries.py:138
+#: addon\globalPlugins\brailleExtender\dictionaries.py:139
msgid "Representation"
msgstr "Repræsentation"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:140
+#: addon\globalPlugins\brailleExtender\dictionaries.py:141
msgid "Opcode"
msgstr "Opcode"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:142
+#: addon\globalPlugins\brailleExtender\dictionaries.py:143
msgid "Direction"
msgstr "Retning"
#. Translators: The label for a button in speech dictionaries dialog to add new entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:148
+#: addon\globalPlugins\brailleExtender\dictionaries.py:149
msgid "&Add"
msgstr "&Tilføj"
#. Translators: The label for a button in speech dictionaries dialog to edit existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:154
+#: addon\globalPlugins\brailleExtender\dictionaries.py:155
msgid "&Edit"
msgstr "&Redigér"
#. Translators: The label for a button in speech dictionaries dialog to remove existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:160
+#: addon\globalPlugins\brailleExtender\dictionaries.py:161
msgid "Re&move"
msgstr "Fj&ern"
#. Translators: The label for a button in speech dictionaries dialog to open dictionary file in an editor.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:168
+#: addon\globalPlugins\brailleExtender\dictionaries.py:169
msgid "&Open the current dictionary file in an editor"
msgstr "&Åbn aktuelle ordbogsfil i en editor"
#. Translators: The label for a button in speech dictionaries dialog to reload dictionary.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:173
+#: addon\globalPlugins\brailleExtender\dictionaries.py:174
msgid "&Reload the dictionary"
msgstr "&Genindlæs ordbogen"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:216
+#: addon\globalPlugins\brailleExtender\dictionaries.py:217
msgid "Add Dictionary Entry"
msgstr "Tilføj ordbogselement"
#. Translators: This is the label for the edit dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:288
+#: addon\globalPlugins\brailleExtender\dictionaries.py:289
msgid "Edit Dictionary Entry"
msgstr "Redigér ordbogselement"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:294
+#: addon\globalPlugins\brailleExtender\dictionaries.py:295
msgid "Dictionary"
msgstr "Ordbog"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon\globalPlugins\brailleExtender\dictionaries.py:297
msgid "Global"
msgstr "Global"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon\globalPlugins\brailleExtender\dictionaries.py:297
msgid "Table"
msgstr "Tabel"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon\globalPlugins\brailleExtender\dictionaries.py:297
msgid "Temporary"
msgstr "Midlertidig"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:302
+#: addon\globalPlugins\brailleExtender\dictionaries.py:303
msgid "See &entries"
msgstr "Se &elementer"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:307
+#: addon\globalPlugins\brailleExtender\dictionaries.py:308
msgid "&Text pattern/sign"
msgstr "&Tekstmønster/tegn"
#. Translators: This is a label for an edit field in add dictionary entry dialog and in punctuation/symbol pronunciation dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:312
+#: addon\globalPlugins\brailleExtender\dictionaries.py:313
msgid "&Braille representation"
msgstr "&Punktskriftrepræsentation"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:316
+#: addon\globalPlugins\brailleExtender\dictionaries.py:317
msgid "&Comment"
msgstr "&Kommentar"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:320
+#: addon\globalPlugins\brailleExtender\dictionaries.py:321
msgid "&Opcode"
msgstr "&Opcode"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:325
+#: addon\globalPlugins\brailleExtender\dictionaries.py:326
msgid "&Direction"
msgstr "&Retning"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:366
+#: addon\globalPlugins\brailleExtender\dictionaries.py:367
msgid "Text pattern/sign field is empty."
msgstr "Feltet til Tekstmønster/tegn er tomt."
-#: addon/globalPlugins/brailleExtender/dictionaries.py:373
+#: addon\globalPlugins\brailleExtender\dictionaries.py:374
#, python-format
msgid ""
"Invalid value for 'text pattern/sign' field. You must specify a character "
@@ -1134,7 +1496,7 @@ msgstr ""
"Ugyldig værdi i feltet 'tekstmønster/tegn'. Der skal angives et tegn med "
"denne opcode. Fx: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:377
+#: addon\globalPlugins\brailleExtender\dictionaries.py:378
#, python-format
msgid ""
"'Braille representation' field is empty, you must specify something with "
@@ -1143,7 +1505,7 @@ msgstr ""
"Feltet 'Punktskriftrepræsentation' er tomt, angiv venligst noget med denne "
"opcode fx: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:381
+#: addon\globalPlugins\brailleExtender\dictionaries.py:382
#, python-format
msgid ""
"Invalid value for 'braille representation' field. You must enter dot "
@@ -1152,188 +1514,210 @@ msgstr ""
"Ugyldig værdi i feltet 'punktskriftrepræsentation'. Der skal angives "
"punktmønstre med denne opcode fx: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:32
+#. Translators: Reported when translation didn't succeed due to unsupported input.
+#: addon\globalPlugins\brailleExtender\patchs.py:480
+msgid "Unsupported input"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\patchs.py:539
+msgid "Unsupported input method"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\settings.py:32
msgid "The feature implementation is in progress. Thanks for your patience."
msgstr "Denne funktion er under udvikling. Tak for tålmodigheden."
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:38
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:38
+#: addon\globalPlugins\brailleExtender\settings.py:215
msgid "General"
msgstr "Generel"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:45
+#: addon\globalPlugins\brailleExtender\settings.py:45
msgid "Check for &updates automatically"
msgstr "Søg automatisk efter &Opdateringer"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:49
+#: addon\globalPlugins\brailleExtender\settings.py:49
msgid "Add-on update channel"
msgstr "Opdateringskanal for tilføjelsesprogram"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:56
+#: addon\globalPlugins\brailleExtender\settings.py:56
msgid "Say current line while scrolling in"
msgstr "Sig aktuel linje under rulning i"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:60
+#: addon\globalPlugins\brailleExtender\settings.py:60
msgid "Speech interrupt when scrolling on same line"
msgstr "Afbryd tale ved rulning på samme linje"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:64
+#: addon\globalPlugins\brailleExtender\settings.py:64
msgid "Speech interrupt for unknown gestures"
msgstr "Afbryd tale ved ukendte bevægelser"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:68
+#: addon\globalPlugins\brailleExtender\settings.py:68
msgid "Announce the character while moving with routing buttons"
msgstr "Oplæs tegnet under flytning med markørsammenføringstaster"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:72
+#: addon\globalPlugins\brailleExtender\settings.py:72
msgid "Use cursor keys to route cursor in review mode"
msgstr "Brug markørtaster til at flytte markøren i gennemsynstilstand"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:76
+#: addon\globalPlugins\brailleExtender\settings.py:76
msgid "Display time and date infinitely"
msgstr "Bliv ved med at vise tid og dato"
-#: addon/globalPlugins/brailleExtender/settings.py:78
+#: addon\globalPlugins\brailleExtender\settings.py:78
msgid "Automatic review mode for apps with terminal"
msgstr "Automatisk gennemsynstilstand for programmer med terminal"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:82
+#: addon\globalPlugins\brailleExtender\settings.py:82
msgid "Feedback for volume change in"
msgstr "Tilbagemelding om ændring i lydstyrke i"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:90
+#: addon\globalPlugins\brailleExtender\settings.py:90
msgid "Feedback for modifier keys in"
msgstr "Tilbagemelding om modifikatortaster i"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:96
+#: addon\globalPlugins\brailleExtender\settings.py:96
msgid "Play beeps for modifier keys"
msgstr "Afspil bip ved modifikatortaster"
-#: addon/globalPlugins/brailleExtender/settings.py:101
+#: addon\globalPlugins\brailleExtender\settings.py:101
msgid "Right margin on cells"
msgstr "Højre margen på celler"
-#: addon/globalPlugins/brailleExtender/settings.py:101
-#: addon/globalPlugins/brailleExtender/settings.py:113
-#: addon/globalPlugins/brailleExtender/settings.py:356
+#: addon\globalPlugins\brailleExtender\settings.py:101
+#: addon\globalPlugins\brailleExtender\settings.py:117
+#: addon\globalPlugins\brailleExtender\settings.py:369
msgid "for the currrent braille display"
msgstr "for det aktuelle punktdisplay"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:105
+#: addon\globalPlugins\brailleExtender\settings.py:105
msgid "Braille keyboard configuration"
msgstr "Konfiguration af punkttastatur"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:109
+#: addon\globalPlugins\brailleExtender\settings.py:109
msgid "Reverse forward scroll and back scroll buttons"
msgstr "Vend knapperne til at rulle fremad og bagud"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:113
+#: addon\globalPlugins\brailleExtender\settings.py:113
+msgid "Reading from right to left"
+msgstr ""
+
+#. Translators: label of a dialog.
+#: addon\globalPlugins\brailleExtender\settings.py:117
msgid "Autoscroll delay (ms)"
msgstr "Autorul forsinkelse (ms)"
-#: addon/globalPlugins/brailleExtender/settings.py:114
+#: addon\globalPlugins\brailleExtender\settings.py:118
msgid "First braille display preferred"
msgstr "Første foretrukne punktdisplay"
-#: addon/globalPlugins/brailleExtender/settings.py:116
+#: addon\globalPlugins\brailleExtender\settings.py:120
msgid "Second braille display preferred"
msgstr "Andet foretrukne punktdisplay"
+#: addon\globalPlugins\brailleExtender\settings.py:122
+msgid "One-handed mode"
+msgstr "Enhåndstilstand"
+
+#: addon\globalPlugins\brailleExtender\settings.py:126
+msgid "One hand mode method"
+msgstr "Metode til enhåndstilstand"
+
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:149
+#: addon\globalPlugins\brailleExtender\settings.py:162
msgid "Text attributes"
msgstr "Tekstattributter"
-#: addon/globalPlugins/brailleExtender/settings.py:153
-#: addon/globalPlugins/brailleExtender/settings.py:200
+#: addon\globalPlugins\brailleExtender\settings.py:166
+#: addon\globalPlugins\brailleExtender\settings.py:213
msgid "Enable this feature"
msgstr "Slå denne funktion til"
-#: addon/globalPlugins/brailleExtender/settings.py:155
+#: addon\globalPlugins\brailleExtender\settings.py:168
msgid "Show spelling errors with"
msgstr "Vis stavefejl med"
-#: addon/globalPlugins/brailleExtender/settings.py:157
+#: addon\globalPlugins\brailleExtender\settings.py:170
msgid "Show bold with"
msgstr "Vis fed med"
-#: addon/globalPlugins/brailleExtender/settings.py:159
+#: addon\globalPlugins\brailleExtender\settings.py:172
msgid "Show italic with"
msgstr "Vis kursiv med"
-#: addon/globalPlugins/brailleExtender/settings.py:161
+#: addon\globalPlugins\brailleExtender\settings.py:174
msgid "Show underline with"
msgstr "Vis understregning med"
-#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon\globalPlugins\brailleExtender\settings.py:176
msgid "Show strikethrough with"
msgstr "Vis gennemstreget med"
-#: addon/globalPlugins/brailleExtender/settings.py:165
+#: addon\globalPlugins\brailleExtender\settings.py:178
msgid "Show subscript with"
msgstr "Vis sænket skrift med"
-#: addon/globalPlugins/brailleExtender/settings.py:167
+#: addon\globalPlugins\brailleExtender\settings.py:180
msgid "Show superscript with"
msgstr "Vis hævet skrift med"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:193
+#: addon\globalPlugins\brailleExtender\settings.py:206
msgid "Role labels"
msgstr "Rolleetiketter"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:215
msgid "Role category"
msgstr "Rollekategorier"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:215
msgid "Landmark"
msgstr "Landmærke"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:215
msgid "Positive state"
msgstr "Positiv tilstand"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:215
msgid "Negative state"
msgstr "Negativ tilstand"
-#: addon/globalPlugins/brailleExtender/settings.py:206
+#: addon\globalPlugins\brailleExtender\settings.py:219
msgid "Role"
msgstr "Rolle"
-#: addon/globalPlugins/brailleExtender/settings.py:208
+#: addon\globalPlugins\brailleExtender\settings.py:221
msgid "Actual or new label"
msgstr "Aktuel eller ny etiket"
-#: addon/globalPlugins/brailleExtender/settings.py:212
+#: addon\globalPlugins\brailleExtender\settings.py:225
msgid "&Reset this role label"
msgstr "&Gendan denne rolleetiket"
-#: addon/globalPlugins/brailleExtender/settings.py:214
+#: addon\globalPlugins\brailleExtender\settings.py:227
msgid "Reset all role labels"
msgstr "Gendan alle rolleetiketter"
-#: addon/globalPlugins/brailleExtender/settings.py:279
+#: addon\globalPlugins\brailleExtender\settings.py:292
msgid "You have no customized label."
msgstr "Du har ingen tilpassede etiketter."
-#: addon/globalPlugins/brailleExtender/settings.py:282
+#: addon\globalPlugins\brailleExtender\settings.py:295
#, python-format
msgid ""
"Do you want really reset all labels? Currently, you have %d customized "
@@ -1342,97 +1726,106 @@ msgstr ""
"Ønsker du at gendanne alle etiketter? Du har i øjeblikket %d tilpassede "
"etiketter."
-#: addon/globalPlugins/brailleExtender/settings.py:283
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon\globalPlugins\brailleExtender\settings.py:296
+#: addon\globalPlugins\brailleExtender\settings.py:734
msgid "Confirmation"
msgstr "Bekræftelse"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:325
+#: addon\globalPlugins\brailleExtender\settings.py:338
msgid "Braille tables"
msgstr "Punkttabeller"
-#: addon/globalPlugins/brailleExtender/settings.py:330
+#: addon\globalPlugins\brailleExtender\settings.py:343
msgid "Use the current input table"
msgstr "Brug den aktuelle indskrivningstabel"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon\globalPlugins\brailleExtender\settings.py:352
msgid "Prefered braille tables"
msgstr "Foretrukne punkttabeller"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon\globalPlugins\brailleExtender\settings.py:352
msgid "press F1 for help"
msgstr "tryk F1 for hjælp"
-#: addon/globalPlugins/brailleExtender/settings.py:343
+#: addon\globalPlugins\brailleExtender\settings.py:356
msgid "Input braille table for keyboard shortcut keys"
msgstr "Punkttabel for indskrivning til tastaturgenveje"
-#: addon/globalPlugins/brailleExtender/settings.py:345
+#: addon\globalPlugins\brailleExtender\settings.py:358
msgid "None"
msgstr "Ingen"
-#: addon/globalPlugins/brailleExtender/settings.py:348
+#: addon\globalPlugins\brailleExtender\settings.py:361
msgid "Secondary output table to use"
msgstr "Anden tabel til visning"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:352
-msgid "Display tab signs as spaces"
-msgstr "Vis tabulatortegn som mellemrum"
+#: addon\globalPlugins\brailleExtender\settings.py:365
+msgid "Display &tab signs as spaces"
+msgstr "Vis &tabulatortegn som mellemrum"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:356
-msgid "Number of space for a tab sign"
-msgstr "Antal mellemrum for et tabulatortegn "
+#: addon\globalPlugins\brailleExtender\settings.py:369
+msgid "Number of &space for a tab sign"
+msgstr "Antal &mellemrum for et tabulatortegn "
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:358
-msgid "Prevent undefined characters with Hexadecimal Unicode value"
-msgstr "Forhindre udefinerede tegnd med Hexadecimal Unicode værdi"
+#: addon\globalPlugins\brailleExtender\settings.py:371
+msgid "Representation of &undefined characters"
+msgstr ""
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:361
-msgid ""
-"Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
-msgstr "Vis udefinerede tegn som (fx: 0 for blank celle, 12345678, 6-123456)"
+#: addon\globalPlugins\brailleExtender\settings.py:377
+msgid "Specify another pattern"
+msgstr ""
-#: addon/globalPlugins/brailleExtender/settings.py:363
+#: addon\globalPlugins\brailleExtender\settings.py:379
+msgid "&Description of undefined characters"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\settings.py:382
msgid "Alternative and &custom braille tables"
msgstr "Alternative og &tilpassede punkttabeller"
-#: addon/globalPlugins/brailleExtender/settings.py:420
+#: addon\globalPlugins\brailleExtender\settings.py:410
+msgid ""
+"NVDA must be restarted for some new options to take effect. Do you want "
+"restart now?"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\settings.py:448
msgid "input and output"
msgstr "indtastning og visning"
-#: addon/globalPlugins/brailleExtender/settings.py:422
+#: addon\globalPlugins\brailleExtender\settings.py:450
msgid "input only"
msgstr "kun indskrivning"
-#: addon/globalPlugins/brailleExtender/settings.py:423
+#: addon\globalPlugins\brailleExtender\settings.py:451
msgid "output only"
msgstr "kun visning"
-#: addon/globalPlugins/brailleExtender/settings.py:454
+#: addon\globalPlugins\brailleExtender\settings.py:491
#, python-format
msgid "Table name: %s"
msgstr "Tabelnavn: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:455
+#: addon\globalPlugins\brailleExtender\settings.py:492
#, python-format
msgid "File name: %s"
msgstr "Filnavn: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:456
+#: addon\globalPlugins\brailleExtender\settings.py:493
#, python-format
msgid "In switches: %s"
msgstr "Ind ændrer: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:457
+#: addon\globalPlugins\brailleExtender\settings.py:494
msgid "About this table"
msgstr "Om denne tabel"
-#: addon/globalPlugins/brailleExtender/settings.py:460
+#: addon\globalPlugins\brailleExtender\settings.py:497
msgid ""
"In this combo box, all tables are present. Press space bar, left or right "
"arrow keys to include (or not) the selected table in switches"
@@ -1440,7 +1833,7 @@ msgstr ""
"I denne combobox findes alle tabeller. Tryk Mellemrum, venstre eller højre "
"piletaster for at inkludere (eller ej) den valgte tabel i kontakter"
-#: addon/globalPlugins/brailleExtender/settings.py:461
+#: addon\globalPlugins\brailleExtender\settings.py:498
msgid ""
"You can also press 'comma' key to get the file name of the selected table "
"and 'semicolon' key to view miscellaneous infos on the selected table"
@@ -1449,125 +1842,156 @@ msgstr ""
"tabel og 'semikolon'-tasten for at se forskellige oplysninger om den valgte "
"tabel"
-#: addon/globalPlugins/brailleExtender/settings.py:462
+#: addon\globalPlugins\brailleExtender\settings.py:499
msgid "Contextual help"
msgstr "Konteksthjælp"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:478
+#: addon\globalPlugins\brailleExtender\settings.py:515
+msgid "Description of undefined characters"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\settings.py:519
+msgid "Describe undefined characters if possible"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\settings.py:521
+msgid "Start tag"
+msgstr "Start tag"
+
+#: addon\globalPlugins\brailleExtender\settings.py:522
+msgid "End tag"
+msgstr "Afslut tag"
+
+#: addon\globalPlugins\brailleExtender\settings.py:528
+msgid "Language"
+msgstr ""
+
+#: addon\globalPlugins\brailleExtender\settings.py:530
+#, fuzzy
+#| msgid "Use the current input table"
+msgid "Use the current output table"
+msgstr "Brug den aktuelle indskrivningstabel"
+
+#: addon\globalPlugins\brailleExtender\settings.py:535
+msgid "Braille table"
+msgstr "Punkttabel"
+
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\settings.py:555
msgid "Custom braille tables"
msgstr "Tilpassede punkttabeller"
-#: addon/globalPlugins/brailleExtender/settings.py:488
+#: addon\globalPlugins\brailleExtender\settings.py:565
msgid "Use a custom table as input table"
msgstr "Brug en tilpasset tabel som indskrivningstabel"
-#: addon/globalPlugins/brailleExtender/settings.py:489
+#: addon\globalPlugins\brailleExtender\settings.py:566
msgid "Use a custom table as output table"
msgstr "Brug en tilpasset tabel som visningstabel"
-#: addon/globalPlugins/brailleExtender/settings.py:490
+#: addon\globalPlugins\brailleExtender\settings.py:567
msgid "&Add a braille table"
msgstr "&Tilføj en punkttabel"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:514
+#: addon\globalPlugins\brailleExtender\settings.py:591
msgid "Add a braille table"
msgstr "Tilføj en punkttabel"
-#: addon/globalPlugins/brailleExtender/settings.py:520
+#: addon\globalPlugins\brailleExtender\settings.py:597
msgid "Display name"
msgstr "Vist navn"
-#: addon/globalPlugins/brailleExtender/settings.py:521
+#: addon\globalPlugins\brailleExtender\settings.py:598
msgid "Description"
msgstr "Beskrivelse"
-#: addon/globalPlugins/brailleExtender/settings.py:522
+#: addon\globalPlugins\brailleExtender\settings.py:599
msgid "Path"
msgstr "Sti"
-#: addon/globalPlugins/brailleExtender/settings.py:523
-#: addon/globalPlugins/brailleExtender/settings.py:594
+#: addon\globalPlugins\brailleExtender\settings.py:600
+#: addon\globalPlugins\brailleExtender\settings.py:671
msgid "&Browse"
msgstr "&Gennemse"
-#: addon/globalPlugins/brailleExtender/settings.py:526
+#: addon\globalPlugins\brailleExtender\settings.py:603
msgid "Contracted (grade 2) braille table"
msgstr "Forkortet (niveau 2) punkttabel"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon\globalPlugins\brailleExtender\settings.py:605
msgid "Available for"
msgstr "Tilgængelig for"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon\globalPlugins\brailleExtender\settings.py:605
msgid "Input and output"
msgstr "Indskrivning og visning"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon\globalPlugins\brailleExtender\settings.py:605
msgid "Input only"
-msgstr "Kun input"
+msgstr "Kun indskrivning"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon\globalPlugins\brailleExtender\settings.py:605
msgid "Output only"
msgstr "Kun visning"
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon\globalPlugins\brailleExtender\settings.py:611
msgid "Choose a table file"
msgstr "Vælg en tabelfil"
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon\globalPlugins\brailleExtender\settings.py:611
msgid "Liblouis table files"
msgstr "Liblouis tabelfiler"
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon\globalPlugins\brailleExtender\settings.py:623
msgid "Please specify a display name."
msgstr "Angiv venligst et vist navn."
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon\globalPlugins\brailleExtender\settings.py:623
msgid "Invalid display name"
msgstr "Ugyldigt vist navn"
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon\globalPlugins\brailleExtender\settings.py:627
#, python-format
msgid "The specified path is not valid (%s)."
msgstr "Den angivne sti er ikke gyldig (%s)."
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon\globalPlugins\brailleExtender\settings.py:627
msgid "Invalid path"
msgstr "Ugyldig sti"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:578
+#: addon\globalPlugins\brailleExtender\settings.py:655
msgid "Quick launches"
msgstr "Hurtigstartere"
-#: addon/globalPlugins/brailleExtender/settings.py:589
+#: addon\globalPlugins\brailleExtender\settings.py:666
msgid "&Gestures"
msgstr "&Bevægelser"
-#: addon/globalPlugins/brailleExtender/settings.py:592
+#: addon\globalPlugins\brailleExtender\settings.py:669
msgid "Location (file path, URL or command)"
msgstr "Placering (fil, sti, URL eller kommando)"
-#: addon/globalPlugins/brailleExtender/settings.py:595
+#: addon\globalPlugins\brailleExtender\settings.py:672
msgid "&Remove this gesture"
msgstr "&Fjern denne bevægelse"
-#: addon/globalPlugins/brailleExtender/settings.py:596
+#: addon\globalPlugins\brailleExtender\settings.py:673
msgid "&Add a quick launch"
msgstr "&Tilføj en hurtigstarter"
-#: addon/globalPlugins/brailleExtender/settings.py:625
+#: addon\globalPlugins\brailleExtender\settings.py:702
msgid "Unable to associate this gesture. Please enter another, now"
msgstr "Kan ikke tildele denne bevægelse."
-#: addon/globalPlugins/brailleExtender/settings.py:630
+#: addon\globalPlugins\brailleExtender\settings.py:707
msgid "Out of capture"
msgstr "Uden for optagelse"
-#: addon/globalPlugins/brailleExtender/settings.py:632
+#: addon\globalPlugins\brailleExtender\settings.py:709
#, python-brace-format
msgid ""
"Please enter a gesture from your {NAME_BRAILLE_DISPLAY} braille display. "
@@ -1576,21 +2000,21 @@ msgstr ""
"Angiv venligst en kommando fra dit {NAME_BRAILLE_DISPLAY} punktdisplay. "
"Press space to cancel."
-#: addon/globalPlugins/brailleExtender/settings.py:640
+#: addon\globalPlugins\brailleExtender\settings.py:717
#, python-format
msgid "OK. The gesture captured is %s"
msgstr "OK. Den registrerede bevægelse er %s"
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon\globalPlugins\brailleExtender\settings.py:734
msgid "Are you sure to want to delete this shorcut?"
msgstr "Ønsker du virkelig at slette denne genvej?"
-#: addon/globalPlugins/brailleExtender/settings.py:666
+#: addon\globalPlugins\brailleExtender\settings.py:743
#, python-brace-format
msgid "{BRAILLEGESTURE} removed"
msgstr "{BRAILLEGESTURE} fjernet"
-#: addon/globalPlugins/brailleExtender/settings.py:677
+#: addon\globalPlugins\brailleExtender\settings.py:754
msgid ""
"Please enter the desired gesture for the new quick launch. Press \"space bar"
"\" to cancel"
@@ -1598,120 +2022,120 @@ msgstr ""
"Angiv venligst den ønskede bevægelse til den nye hurtigstarter. Tryk "
"\"Mellemrum\" for at annullere"
-#: addon/globalPlugins/brailleExtender/settings.py:680
+#: addon\globalPlugins\brailleExtender\settings.py:757
msgid "Don't add a quick launch"
msgstr "Tilføj ikke en hurtigstarter"
-#: addon/globalPlugins/brailleExtender/settings.py:706
+#: addon\globalPlugins\brailleExtender\settings.py:783
#, python-brace-format
msgid "Choose a file for {0}"
msgstr "Vælg en fil for {0}"
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon\globalPlugins\brailleExtender\settings.py:796
msgid "Please create or select a quick launch first"
msgstr "Venligst opret eller vælg en hurtigstarter først"
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon\globalPlugins\brailleExtender\settings.py:796
msgid "Error"
msgstr "Fejl"
-#: addon/globalPlugins/brailleExtender/settings.py:723
+#: addon\globalPlugins\brailleExtender\settings.py:800
msgid "Profiles editor"
msgstr "Profileditor"
-#: addon/globalPlugins/brailleExtender/settings.py:734
+#: addon\globalPlugins\brailleExtender\settings.py:811
msgid "You must have a braille display to editing a profile"
msgstr "Der kræves et punktdisplay for at kunne redigere en profil"
-#: addon/globalPlugins/brailleExtender/settings.py:738
+#: addon\globalPlugins\brailleExtender\settings.py:815
msgid ""
"Profiles directory is not present or accessible. Unable to edit profiles"
msgstr ""
"Mappen med profiler findes ikke eller er utilgængelig. Kan ikke redigere "
"profiler"
-#: addon/globalPlugins/brailleExtender/settings.py:744
+#: addon\globalPlugins\brailleExtender\settings.py:821
msgid "Profile to edit"
msgstr "Profil der skal redigeres"
-#: addon/globalPlugins/brailleExtender/settings.py:750
+#: addon\globalPlugins\brailleExtender\settings.py:827
msgid "Gestures category"
msgstr "Kategorien Bevægelser "
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:828
msgid "Single keys"
msgstr "Enkelttaster"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:828
msgid "Practical shortcuts"
msgstr "Praktiske genveje"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:828
msgid "NVDA commands"
msgstr "NVDA-kommandoer"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:828
msgid "Addon features"
msgstr "Tilføjelsesfunktioner"
-#: addon/globalPlugins/brailleExtender/settings.py:755
+#: addon\globalPlugins\brailleExtender\settings.py:832
msgid "Gestures list"
msgstr "Liste med bevægelser"
-#: addon/globalPlugins/brailleExtender/settings.py:764
+#: addon\globalPlugins\brailleExtender\settings.py:841
msgid "Add gesture"
msgstr "Tilføj bevægelse"
-#: addon/globalPlugins/brailleExtender/settings.py:766
+#: addon\globalPlugins\brailleExtender\settings.py:843
msgid "Remove this gesture"
msgstr "Fjern denne bevægelse"
-#: addon/globalPlugins/brailleExtender/settings.py:769
+#: addon\globalPlugins\brailleExtender\settings.py:846
msgid "Assign a braille gesture"
msgstr "Tildel en punktskriftbevægelse"
-#: addon/globalPlugins/brailleExtender/settings.py:776
+#: addon\globalPlugins\brailleExtender\settings.py:853
msgid "Remove this profile"
msgstr "Fjern denne profil"
-#: addon/globalPlugins/brailleExtender/settings.py:779
+#: addon\globalPlugins\brailleExtender\settings.py:856
msgid "Add a profile"
msgstr "Tilføj en profil"
-#: addon/globalPlugins/brailleExtender/settings.py:785
+#: addon\globalPlugins\brailleExtender\settings.py:862
msgid "Name for the new profile"
msgstr "Navn på den nye profil"
-#: addon/globalPlugins/brailleExtender/settings.py:791
+#: addon\globalPlugins\brailleExtender\settings.py:868
msgid "Create"
msgstr "Opret"
-#: addon/globalPlugins/brailleExtender/settings.py:854
+#: addon\globalPlugins\brailleExtender\settings.py:931
msgid "Unable to load this profile. Malformed or inaccessible file"
msgstr ""
"Denne profil kan ikke indlæses. Filen har enten den forkerte form eller er "
"utilgængelig"
-#: addon/globalPlugins/brailleExtender/settings.py:873
+#: addon\globalPlugins\brailleExtender\settings.py:950
msgid "Undefined"
msgstr "Udefineret"
#. Translators: title of add-on parameters dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:902
+#: addon\globalPlugins\brailleExtender\settings.py:979
msgid "Settings"
msgstr "Indstillinger"
-#: addon/globalPlugins/brailleExtender/updateCheck.py:61
+#: addon\globalPlugins\brailleExtender\updateCheck.py:61
#, python-format
msgid "New version available, version %s. Do you want to download it now?"
msgstr "Ny version tilgængelig, version %s. Ønsker du at hente den nu?"
-#: addon/globalPlugins/brailleExtender/updateCheck.py:72
+#: addon\globalPlugins\brailleExtender\updateCheck.py:72
#, python-format
msgid "You are up-to-date. %s is the latest version."
msgstr "Du er up-to-date. %s er den seneste version."
-#: addon/globalPlugins/brailleExtender/updateCheck.py:81
+#: addon\globalPlugins\brailleExtender\updateCheck.py:81
#, python-format
msgid ""
"Oops! There was a problem downloading for update. Please retry later or "
@@ -1722,78 +2146,78 @@ msgstr ""
"igen senere eller hent og installér nanuelt via %s. Ønsker du at åbne denne "
"URL i din browser nu?"
-#: addon/globalPlugins/brailleExtender/updateCheck.py:115
+#: addon\globalPlugins\brailleExtender\updateCheck.py:115
msgid "An update check dialog is already running!"
msgstr "Der kører allerede en opdateringsdialog!"
-#: addon/globalPlugins/brailleExtender/updateCheck.py:116
+#: addon\globalPlugins\brailleExtender\updateCheck.py:116
#, python-brace-format
msgid "{addonName}'s update"
msgstr "{addonName}'s opdatering"
-#: addon/globalPlugins/brailleExtender/utils.py:189
+#: addon\globalPlugins\brailleExtender\utils.py:191
msgid "Reload successful"
msgstr "Genindlæsning fuldført"
-#: addon/globalPlugins/brailleExtender/utils.py:192
+#: addon\globalPlugins\brailleExtender\utils.py:194
msgid "Reload failed"
msgstr "Genindlæsning fejlede"
-#: addon/globalPlugins/brailleExtender/utils.py:197
-#: addon/globalPlugins/brailleExtender/utils.py:207
+#: addon\globalPlugins\brailleExtender\utils.py:200
+#: addon\globalPlugins\brailleExtender\utils.py:215
msgid "Not a character"
msgstr "Ikke et tegn"
-#: addon/globalPlugins/brailleExtender/utils.py:201
-msgid "unknown"
-msgstr "ukendt"
+#: addon\globalPlugins\brailleExtender\utils.py:205
+msgid "N/A"
+msgstr "N/A"
-#: addon/globalPlugins/brailleExtender/utils.py:330
+#: addon\globalPlugins\brailleExtender\utils.py:309
msgid "Available combinations"
msgstr "Tilgængelige kombinationer"
-#: addon/globalPlugins/brailleExtender/utils.py:332
+#: addon\globalPlugins\brailleExtender\utils.py:311
msgid "One combination available"
msgstr "Der findes én kombination"
-#: addon/globalPlugins/brailleExtender/utils.py:349
+#: addon\globalPlugins\brailleExtender\utils.py:322
msgid "space"
msgstr "mellemrum"
-#: addon/globalPlugins/brailleExtender/utils.py:350
+#: addon\globalPlugins\brailleExtender\utils.py:323
msgid "left SHIFT"
msgstr "venstre SHIFT"
-#: addon/globalPlugins/brailleExtender/utils.py:351
+#: addon\globalPlugins\brailleExtender\utils.py:324
msgid "right SHIFT"
msgstr "højre SHIFT"
-#: addon/globalPlugins/brailleExtender/utils.py:352
+#: addon\globalPlugins\brailleExtender\utils.py:325
msgid "left selector"
msgstr "venstre vælger"
-#: addon/globalPlugins/brailleExtender/utils.py:353
+#: addon\globalPlugins\brailleExtender\utils.py:326
msgid "right selector"
msgstr "højre vælger"
-#: addon/globalPlugins/brailleExtender/utils.py:354
+#: addon\globalPlugins\brailleExtender\utils.py:327
msgid "dot"
msgstr "prik"
-#: addon/globalPlugins/brailleExtender/utils.py:369
+#: addon\globalPlugins\brailleExtender\utils.py:342
#, python-brace-format
msgid "{gesture} on {brailleDisplay}"
msgstr "{gesture} på {brailleDisplay}"
-#: addon/globalPlugins/brailleExtender/utils.py:446
+#: addon\globalPlugins\brailleExtender\utils.py:419
msgid "No text"
msgstr "Ingen tekst"
-#: addon/globalPlugins/brailleExtender/utils.py:455
+#: addon\globalPlugins\brailleExtender\utils.py:428
msgid "Not text"
msgstr "Ikke tekst"
-#: addon/globalPlugins/brailleExtender/utils.py:475
+#: addon\globalPlugins\brailleExtender\utils.py:448
msgid "No text selected"
msgstr "Ingen tekst valgt"
@@ -1907,3 +2331,22 @@ msgstr ""
#: buildVars.py:48
msgid "actions and quick navigation through a rotor"
msgstr "handlinger og hurtig navigering via en rotor"
+
+#, python-format
+#~ msgid "%s braille display"
+#~ msgstr "%s punktdisplay"
+
+#, python-format
+#~ msgid "profile loaded: %s"
+#~ msgstr "profil indlæst: %s"
+
+#~ msgid "Prevent undefined characters with Hexadecimal Unicode value"
+#~ msgstr "Forhindre udefinerede tegnd med Hexadecimal Unicode værdi"
+
+#~ msgid ""
+#~ "Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+#~ msgstr ""
+#~ "Vis udefinerede tegn som (fx: 0 for blank celle, 12345678, 6-123456)"
+
+#~ msgid "unknown"
+#~ msgstr "ukendt"
From ac81afbb860a445277856464e5d43f833594349d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 10 Apr 2020 11:26:02 +0200
Subject: [PATCH 53/87] Format code
---
.../brailleExtender/advancedInputMode.py | 29 ++--
addon/globalPlugins/brailleExtender/huc.py | 147 ++++++++++++------
.../brailleExtender/undefinedChars.py | 57 ++++---
3 files changed, 152 insertions(+), 81 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/advancedInputMode.py b/addon/globalPlugins/brailleExtender/advancedInputMode.py
index 003edd5c..c56d6036 100644
--- a/addon/globalPlugins/brailleExtender/advancedInputMode.py
+++ b/addon/globalPlugins/brailleExtender/advancedInputMode.py
@@ -2,21 +2,23 @@
# advancedInputMode.py
# Part of BrailleExtender addon for NVDA
# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
-from collections import namedtuple
import codecs
import json
-import gui
+from collections import namedtuple
+
import wx
import addonHandler
-
-addonHandler.initTranslation()
import brailleInput
import brailleTables
import config
+import gui
+
from .common import *
from .utils import getTextInBraille
+addonHandler.initTranslation()
+
AdvancedInputModeDictEntry = namedtuple(
"AdvancedInputModeDictEntry", ("abreviation", "replaceBy", "table")
)
@@ -196,8 +198,10 @@ def onEditClick(self, event):
return
editIndex = self.dictList.GetFirstSelected()
entryDialog = DictionaryEntryDlg(self)
- entryDialog.abreviationTextCtrl.SetValue(self.tmpDict[editIndex].abreviation)
- entryDialog.replaceByTextCtrl.SetValue(self.tmpDict[editIndex].replaceBy)
+ entryDialog.abreviationTextCtrl.SetValue(
+ self.tmpDict[editIndex].abreviation)
+ entryDialog.replaceByTextCtrl.SetValue(
+ self.tmpDict[editIndex].replaceBy)
if entryDialog.ShowModal() == wx.ID_OK:
entry = entryDialog.dictEntry
self.tmpDict[editIndex] = entry
@@ -254,7 +258,8 @@ def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
replaceByLabelText, wx.TextCtrl
)
- sHelper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK | wx.CANCEL))
+ sHelper.addDialogDismissButtons(
+ self.CreateButtonSizer(wx.OK | wx.CANCEL))
mainSizer.Add(sHelper.sizer, border=20, flag=wx.ALL)
mainSizer.Fit(self)
@@ -281,7 +286,8 @@ def makeSettings(self, settingsSizer):
# Translators: label of a dialog.
self.stopAdvancedInputModeAfterOneChar = sHelper.addItem(
wx.CheckBox(
- self, label=_("E&xit the advanced input mode after typing one pattern")
+ self, label=_(
+ "E&xit the advanced input mode after typing one pattern")
)
)
self.stopAdvancedInputModeAfterOneChar.SetValue(
@@ -294,9 +300,8 @@ def makeSettings(self, settingsSizer):
)
def onSave(self):
- config.conf["brailleExtender"]["advancedInputMode"][
- "stopAfterOneChar"
- ] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
+ config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
s = self.escapeSignUnicodeValue.Value
if s:
- config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] = getTextInBraille(s[0])
+ config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] = getTextInBraille(
+ s[0])
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
index a6f1cd31..3cb3e655 100644
--- a/addon/globalPlugins/brailleExtender/huc.py
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -6,10 +6,17 @@
import struct
isPy3 = sys.version_info >= (3, 0)
+
+
def chrPy2(i):
- try: return unichr(i)
- except ValueError: return struct.pack('i', i).decode('utf-32')
-if not isPy3: chr = chrPy2
+ try:
+ return unichr(i)
+ except ValueError:
+ return struct.pack('i', i).decode('utf-32')
+
+
+if not isPy3:
+ chr = chrPy2
HUC6_patterns = {
"⠿": (0x000000, 0x1FFFF),
@@ -63,6 +70,7 @@ def chrPy2(i):
print_ = print
+
def cellDescToChar(cell):
if not re.match("^[0-8]+$", cell):
return '?'
@@ -71,22 +79,27 @@ def cellDescToChar(cell):
toAdd += 1 << int(dot) - 1 if int(dot) > 0 else 0
return chr(0x2800 + toAdd)
+
def charToCellDesc(ch):
"""
Return a description of an unicode braille char
@param ch: the unicode braille character to describe
- must be between 0x2800 and 0x28FF included
+ must be between 0x2800 and 0x28FF included
@type ch: str
@return: the list of dots describing the braille cell
@rtype: str
@example: "d" -> "145"
"""
res = ""
- if len(ch) != 1: raise ValueError("Param size can only be one char (currently: %d)" % len(ch))
+ if len(ch) != 1:
+ raise ValueError(
+ "Param size can only be one char (currently: %d)" % len(ch))
p = ord(ch)
- if p >= 0x2800 and p <= 0x28FF: p -= 0x2800
- if p > 255: raise ValueError(r"It is not an unicode braille (%d)" % p)
- dots ={1: 1, 2: 2, 4: 3, 8: 4, 16: 5, 32: 6, 64: 7, 128: 8}
+ if p >= 0x2800 and p <= 0x28FF:
+ p -= 0x2800
+ if p > 255:
+ raise ValueError(r"It is not an unicode braille (%d)" % p)
+ dots = {1: 1, 2: 2, 4: 3, 8: 4, 16: 5, 32: 6, 64: 7, 128: 8}
i = 1
while p != 0:
if p - (128 / i) >= 0:
@@ -97,7 +110,7 @@ def charToCellDesc(ch):
def unicodeBrailleToDescription(t, sep='-'):
- return ''.join([('-'+charToCellDesc(ch)) if ord(ch) >= 0x2800 and ord(ch) <= 0x28FF and ch not in ['\n','\r'] else ch for ch in t]).strip(sep)
+ return ''.join([('-'+charToCellDesc(ch)) if ord(ch) >= 0x2800 and ord(ch) <= 0x28FF and ch not in ['\n', '\r'] else ch for ch in t]).strip(sep)
def cellDescriptionsToUnicodeBraille(t):
@@ -108,9 +121,11 @@ def getPrefixAndSuffix(c, HUC6=False):
ord_ = ord(c)
patterns = HUC6_patterns if HUC6 else HUC8_patterns
for pattern in patterns.items():
- if pattern[1][1] >= ord_: return pattern[0]
+ if pattern[1][1] >= ord_:
+ return pattern[0]
return '?'
+
def translateHUC6(dots, debug=False):
ref1 = "1237"
ref2 = "4568"
@@ -121,8 +136,10 @@ def translateHUC6(dots, debug=False):
for cell in data:
for dot in "12345678":
if dot not in cell:
- if dot in ref1: linedCells1.append('0')
- if dot in ref2: linedCells2.append('0')
+ if dot in ref1:
+ linedCells1.append('0')
+ if dot in ref2:
+ linedCells2.append('0')
else:
dotTemp = '0'
if dot in ref1:
@@ -137,23 +154,29 @@ def translateHUC6(dots, debug=False):
out = []
i = 0
for l1, l2 in zip(linedCells1, linedCells2):
- if i % 3 == 0: out.append("")
+ if i % 3 == 0:
+ out.append("")
cellTemp = (l1 if l1 != '0' else '') + (l2 if l2 != '0' else '')
cellTemp = ''.join(sorted(cellTemp))
out[-1] += cellTemp if cellTemp else '0'
out[-1] = ''.join(sorted([dot for dot in out[-1] if dot != '0']))
- if not out[-1]: out[-1] = '0'
+ if not out[-1]:
+ out[-1] = '0'
i += 1
- if debug: print_(":translateHUC6:", dots, "->", repr(out))
+ if debug:
+ print_(":translateHUC6:", dots, "->", repr(out))
out = '-'.join(out)
return out
+
def translateHUC8(dots, debug=False):
out = ""
newDots = "037168425"
- for dot in dots: out += newDots[int(dot)]
+ for dot in dots:
+ out += newDots[int(dot)]
out = ''.join(sorted(out))
- if debug: print_(":translateHUC8:", dots, "->", out)
+ if debug:
+ print_(":translateHUC8:", dots, "->", out)
return out
@@ -161,13 +184,18 @@ def translate(t, HUC6=False, unicodeBraille=True, debug=False):
out = ""
for c in t:
pattern = getPrefixAndSuffix(c, HUC6)
- if not unicodeBraille: pattern = unicodeBrailleToDescription(pattern)
- if '…' not in pattern: pattern += '…'
- if not unicodeBraille: pattern = pattern.replace('…', "-…")
+ if not unicodeBraille:
+ pattern = unicodeBrailleToDescription(pattern)
+ if '…' not in pattern:
+ pattern += '…'
+ if not unicodeBraille:
+ pattern = pattern.replace('…', "-…")
ord_ = ord(c)
hexVal = hex(ord_)[2:][-4:].upper()
- if len(hexVal) < 4: hexVal = ("%4s" % hexVal).replace(' ', '0')
- if debug: print_(":hexVal:", c, hexVal)
+ if len(hexVal) < 4:
+ hexVal = ("%4s" % hexVal).replace(' ', '0')
+ if debug:
+ print_(":hexVal:", c, hexVal)
out_ = ""
beg = ""
for i, l in enumerate(hexVal):
@@ -175,74 +203,103 @@ def translate(t, HUC6=False, unicodeBraille=True, debug=False):
if i % 2:
end = translateHUC8(hexVals[j], debug)
cleanCell = ''.join(sorted((beg + end))).replace('0', '')
- if not cleanCell: cleanCell = '0'
- if debug: print_(":cell %d:" % ((i+1)//2), cleanCell)
+ if not cleanCell:
+ cleanCell = '0'
+ if debug:
+ print_(":cell %d:" % ((i+1)//2), cleanCell)
out_ += cleanCell
else:
- if i != 0: out_ += "-"
+ if i != 0:
+ out_ += "-"
beg = hexVals[j]
if HUC6:
out_ = translateHUC6(out_, debug)
- if ord_ <= 0xFFFF: toAdd = '3'
- elif ord_ <= 0x1FFFF: toAdd = '6'
- else: toAdd = "36"
+ if ord_ <= 0xFFFF:
+ toAdd = '3'
+ elif ord_ <= 0x1FFFF:
+ toAdd = '6'
+ else:
+ toAdd = "36"
patternLastCell = "^.+-([0-6]+)$"
lastCell = re.sub(patternLastCell, r"\1", out_)
newLastCell = ''.join(sorted(toAdd + lastCell)).replace('0', '')
out_ = re.sub("-([0-6]+)$", '-'+newLastCell, out_)
- if unicodeBraille: out_ = cellDescriptionsToUnicodeBraille(out_)
+ if unicodeBraille:
+ out_ = cellDescriptionsToUnicodeBraille(out_)
out_ = pattern.replace('…', out_.strip('-'))
- if out and not unicodeBraille: out += '-'
+ if out and not unicodeBraille:
+ out += '-'
out += out_
return out
+
def splitInTwoCells(dotPattern):
c1 = ""
c2 = ""
for dot in dotPattern:
- if dot in ['3', '6', '7', '8']: c2 += dot
- elif dot in ['1', '2', '4', '5']: c1 += dot
- if c2: c2 = translateHUC8(c2)
- if not c1: c1 = '0'
- if not c2: c2 = '0'
+ if dot in ['3', '6', '7', '8']:
+ c2 += dot
+ elif dot in ['1', '2', '4', '5']:
+ c1 += dot
+ if c2:
+ c2 = translateHUC8(c2)
+ if not c1:
+ c1 = '0'
+ if not c2:
+ c2 = '0'
return [c1, c2]
+
def isValidHUCInput(s):
- if not s: return HUC_INPUT_INCOMPLETE
+ if not s:
+ return HUC_INPUT_INCOMPLETE
if len(s) == 1:
matchePatterns = [e for e in HUC8_patterns.keys() if e.startswith(s)]
- if matchePatterns: return HUC_INPUT_INCOMPLETE
- else: return HUC_INPUT_INVALID
+ if matchePatterns:
+ return HUC_INPUT_INCOMPLETE
+ else:
+ return HUC_INPUT_INVALID
prefix = s[0:2] if len(s) == 4 else s[0]
s = s[2:] if len(s) == 4 else s[1:]
size = len(s)
if prefix not in HUC8_patterns.keys():
if s:
- if prefix+s[0] in HUC8_patterns.keys(): return HUC_INPUT_INCOMPLETE
+ if prefix+s[0] in HUC8_patterns.keys():
+ return HUC_INPUT_INCOMPLETE
return HUC_INPUT_INVALID
- if size == 2: return HUC_INPUT_COMPLETE
- elif size < 2: return HUC_INPUT_INCOMPLETE
+ if size == 2:
+ return HUC_INPUT_COMPLETE
+ elif size < 2:
+ return HUC_INPUT_INCOMPLETE
return HUC_INPUT_INVALID
+
def backTranslateHUC8(s, debug=False):
- if len(s) not in [3, 4]: raise ValueError("Invalid size")
+ if len(s) not in [3, 4]:
+ raise ValueError("Invalid size")
prefix = s[0:2] if len(s) == 4 else s[0]
s = s[2:] if len(s) == 4 else s[1:]
- if prefix not in HUC8_patterns.keys(): raise ValueError("Invalid prefix")
+ if prefix not in HUC8_patterns.keys():
+ raise ValueError("Invalid prefix")
out = []
s = unicodeBrailleToDescription(s)
for c in s.split('-'):
out += splitInTwoCells(c)
return chr(HUC8_patterns[prefix][0] + int(''.join(["%x" % hexVals.index(out) for out in out]), 16))
+
def backTranslateHUC6(s, debug=False):
return '⠃'
+
def backTranslate(s, HUC6=False, debug=False):
func = backTranslateHUC6 if HUC6 else backTranslateHUC8
return func(s, debug=debug)
+
if __name__ == "__main__":
t = input("Text to translate: ")
- print("HUC8:\n- %s\n- %s" % (translate(t), translate(t, unicodeBraille=False)))
- print("HUC6:\n- %s\n- %s" % (translate(t, HUC6=True), translate(t, HUC6=True, unicodeBraille=False)))
+ print("HUC8:\n- %s\n- %s" %
+ (translate(t), translate(t, unicodeBraille=False)))
+ print("HUC6:\n- %s\n- %s" % (translate(t, HUC6=True),
+ translate(t, HUC6=True, unicodeBraille=False)))
diff --git a/addon/globalPlugins/brailleExtender/undefinedChars.py b/addon/globalPlugins/brailleExtender/undefinedChars.py
index dc9e3a70..3369b9a7 100644
--- a/addon/globalPlugins/brailleExtender/undefinedChars.py
+++ b/addon/globalPlugins/brailleExtender/undefinedChars.py
@@ -2,6 +2,16 @@
# undefinedChars.py
# Part of BrailleExtender addon for NVDA
# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
+from .utils import getCurrentBrailleTables
+from . import huc
+from . import configBE
+from .utils import getTextInBraille
+from .common import *
+import louis
+import config
+import characterProcessing
+import brailleTables
+import brailleInput
from collections import namedtuple
import codecs
import json
@@ -12,21 +22,12 @@
import addonHandler
addonHandler.initTranslation()
-import brailleInput
-import brailleTables
-import characterProcessing
-import config
-import louis
-from .common import *
-from .utils import getTextInBraille
-from . import configBE
-from . import huc
-from .utils import getCurrentBrailleTables
HUCDotPattern = "12345678-78-12345678"
undefinedCharPattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
+
def getHardValue():
selected = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
if selected == configBE.CHOICE_otherDots:
@@ -40,6 +41,7 @@ def getHardValue():
else:
return ""
+
def setUndefinedChar(t=None):
if not t or t > CHOICE_HUC6 or t < 0:
t = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
@@ -63,7 +65,8 @@ def setUndefinedChar(t=None):
v = huc.unicodeBrailleToDescription(
getTextInBraille(s, getCurrentBrailleTables())
)
- louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+ louis.compileString(getCurrentBrailleTables(),
+ bytes("undefined %s" % v, "ASCII"))
def getExtendedSymbolsForString(s: str) -> dict:
@@ -82,8 +85,8 @@ def getDescChar(c, lang="Windows", start="", end=""):
).replace(' ', '').strip()
if not desc or desc == c:
if config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
- configBE.CHOICE_HUC6,
- configBE.CHOICE_HUC8,
+ configBE.CHOICE_HUC6,
+ configBE.CHOICE_HUC8,
]:
HUC6 = (
config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
@@ -123,7 +126,8 @@ def undefinedCharProcess(self):
extendedSymbolsRawText = {}
if config.conf["brailleExtender"]["undefinedCharsRepr"]["extendedDesc"]:
extendedSymbolsRawText = getExtendedSymbolsForString(self.rawText)
- unicodeBrailleRepr = "".join([chr(10240 + cell) for cell in self.brailleCells])
+ unicodeBrailleRepr = "".join([chr(10240 + cell)
+ for cell in self.brailleCells])
allBraillePos = [
m.start() for m in re.finditer(undefinedCharPattern, unicodeBrailleRepr)
]
@@ -145,7 +149,7 @@ def undefinedCharProcess(self):
(
getDescChar(
self.rawText[
- self.brailleToRawPos[braillePos] : allExtendedPos[
+ self.brailleToRawPos[braillePos]: allExtendedPos[
self.brailleToRawPos[braillePos]
]
],
@@ -171,13 +175,14 @@ def undefinedCharProcess(self):
start=start,
end=end,
),
- table=[config.conf["brailleExtender"]["undefinedCharsRepr"]["table"]],
+ table=[config.conf["brailleExtender"]
+ ["undefinedCharsRepr"]["table"]],
)
for braillePos in allBraillePos
}
elif config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
- configBE.CHOICE_HUC6,
- configBE.CHOICE_HUC8,
+ configBE.CHOICE_HUC6,
+ configBE.CHOICE_HUC8,
]:
HUC6 = (
config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
@@ -205,7 +210,7 @@ def undefinedCharProcess(self):
for iBrailleCells, brailleCells in enumerate(self.brailleCells):
brailleToRawPos = self.brailleToRawPos[iBrailleCells]
if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(
- undefinedCharPattern[0]
+ undefinedCharPattern[0]
):
toAdd = [ord(c) - 10240 for c in replacements[iBrailleCells]]
newBrailleCells += toAdd
@@ -218,7 +223,7 @@ def undefinedCharProcess(self):
newBrailleCells.append(self.brailleCells[iBrailleCells])
newBrailleToRawPos += [i]
if (iBrailleCells + 1) < lenBrailleToRawPos and self.brailleToRawPos[
- iBrailleCells + 1
+ iBrailleCells + 1
] != brailleToRawPos:
i += 1
pos = -42
@@ -266,14 +271,16 @@ def makeSettings(self, settingsSizer):
self.undefinedCharReprList.SetSelection(
config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
)
- self.undefinedCharReprList.Bind(wx.EVT_CHOICE, self.onUndefinedCharReprList)
+ self.undefinedCharReprList.Bind(
+ wx.EVT_CHOICE, self.onUndefinedCharReprList)
# Translators: label of a dialog.
self.undefinedCharReprEdit = sHelper.addLabeledControl(
_("Specify another pattern"), wx.TextCtrl, value=self.getHardValue()
)
self.onUndefinedCharReprList()
self.undefinedCharDesc = sHelper.addItem(
- wx.CheckBox(self, label=_("Describe undefined characters if possible"))
+ wx.CheckBox(self, label=_(
+ "Describe undefined characters if possible"))
)
self.undefinedCharDesc.SetValue(
config.conf["brailleExtender"]["undefinedCharsRepr"]["desc"]
@@ -281,7 +288,8 @@ def makeSettings(self, settingsSizer):
self.undefinedCharDesc.Bind(wx.EVT_CHECKBOX, self.onUndefinedCharDesc)
self.undefinedCharExtendedDesc = sHelper.addItem(
wx.CheckBox(
- self, label=_("Also describe extended characters (e.g.: country flags)")
+ self, label=_(
+ "Also describe extended characters (e.g.: country flags)")
)
)
self.undefinedCharExtendedDesc.SetValue(
@@ -412,7 +420,8 @@ def getExtendedSymbols(locale):
try:
b, u = characterProcessing._getSpeechSymbolsForLocale(locale)
except LookupError:
- b, u = characterProcessing._getSpeechSymbolsForLocale(locale.split("_")[0])
+ b, u = characterProcessing._getSpeechSymbolsForLocale(
+ locale.split("_")[0])
a = {
k.strip(): v.replacement.replace(' ', '').strip()
for k, v in b.symbols.items()
From 137b8a3155e08cad9ed36b91e37492de191655f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 10 Apr 2020 11:26:02 +0200
Subject: [PATCH 54/87] Format code
---
.../brailleExtender/advancedInputMode.py | 29 ++--
addon/globalPlugins/brailleExtender/huc.py | 147 ++++++++++++------
.../brailleExtender/undefinedChars.py | 53 ++++---
3 files changed, 150 insertions(+), 79 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/advancedInputMode.py b/addon/globalPlugins/brailleExtender/advancedInputMode.py
index 003edd5c..c56d6036 100644
--- a/addon/globalPlugins/brailleExtender/advancedInputMode.py
+++ b/addon/globalPlugins/brailleExtender/advancedInputMode.py
@@ -2,21 +2,23 @@
# advancedInputMode.py
# Part of BrailleExtender addon for NVDA
# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
-from collections import namedtuple
import codecs
import json
-import gui
+from collections import namedtuple
+
import wx
import addonHandler
-
-addonHandler.initTranslation()
import brailleInput
import brailleTables
import config
+import gui
+
from .common import *
from .utils import getTextInBraille
+addonHandler.initTranslation()
+
AdvancedInputModeDictEntry = namedtuple(
"AdvancedInputModeDictEntry", ("abreviation", "replaceBy", "table")
)
@@ -196,8 +198,10 @@ def onEditClick(self, event):
return
editIndex = self.dictList.GetFirstSelected()
entryDialog = DictionaryEntryDlg(self)
- entryDialog.abreviationTextCtrl.SetValue(self.tmpDict[editIndex].abreviation)
- entryDialog.replaceByTextCtrl.SetValue(self.tmpDict[editIndex].replaceBy)
+ entryDialog.abreviationTextCtrl.SetValue(
+ self.tmpDict[editIndex].abreviation)
+ entryDialog.replaceByTextCtrl.SetValue(
+ self.tmpDict[editIndex].replaceBy)
if entryDialog.ShowModal() == wx.ID_OK:
entry = entryDialog.dictEntry
self.tmpDict[editIndex] = entry
@@ -254,7 +258,8 @@ def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
replaceByLabelText, wx.TextCtrl
)
- sHelper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK | wx.CANCEL))
+ sHelper.addDialogDismissButtons(
+ self.CreateButtonSizer(wx.OK | wx.CANCEL))
mainSizer.Add(sHelper.sizer, border=20, flag=wx.ALL)
mainSizer.Fit(self)
@@ -281,7 +286,8 @@ def makeSettings(self, settingsSizer):
# Translators: label of a dialog.
self.stopAdvancedInputModeAfterOneChar = sHelper.addItem(
wx.CheckBox(
- self, label=_("E&xit the advanced input mode after typing one pattern")
+ self, label=_(
+ "E&xit the advanced input mode after typing one pattern")
)
)
self.stopAdvancedInputModeAfterOneChar.SetValue(
@@ -294,9 +300,8 @@ def makeSettings(self, settingsSizer):
)
def onSave(self):
- config.conf["brailleExtender"]["advancedInputMode"][
- "stopAfterOneChar"
- ] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
+ config.conf["brailleExtender"]["advancedInputMode"]["stopAfterOneChar"] = self.stopAdvancedInputModeAfterOneChar.IsChecked()
s = self.escapeSignUnicodeValue.Value
if s:
- config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] = getTextInBraille(s[0])
+ config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"] = getTextInBraille(
+ s[0])
diff --git a/addon/globalPlugins/brailleExtender/huc.py b/addon/globalPlugins/brailleExtender/huc.py
index a6f1cd31..3cb3e655 100644
--- a/addon/globalPlugins/brailleExtender/huc.py
+++ b/addon/globalPlugins/brailleExtender/huc.py
@@ -6,10 +6,17 @@
import struct
isPy3 = sys.version_info >= (3, 0)
+
+
def chrPy2(i):
- try: return unichr(i)
- except ValueError: return struct.pack('i', i).decode('utf-32')
-if not isPy3: chr = chrPy2
+ try:
+ return unichr(i)
+ except ValueError:
+ return struct.pack('i', i).decode('utf-32')
+
+
+if not isPy3:
+ chr = chrPy2
HUC6_patterns = {
"⠿": (0x000000, 0x1FFFF),
@@ -63,6 +70,7 @@ def chrPy2(i):
print_ = print
+
def cellDescToChar(cell):
if not re.match("^[0-8]+$", cell):
return '?'
@@ -71,22 +79,27 @@ def cellDescToChar(cell):
toAdd += 1 << int(dot) - 1 if int(dot) > 0 else 0
return chr(0x2800 + toAdd)
+
def charToCellDesc(ch):
"""
Return a description of an unicode braille char
@param ch: the unicode braille character to describe
- must be between 0x2800 and 0x28FF included
+ must be between 0x2800 and 0x28FF included
@type ch: str
@return: the list of dots describing the braille cell
@rtype: str
@example: "d" -> "145"
"""
res = ""
- if len(ch) != 1: raise ValueError("Param size can only be one char (currently: %d)" % len(ch))
+ if len(ch) != 1:
+ raise ValueError(
+ "Param size can only be one char (currently: %d)" % len(ch))
p = ord(ch)
- if p >= 0x2800 and p <= 0x28FF: p -= 0x2800
- if p > 255: raise ValueError(r"It is not an unicode braille (%d)" % p)
- dots ={1: 1, 2: 2, 4: 3, 8: 4, 16: 5, 32: 6, 64: 7, 128: 8}
+ if p >= 0x2800 and p <= 0x28FF:
+ p -= 0x2800
+ if p > 255:
+ raise ValueError(r"It is not an unicode braille (%d)" % p)
+ dots = {1: 1, 2: 2, 4: 3, 8: 4, 16: 5, 32: 6, 64: 7, 128: 8}
i = 1
while p != 0:
if p - (128 / i) >= 0:
@@ -97,7 +110,7 @@ def charToCellDesc(ch):
def unicodeBrailleToDescription(t, sep='-'):
- return ''.join([('-'+charToCellDesc(ch)) if ord(ch) >= 0x2800 and ord(ch) <= 0x28FF and ch not in ['\n','\r'] else ch for ch in t]).strip(sep)
+ return ''.join([('-'+charToCellDesc(ch)) if ord(ch) >= 0x2800 and ord(ch) <= 0x28FF and ch not in ['\n', '\r'] else ch for ch in t]).strip(sep)
def cellDescriptionsToUnicodeBraille(t):
@@ -108,9 +121,11 @@ def getPrefixAndSuffix(c, HUC6=False):
ord_ = ord(c)
patterns = HUC6_patterns if HUC6 else HUC8_patterns
for pattern in patterns.items():
- if pattern[1][1] >= ord_: return pattern[0]
+ if pattern[1][1] >= ord_:
+ return pattern[0]
return '?'
+
def translateHUC6(dots, debug=False):
ref1 = "1237"
ref2 = "4568"
@@ -121,8 +136,10 @@ def translateHUC6(dots, debug=False):
for cell in data:
for dot in "12345678":
if dot not in cell:
- if dot in ref1: linedCells1.append('0')
- if dot in ref2: linedCells2.append('0')
+ if dot in ref1:
+ linedCells1.append('0')
+ if dot in ref2:
+ linedCells2.append('0')
else:
dotTemp = '0'
if dot in ref1:
@@ -137,23 +154,29 @@ def translateHUC6(dots, debug=False):
out = []
i = 0
for l1, l2 in zip(linedCells1, linedCells2):
- if i % 3 == 0: out.append("")
+ if i % 3 == 0:
+ out.append("")
cellTemp = (l1 if l1 != '0' else '') + (l2 if l2 != '0' else '')
cellTemp = ''.join(sorted(cellTemp))
out[-1] += cellTemp if cellTemp else '0'
out[-1] = ''.join(sorted([dot for dot in out[-1] if dot != '0']))
- if not out[-1]: out[-1] = '0'
+ if not out[-1]:
+ out[-1] = '0'
i += 1
- if debug: print_(":translateHUC6:", dots, "->", repr(out))
+ if debug:
+ print_(":translateHUC6:", dots, "->", repr(out))
out = '-'.join(out)
return out
+
def translateHUC8(dots, debug=False):
out = ""
newDots = "037168425"
- for dot in dots: out += newDots[int(dot)]
+ for dot in dots:
+ out += newDots[int(dot)]
out = ''.join(sorted(out))
- if debug: print_(":translateHUC8:", dots, "->", out)
+ if debug:
+ print_(":translateHUC8:", dots, "->", out)
return out
@@ -161,13 +184,18 @@ def translate(t, HUC6=False, unicodeBraille=True, debug=False):
out = ""
for c in t:
pattern = getPrefixAndSuffix(c, HUC6)
- if not unicodeBraille: pattern = unicodeBrailleToDescription(pattern)
- if '…' not in pattern: pattern += '…'
- if not unicodeBraille: pattern = pattern.replace('…', "-…")
+ if not unicodeBraille:
+ pattern = unicodeBrailleToDescription(pattern)
+ if '…' not in pattern:
+ pattern += '…'
+ if not unicodeBraille:
+ pattern = pattern.replace('…', "-…")
ord_ = ord(c)
hexVal = hex(ord_)[2:][-4:].upper()
- if len(hexVal) < 4: hexVal = ("%4s" % hexVal).replace(' ', '0')
- if debug: print_(":hexVal:", c, hexVal)
+ if len(hexVal) < 4:
+ hexVal = ("%4s" % hexVal).replace(' ', '0')
+ if debug:
+ print_(":hexVal:", c, hexVal)
out_ = ""
beg = ""
for i, l in enumerate(hexVal):
@@ -175,74 +203,103 @@ def translate(t, HUC6=False, unicodeBraille=True, debug=False):
if i % 2:
end = translateHUC8(hexVals[j], debug)
cleanCell = ''.join(sorted((beg + end))).replace('0', '')
- if not cleanCell: cleanCell = '0'
- if debug: print_(":cell %d:" % ((i+1)//2), cleanCell)
+ if not cleanCell:
+ cleanCell = '0'
+ if debug:
+ print_(":cell %d:" % ((i+1)//2), cleanCell)
out_ += cleanCell
else:
- if i != 0: out_ += "-"
+ if i != 0:
+ out_ += "-"
beg = hexVals[j]
if HUC6:
out_ = translateHUC6(out_, debug)
- if ord_ <= 0xFFFF: toAdd = '3'
- elif ord_ <= 0x1FFFF: toAdd = '6'
- else: toAdd = "36"
+ if ord_ <= 0xFFFF:
+ toAdd = '3'
+ elif ord_ <= 0x1FFFF:
+ toAdd = '6'
+ else:
+ toAdd = "36"
patternLastCell = "^.+-([0-6]+)$"
lastCell = re.sub(patternLastCell, r"\1", out_)
newLastCell = ''.join(sorted(toAdd + lastCell)).replace('0', '')
out_ = re.sub("-([0-6]+)$", '-'+newLastCell, out_)
- if unicodeBraille: out_ = cellDescriptionsToUnicodeBraille(out_)
+ if unicodeBraille:
+ out_ = cellDescriptionsToUnicodeBraille(out_)
out_ = pattern.replace('…', out_.strip('-'))
- if out and not unicodeBraille: out += '-'
+ if out and not unicodeBraille:
+ out += '-'
out += out_
return out
+
def splitInTwoCells(dotPattern):
c1 = ""
c2 = ""
for dot in dotPattern:
- if dot in ['3', '6', '7', '8']: c2 += dot
- elif dot in ['1', '2', '4', '5']: c1 += dot
- if c2: c2 = translateHUC8(c2)
- if not c1: c1 = '0'
- if not c2: c2 = '0'
+ if dot in ['3', '6', '7', '8']:
+ c2 += dot
+ elif dot in ['1', '2', '4', '5']:
+ c1 += dot
+ if c2:
+ c2 = translateHUC8(c2)
+ if not c1:
+ c1 = '0'
+ if not c2:
+ c2 = '0'
return [c1, c2]
+
def isValidHUCInput(s):
- if not s: return HUC_INPUT_INCOMPLETE
+ if not s:
+ return HUC_INPUT_INCOMPLETE
if len(s) == 1:
matchePatterns = [e for e in HUC8_patterns.keys() if e.startswith(s)]
- if matchePatterns: return HUC_INPUT_INCOMPLETE
- else: return HUC_INPUT_INVALID
+ if matchePatterns:
+ return HUC_INPUT_INCOMPLETE
+ else:
+ return HUC_INPUT_INVALID
prefix = s[0:2] if len(s) == 4 else s[0]
s = s[2:] if len(s) == 4 else s[1:]
size = len(s)
if prefix not in HUC8_patterns.keys():
if s:
- if prefix+s[0] in HUC8_patterns.keys(): return HUC_INPUT_INCOMPLETE
+ if prefix+s[0] in HUC8_patterns.keys():
+ return HUC_INPUT_INCOMPLETE
return HUC_INPUT_INVALID
- if size == 2: return HUC_INPUT_COMPLETE
- elif size < 2: return HUC_INPUT_INCOMPLETE
+ if size == 2:
+ return HUC_INPUT_COMPLETE
+ elif size < 2:
+ return HUC_INPUT_INCOMPLETE
return HUC_INPUT_INVALID
+
def backTranslateHUC8(s, debug=False):
- if len(s) not in [3, 4]: raise ValueError("Invalid size")
+ if len(s) not in [3, 4]:
+ raise ValueError("Invalid size")
prefix = s[0:2] if len(s) == 4 else s[0]
s = s[2:] if len(s) == 4 else s[1:]
- if prefix not in HUC8_patterns.keys(): raise ValueError("Invalid prefix")
+ if prefix not in HUC8_patterns.keys():
+ raise ValueError("Invalid prefix")
out = []
s = unicodeBrailleToDescription(s)
for c in s.split('-'):
out += splitInTwoCells(c)
return chr(HUC8_patterns[prefix][0] + int(''.join(["%x" % hexVals.index(out) for out in out]), 16))
+
def backTranslateHUC6(s, debug=False):
return '⠃'
+
def backTranslate(s, HUC6=False, debug=False):
func = backTranslateHUC6 if HUC6 else backTranslateHUC8
return func(s, debug=debug)
+
if __name__ == "__main__":
t = input("Text to translate: ")
- print("HUC8:\n- %s\n- %s" % (translate(t), translate(t, unicodeBraille=False)))
- print("HUC6:\n- %s\n- %s" % (translate(t, HUC6=True), translate(t, HUC6=True, unicodeBraille=False)))
+ print("HUC8:\n- %s\n- %s" %
+ (translate(t), translate(t, unicodeBraille=False)))
+ print("HUC6:\n- %s\n- %s" % (translate(t, HUC6=True),
+ translate(t, HUC6=True, unicodeBraille=False)))
diff --git a/addon/globalPlugins/brailleExtender/undefinedChars.py b/addon/globalPlugins/brailleExtender/undefinedChars.py
index dc9e3a70..2d90cfcd 100644
--- a/addon/globalPlugins/brailleExtender/undefinedChars.py
+++ b/addon/globalPlugins/brailleExtender/undefinedChars.py
@@ -2,31 +2,32 @@
# undefinedChars.py
# Part of BrailleExtender addon for NVDA
# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
-from collections import namedtuple
import codecs
import json
import re
-import gui
+from collections import namedtuple
+
import wx
import addonHandler
-
-addonHandler.initTranslation()
import brailleInput
import brailleTables
import characterProcessing
import config
+import gui
import louis
+from . import configBE, huc
from .common import *
-from .utils import getTextInBraille
-from . import configBE
-from . import huc
-from .utils import getCurrentBrailleTables
+from .utils import getCurrentBrailleTables, getTextInBraille
+
+addonHandler.initTranslation()
+
HUCDotPattern = "12345678-78-12345678"
undefinedCharPattern = huc.cellDescriptionsToUnicodeBraille(HUCDotPattern)
+
def getHardValue():
selected = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
if selected == configBE.CHOICE_otherDots:
@@ -40,6 +41,7 @@ def getHardValue():
else:
return ""
+
def setUndefinedChar(t=None):
if not t or t > CHOICE_HUC6 or t < 0:
t = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
@@ -63,7 +65,8 @@ def setUndefinedChar(t=None):
v = huc.unicodeBrailleToDescription(
getTextInBraille(s, getCurrentBrailleTables())
)
- louis.compileString(getCurrentBrailleTables(), bytes("undefined %s" % v, "ASCII"))
+ louis.compileString(getCurrentBrailleTables(),
+ bytes("undefined %s" % v, "ASCII"))
def getExtendedSymbolsForString(s: str) -> dict:
@@ -82,8 +85,8 @@ def getDescChar(c, lang="Windows", start="", end=""):
).replace(' ', '').strip()
if not desc or desc == c:
if config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
- configBE.CHOICE_HUC6,
- configBE.CHOICE_HUC8,
+ configBE.CHOICE_HUC6,
+ configBE.CHOICE_HUC8,
]:
HUC6 = (
config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
@@ -123,7 +126,8 @@ def undefinedCharProcess(self):
extendedSymbolsRawText = {}
if config.conf["brailleExtender"]["undefinedCharsRepr"]["extendedDesc"]:
extendedSymbolsRawText = getExtendedSymbolsForString(self.rawText)
- unicodeBrailleRepr = "".join([chr(10240 + cell) for cell in self.brailleCells])
+ unicodeBrailleRepr = "".join([chr(10240 + cell)
+ for cell in self.brailleCells])
allBraillePos = [
m.start() for m in re.finditer(undefinedCharPattern, unicodeBrailleRepr)
]
@@ -145,7 +149,7 @@ def undefinedCharProcess(self):
(
getDescChar(
self.rawText[
- self.brailleToRawPos[braillePos] : allExtendedPos[
+ self.brailleToRawPos[braillePos]: allExtendedPos[
self.brailleToRawPos[braillePos]
]
],
@@ -171,13 +175,14 @@ def undefinedCharProcess(self):
start=start,
end=end,
),
- table=[config.conf["brailleExtender"]["undefinedCharsRepr"]["table"]],
+ table=[config.conf["brailleExtender"]
+ ["undefinedCharsRepr"]["table"]],
)
for braillePos in allBraillePos
}
elif config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
- configBE.CHOICE_HUC6,
- configBE.CHOICE_HUC8,
+ configBE.CHOICE_HUC6,
+ configBE.CHOICE_HUC8,
]:
HUC6 = (
config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
@@ -205,7 +210,7 @@ def undefinedCharProcess(self):
for iBrailleCells, brailleCells in enumerate(self.brailleCells):
brailleToRawPos = self.brailleToRawPos[iBrailleCells]
if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(
- undefinedCharPattern[0]
+ undefinedCharPattern[0]
):
toAdd = [ord(c) - 10240 for c in replacements[iBrailleCells]]
newBrailleCells += toAdd
@@ -218,7 +223,7 @@ def undefinedCharProcess(self):
newBrailleCells.append(self.brailleCells[iBrailleCells])
newBrailleToRawPos += [i]
if (iBrailleCells + 1) < lenBrailleToRawPos and self.brailleToRawPos[
- iBrailleCells + 1
+ iBrailleCells + 1
] != brailleToRawPos:
i += 1
pos = -42
@@ -266,14 +271,16 @@ def makeSettings(self, settingsSizer):
self.undefinedCharReprList.SetSelection(
config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
)
- self.undefinedCharReprList.Bind(wx.EVT_CHOICE, self.onUndefinedCharReprList)
+ self.undefinedCharReprList.Bind(
+ wx.EVT_CHOICE, self.onUndefinedCharReprList)
# Translators: label of a dialog.
self.undefinedCharReprEdit = sHelper.addLabeledControl(
_("Specify another pattern"), wx.TextCtrl, value=self.getHardValue()
)
self.onUndefinedCharReprList()
self.undefinedCharDesc = sHelper.addItem(
- wx.CheckBox(self, label=_("Describe undefined characters if possible"))
+ wx.CheckBox(self, label=_(
+ "Describe undefined characters if possible"))
)
self.undefinedCharDesc.SetValue(
config.conf["brailleExtender"]["undefinedCharsRepr"]["desc"]
@@ -281,7 +288,8 @@ def makeSettings(self, settingsSizer):
self.undefinedCharDesc.Bind(wx.EVT_CHECKBOX, self.onUndefinedCharDesc)
self.undefinedCharExtendedDesc = sHelper.addItem(
wx.CheckBox(
- self, label=_("Also describe extended characters (e.g.: country flags)")
+ self, label=_(
+ "Also describe extended characters (e.g.: country flags)")
)
)
self.undefinedCharExtendedDesc.SetValue(
@@ -412,7 +420,8 @@ def getExtendedSymbols(locale):
try:
b, u = characterProcessing._getSpeechSymbolsForLocale(locale)
except LookupError:
- b, u = characterProcessing._getSpeechSymbolsForLocale(locale.split("_")[0])
+ b, u = characterProcessing._getSpeechSymbolsForLocale(
+ locale.split("_")[0])
a = {
k.strip(): v.replacement.replace(' ', '').strip()
for k, v in b.symbols.items()
From 870f49c1213efd520b82588b6be5d29269300e57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sun, 12 Apr 2020 07:21:32 +0200
Subject: [PATCH 55/87] Refactor features around braille tables
---
.../globalPlugins/brailleExtender/__init__.py | 30 ++-
.../brailleExtender/brailleTablesHelper.py | 70 +++++++
.../globalPlugins/brailleExtender/configBE.py | 49 +----
addon/globalPlugins/brailleExtender/patchs.py | 15 +-
.../globalPlugins/brailleExtender/settings.py | 196 +++++++-----------
5 files changed, 176 insertions(+), 184 deletions(-)
create mode 100644 addon/globalPlugins/brailleExtender/brailleTablesHelper.py
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 4a714320..7e421573 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -46,15 +46,18 @@
import virtualBuffers
from . import configBE
config.conf.spec["brailleExtender"] = configBE.getConfspec()
+from . import settings
from . import utils
from .updateCheck import *
from . import advancedInputMode
+from . import brailleTablesHelper
from . import dictionaries
from . import huc
-from . import patchs
-from . import settings
-from .common import *
from . import undefinedChars
+from .common import *
+from . import patchs
+
+
instanceGP = None
lang = configBE.lang
@@ -173,8 +176,7 @@ class GlobalPlugin(globalPluginHandler.GlobalPlugin):
_pGestures = OrderedDict()
rotorGES = {}
noKC = None
- if not configBE.noUnicodeTable:
- backupInputTable = brailleInput.handler.table
+ backupInputTable = brailleInput.handler.table
backupMessageTimeout = None
backupShowCursor = False
backupTether = utils.getTether()
@@ -320,7 +322,7 @@ def onDefaultDictionary(evt):
@staticmethod
def onTableDictionary(evt):
- outTable = configBE.tablesTR[configBE.tablesFN.index(config.conf["braille"]["translationTable"])]
+ outTable = brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])]
gui.mainFrame._popupSettingsDialog(dictionaries.DictionaryDlg, _("Table dictionary")+(" (%s)" % outTable), "table")
@staticmethod
@@ -628,7 +630,7 @@ def script_reportExtraInfos(self, gesture):
def script_getTableOverview(self, gesture):
inTable = brailleInput.handler.table.displayName
- ouTable = configBE.tablesTR[configBE.tablesFN.index(config.conf["braille"]["translationTable"])]
+ ouTable = brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])]
t = (_(" Input table")+": %s\n"+_("Output table")+": %s\n\n") % (inTable+' (%s)' % (brailleInput.handler.table.fileName), ouTable+' (%s)' % (config.conf["braille"]["translationTable"]))
t += utils.getTableOverview()
ui.browseableMessage("%s
" % t, _("Table overview (%s)" % brailleInput.handler.table.displayName), True)
@@ -855,8 +857,6 @@ def script_decreaseDelayAutoScroll(self, gesture):
script_decreaseDelayAutoScroll.__doc__ = _("Decrease autoscroll delay")
def script_switchInputBrailleTable(self, gesture):
- if configBE.noUnicodeTable:
- return ui.message(_("Please use NVDA 2017.3 minimum for this feature"))
if len(configBE.inputTables) < 2:
return ui.message(_("You must choose at least two tables for this feature. Please fill in the settings"))
if not config.conf["braille"]["inputTable"] in configBE.inputTables:
@@ -864,7 +864,7 @@ def script_switchInputBrailleTable(self, gesture):
tid = configBE.inputTables.index(config.conf["braille"]["inputTable"])
nID = tid + 1 if tid + 1 < len(configBE.inputTables) else 0
brailleInput.handler.table = brailleTables.listTables(
- )[configBE.tablesFN.index(configBE.inputTables[nID])]
+ )[brailleTablesHelper.listTablesFileName().index(configBE.inputTables[nID])]
ui.message(_("Input: %s") % brailleInput.handler.table.displayName)
return
@@ -872,9 +872,6 @@ def script_switchInputBrailleTable(self, gesture):
"Switch between his favorite input braille tables")
def script_switchOutputBrailleTable(self, gesture):
- if configBE.noUnicodeTable:
- return ui.message(
- _("Please use NVDA 2017.3 minimum for this feature"))
if len(configBE.outputTables) < 2:
return ui.message(_("You must choose at least two tables for this feature. Please fill in the settings"))
if not config.conf["braille"]["translationTable"] in configBE.outputTables:
@@ -885,14 +882,14 @@ def script_switchOutputBrailleTable(self, gesture):
config.conf["braille"]["translationTable"] = configBE.outputTables[nID]
utils.refreshBD()
dictionaries.setDictTables()
- ui.message(_("Output: %s") % configBE.tablesTR[configBE.tablesFN.index(config.conf["braille"]["translationTable"])])
+ ui.message(_("Output: %s") % brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])])
return
script_switchOutputBrailleTable.__doc__ = _("Switch between his favorite output braille tables")
def script_currentBrailleTable(self, gesture):
inTable = brailleInput.handler.table.displayName
- ouTable = configBE.tablesTR[configBE.tablesFN.index(config.conf["braille"]["translationTable"])]
+ ouTable = brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])]
if ouTable == inTable:
braille.handler.message(_("I⣿O:{I}").format(I=inTable, O=ouTable))
speech.speakMessage(_("Input and output: {I}.").format(I=inTable, O=ouTable))
@@ -1322,8 +1319,7 @@ def terminate(self):
self.removeMenu()
self.restorReviewCursorTethering()
configBE.discardRoleLabels()
- if configBE.noUnicodeTable:
- brailleInput.handler.table = self.backupInputTable
+ brailleInput.handler.table = self.backupInputTable
if self.hourDatePlayed:
self.hourDateTimer.Stop()
if configBE.noMessageTimeout:
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
new file mode 100644
index 00000000..62e303c7
--- /dev/null
+++ b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
@@ -0,0 +1,70 @@
+# coding: utf-8
+# brailleTablesHelper.py
+# Part of BrailleExtender addon for NVDA
+# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
+import brailleTables
+import config
+from typing import Optional, List, Tuple
+from logHandler import log
+
+listContractedTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.contracted]
+listUncontractedTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if not table.contracted]
+listInputTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.input]
+listOutputTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.output]
+listTablesFileName = lambda tables=None: [table.fileName for table in (tables or brailleTables.listTables())]
+listTablesDisplayName = lambda tables=None: [table.displayName for table in (tables or brailleTables.listTables())]
+
+def getPreferedTables() -> Tuple[List[str]]:
+ allInputTablesFileName = listTablesFileName(listInputTables())
+ allOutputTablesFileName = listTablesFileName(listOutputTables())
+ preferedInputTablesFileName = config.conf["brailleExtender"]["preferedInputTables"].split('|')
+ preferedOutputTablesFileName = config.conf["brailleExtender"]["preferedOutputTables"].split('|')
+ inputTables = [fn for fn in preferedInputTablesFileName if fn in allInputTablesFileName]
+ outputTables = [fn for fn in preferedOutputTablesFileName if fn in allOutputTablesFileName]
+ return inputTables, outputTables
+
+def getPreferedTablesIndexes() -> List[int]:
+ preferedInputTables, preferedOutputTables = getPreferedTables()
+ tablesFileName = [table.fileName for table in brailleTables.listTables()]
+ o = []
+ for l in [preferedInputTables, preferedOutputTables]:
+ o_ = []
+ for i, e in enumerate(l):
+ if e in tablesFileName: o_.append(tablesFileName.index(e))
+ o.append(o_)
+ return o
+
+def getPostTables() -> List[str]:
+ tablesFileName = [table.fileName for table in brailleTables.listTables()]
+ l = config.conf["brailleExtender"]["postTables"].split('|')
+ return [fn for fn in l if fn in tablesFileName]
+
+def getPostTablesIndexes() -> List[int]:
+ postTablesFileName = getPostTables()
+ tablesFileName = [table.fileName for table in brailleTables.listTables()]
+ o = []
+ for i, e in enumerate(postTablesFileName):
+ if e in tablesFileName: o.append(tablesFileName.index(e))
+ return o
+
+def cleanTablesFileName(tables: List[str], output: Optional[bool]=False) -> List[str]:
+ listTablesFileName = listTablesFileName()
+ for t in tables:
+ if not t in listTablesFileName: tables.remove(l)
+ return tables
+
+def getCustomBrailleTables():
+ return [config.conf["brailleExtender"]["brailleTables"][k].split('|', 3) for k in config.conf["brailleExtender"]["brailleTables"]]
+
+def isContractedTable(fileName):
+ listContractedTables = listContractedTables()
+ if fileName in tablesFN: return False
+ return brailleTables.listTables()[tablesFN.index(fileName)].contracted
+
+def getTablesFilenameByID(l: List[int]) -> List[int]:
+ listTablesFileName = [table.fileName for table in brailleTables.listTables()]
+ o = []
+ size = len(listTablesFileName)
+ for i in l:
+ if i < size: o.append(listTablesFileName[i])
+ return o
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 9a68551d..e27d35ba 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -15,6 +15,7 @@
import configobj
import inputCore
import languageHandler
+from . import brailleTablesHelper
from .common import *
Validator = configobj.validate.Validator
@@ -112,19 +113,10 @@
noMessageTimeout = True if 'noMessageTimeout' in config.conf["braille"] else False
outputTables = inputTables = None
-preTable = []
-postTable = []
+preTables = []
+postTables = []
if not os.path.exists(profilesDir): log.error('Profiles\' path not found')
else: log.debug('Profiles\' path (%s) found' % profilesDir)
-try:
- import brailleTables
- tables = brailleTables.listTables()
- tablesFN = [t[0] for t in brailleTables.listTables()]
- tablesUFN = [t[0] for t in brailleTables.listTables() if not t.contracted and t.output]
- tablesTR = [t[1] for t in brailleTables.listTables()]
- noUnicodeTable = False
-except BaseException:
- noUnicodeTable = True
def getValidBrailleDisplayPrefered():
l = braille.getDisplayList()
@@ -179,8 +171,8 @@ def getConfspec():
"speakRoutingTo": "boolean(default=True)",
"routingReviewModeWithCursorKeys": "boolean(default=False)",
"inputTableShortcuts": 'string(default="?")',
- "inputTables": 'string(default="%s")' % config.conf["braille"]["inputTable"] + ", unicode-braille.utb",
- "outputTables": "string(default=%s)" % config.conf["braille"]["translationTable"],
+ "preferedInputTables": f'string(default="{config.conf["braille"]["inputTable"]}|unicode-braille.utb")',
+ "preferedOutputTables": f'string(default="{config.conf["braille"]["translationTable"]}")',
"tabSpace": "boolean(default=False)",
f"tabSize_{curBD}": "integer(min=1, default=2, max=42)",
"undefinedCharsRepr": {
@@ -194,7 +186,7 @@ def getConfspec():
"lang": "string(default=Windows)",
"table": "string(default=current)"
},
- "postTable": 'string(default="None")',
+ "postTables": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
"oneHandMode": "boolean(default=False)",
@@ -254,22 +246,8 @@ def getConfspec():
"stopAfterOneChar": "boolean(default=True)",
"escapeSignUnicodeValue": "string(default=⠼)",
}
-
}
-def loadPreferedTables():
- global inputTables, outputTables
- listInputTables = [table[0] for table in brailleTables.listTables() if table.input]
- listOutputTables = [table[0] for table in brailleTables.listTables() if table.output]
- inputTables = config.conf["brailleExtender"]["inputTables"]
- outputTables = config.conf["brailleExtender"]["outputTables"]
- if not isinstance(inputTables, list):
- inputTables = inputTables.replace(', ', ',').split(',')
- if not isinstance(outputTables, list):
- outputTables = outputTables.replace(', ', ',').split(',')
- inputTables = [t for t in inputTables if t in listInputTables]
- outputTables = [t for t in outputTables if t in listOutputTables]
-
def getLabelFromID(idCategory, idLabel):
if idCategory == 0: return braille.roleLabels[int(idLabel)]
elif idCategory == 1: return braille.landmarkLabels[idLabel]
@@ -304,7 +282,7 @@ def discardRoleLabels():
backupRoleLabels = {}
def loadConf():
- global curBD, gesturesFileExists, profileFileExists, iniProfile
+ global curBD, gesturesFileExists, profileFileExists, iniProfile, inputTables, outputTables
curBD = braille.handler.display.name
try: brlextConf = config.conf["brailleExtender"].copy()
except configobj.validate.VdtValueError:
@@ -338,10 +316,10 @@ def loadConf():
limitCellsRight = int(config.conf["brailleExtender"]["rightMarginCells_%s" % curBD])
if (backupDisplaySize-limitCellsRight <= backupDisplaySize and limitCellsRight > 0):
braille.handler.displaySize = backupDisplaySize-limitCellsRight
- if not noUnicodeTable: loadPreferedTables()
- if config.conf["brailleExtender"]["inputTableShortcuts"] not in tablesUFN: config.conf["brailleExtender"]["inputTableShortcuts"] = '?'
+ if config.conf["brailleExtender"]["inputTableShortcuts"] not in brailleTablesHelper.listTablesFileName(brailleTablesHelper.listUncontractedTables()): config.conf["brailleExtender"]["inputTableShortcuts"] = '?'
if config.conf["brailleExtender"]["features"]["roleLabels"]:
loadRoleLabels(config.conf["brailleExtender"]["roleLabels"].copy())
+ inputTables, outputTables = brailleTablesHelper.getPreferedTables()
return True
def loadGestures():
@@ -394,11 +372,6 @@ def initGestures():
iniGestures["globalCommands.GlobalCommands"][g])).replace('br(' + curBD + '):', '')] = g
return gesturesFileExists, iniGestures
-def isContractedTable(table):
- if not table in tablesFN: return False
- tablePos = tablesFN.index(table)
- if brailleTables.listTables()[tablePos].contracted: return True
- return False
def getKeyboardLayout():
if (config.conf["brailleExtender"]["keyboardLayout_%s" % curBD] is not None
@@ -406,14 +379,10 @@ def getKeyboardLayout():
return iniProfile['keyboardLayouts'].keys().index(config.conf["brailleExtender"]["keyboardLayout_%s" % curBD])
else: return 0
-def getCustomBrailleTables():
- return [config.conf["brailleExtender"]["brailleTables"][k].split('|', 3) for k in config.conf["brailleExtender"]["brailleTables"]]
-
def getTabSize():
size = config.conf["brailleExtender"]["tabSize_%s" % curBD]
if size < 0: size = 2
return size
-
# remove old config files
cfgFile = globalVars.appArgs.configPath + r"\BrailleExtender.conf"
cfgFileAttribra = globalVars.appArgs.configPath + r"\attribra-BE.ini"
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index 8f9511ef..a39bb6e7 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -60,7 +60,7 @@
def sayCurrentLine():
global instanceGP
- if not instanceGP.autoScrollRunning:
+ if not instanceGP or not instanceGP.autoScrollRunning:
if getTether() == braille.handler.TETHER_REVIEW:
if config.conf["brailleExtender"]["speakScroll"] in [configBE.CHOICE_focusAndReview, configBE.CHOICE_review]:
scriptHandler.executeScript(globalCommands.commands.script_review_currentLine, None)
@@ -112,8 +112,9 @@ def update(self):
"""
mode = louis.dotsIO
if config.conf["braille"]["expandAtCursor"] and self.cursorPos is not None: mode |= louis.compbrlAtCursor
+ BRFMode = instanceGP.BRFMode if instanceGP else False
self.brailleCells, self.brailleToRawPos, self.rawToBraillePos, self.brailleCursorPos = louisHelper.translate(
- getCurrentBrailleTables(brf=instanceGP.BRFMode),
+ getCurrentBrailleTables(brf=BRFMode),
self.rawText,
typeform=self.rawTextTypeforms,
mode=mode,
@@ -133,7 +134,8 @@ def update(self):
self.brailleCells[pos] |= SELECTION_SHAPE()
except IndexError: pass
else:
- if instanceGP and instanceGP.hideDots78:
+ hideDots78 = instanceGP.hideDots78 if instanceGP else False
+ if hideDots78:
self.brailleCells = [(cell & 63) for cell in self.brailleCells]
@@ -191,7 +193,8 @@ def executeGesture(self, gesture):
script = gesture.script
if "brailleDisplayDrivers" in str(type(gesture)):
- if instanceGP.brailleKeyboardLocked and ((hasattr(script, "__func__") and script.__func__.__name__ != "script_toggleLockBrailleKeyboard") or not hasattr(script, "__func__")): return
+ brailleKeyboardLocked = instanceGP.brailleKeyboardLocked if instanceGP else False
+ if brailleKeyboardLocked and ((hasattr(script, "__func__") and script.__func__.__name__ != "script_toggleLockBrailleKeyboard") or not hasattr(script, "__func__")): return
if not config.conf["brailleExtender"]['stopSpeechUnknown'] and gesture.script == None: stopSpeech = False
elif hasattr(script, "__func__") and (script.__func__.__name__ in [
"script_braille_dots", "script_braille_enter",
@@ -302,7 +305,7 @@ def emulateKey(self, key, withModifiers=True):
gesture = key
try:
inputCore.manager.emulateGesture(keyboardHandler.KeyboardInputGesture.fromName(gesture))
- instanceGP.lastShortcutPerformed = gesture
+ if instanceGP: instanceGP.lastShortcutPerformed = gesture
except BaseException:
log.debugWarning("Unable to emulate %r, falling back to sending unicode characters"%gesture, exc_info=True)
self.sendChars(key)
@@ -326,7 +329,7 @@ def input_(self, dots):
if instanceGP:
focusObj = api.getFocusObject()
ok = not self.currentModifiers and (not focusObj.treeInterceptor or focusObj.treeInterceptor.passThrough)
- if instanceGP.advancedInput and ok:
+ if instanceGP and instanceGP.advancedInput and ok:
pos = self.untranslatedStart + self.untranslatedCursorPos
advancedInputStr = ''.join([chr(cell | 0x2800) for cell in self.bufferBraille[:pos]])
if advancedInputStr:
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index f5f017ed..aeab1a24 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -13,6 +13,7 @@
import re
import addonHandler
import braille
+import brailleTables
import config
import controlTypes
import core
@@ -27,6 +28,7 @@
from . import utils
from .common import *
from . import advancedInputMode
+from . import brailleTablesHelper
from . import undefinedChars
instanceGP = None
@@ -335,152 +337,104 @@ class BrailleTablesDlg(gui.settingsDialogs.SettingsPanel):
title = _("Braille tables")
def makeSettings(self, settingsSizer):
- self.oTables = set(configBE.outputTables)
- self.iTables = set(configBE.inputTables)
- lt = [_("Use the current input table")]
- for table in configBE.tables:
- if table.output and not table.contracted: lt.append(table[1])
- if config.conf["brailleExtender"]["inputTableShortcuts"] in configBE.tablesUFN:
- iSht = configBE.tablesUFN.index(config.conf["brailleExtender"]["inputTableShortcuts"]) + 1
- else: iSht = 0
+ listPreferedTablesIndexes = brailleTablesHelper.getPreferedTablesIndexes()
+ currentTableLabel = _("Use the current input table")
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
- self.tables = sHelper.addLabeledControl(_("Prefered braille tables")+" (%s)" % _("press F1 for help"), wx.Choice, choices=self.getTablesWithSwitches())
- self.tables.SetSelection(0)
- self.tables.Bind(wx.EVT_CHAR, self.onTables)
+ listTables = [f"{table.displayName}, {table.fileName}" for table in brailleTables.listTables()]
+ label = _("Prefered input tables")
+ self.inputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTables)
+ self.inputTables.CheckedItems = listPreferedTablesIndexes[0]
+ self.inputTables.Select(0)
- self.inputTableShortcuts = sHelper.addLabeledControl(_("Input braille table for keyboard shortcut keys"), wx.Choice, choices=lt)
- self.inputTableShortcuts.SetSelection(iSht)
- lt = [_('None')]
- for table in configBE.tables:
- if table.output: lt.append(table[1])
- self.postTable = sHelper.addLabeledControl(_("Secondary output table to use"), wx.Choice, choices=lt)
- self.postTable.SetSelection(configBE.tablesFN.index(config.conf["brailleExtender"]["postTable"]) if config.conf["brailleExtender"]["postTable"] in configBE.tablesFN else 0)
+ label = _("Prefered output tables")
+ self.outputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTables)
+ self.outputTables.CheckedItems = listPreferedTablesIndexes[1]
+ self.outputTables.Select(0)
+
+ listUncontractedTables = brailleTablesHelper.listTablesDisplayName(brailleTablesHelper.listUncontractedTables())
+ label = _("Input braille table for keyboard shortcut keys")
+ self.inputTableShortcuts = sHelper.addLabeledControl(label, wx.Choice, choices=[currentTableLabel] + listUncontractedTables)
+ #self.inputTableShortcuts.SetSelection(iSht)
+
+ self.tablesGroupBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Groups of tables"), wx.DefaultPosition)
+ self.tablesGroupBtn.Bind(wx.EVT_BUTTON, self.onTablesGroupsBtn)
+
+ self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
+ self.customBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onCustomBrailleTablesBtn)
# Translators: label of a dialog.
self.tabSpace = sHelper.addItem(wx.CheckBox(self, label=_("Display &tab signs as spaces")))
self.tabSpace.SetValue(config.conf["brailleExtender"]["tabSpace"])
+ self.tabSpace.Bind(wx.EVT_CHECKBOX, self.onTabSpace)
# Translators: label of a dialog.
self.tabSize = sHelper.addLabeledControl(_("Number of &space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
- self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
- self.customBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onCustomBrailleTablesBtn)
sHelper.addItem(bHelper1)
+ self.onTabSpace()
+
+ def onTabSpace(self, evt=None):
+ if self.tabSpace.IsChecked(): self.tabSize.Enable()
+ else: self.tabSize.Disable()
+
+ def onTablesGroupsBtn(self, evt):
+ tablesGroupsDlg = TablesGroupsDlg(self, multiInstanceAllowed=True)
+ tablesGroupsDlg.ShowModal()
+
+ def onCustomBrailleTablesBtn(self, evt):
+ customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
+ customBrailleTablesDlg.ShowModal()
def postInit(self): self.tables.SetFocus()
def onSave(self):
- config.conf["brailleExtender"]["outputTables"] = ','.join(self.oTables)
- config.conf["brailleExtender"]["inputTables"] = ','.join(self.iTables)
- config.conf["brailleExtender"]["inputTableShortcuts"] = configBE.tablesUFN[self.inputTableShortcuts.GetSelection()-1] if self.inputTableShortcuts.GetSelection()>0 else '?'
- postTableID = self.postTable.GetSelection()
- postTable = "None" if postTableID == 0 else configBE.tablesFN[postTableID]
- config.conf["brailleExtender"]["postTable"] = postTable
- if self.tabSpace.IsChecked() and config.conf["brailleExtender"]["tabSpace"] != self.tabSpace.IsChecked():
- restartRequired = True
- else: restartRequired = False
+ inputTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(self.inputTables.CheckedItems))
+ outputTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(self.outputTables.CheckedItems))
+ #postTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(self.postTables.CheckedItems))
+ config.conf["brailleExtender"]["inputTables"] = ','.join(inputTables)
+ config.conf["brailleExtender"]["outputTables"] = ','.join(outputTables)
+ #config.conf["brailleExtender"]["postTables"] = postTables
+ config.conf["brailleExtender"]["inputTableShortcuts"] = configBE.tablesUFN[self.inputTableShortcuts.GetSelection()-1] if self.inputTableShortcuts.GetSelection() > 0 else '?'
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
- config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD] = self.tabSize.Value
- if restartRequired:
- res = gui.messageBox(
- _("NVDA must be restarted for some new options to take effect. Do you want restart now?"),
- _("Braille Extender"),
- style=wx.YES_NO|wx.ICON_INFORMATION
- )
- if res == wx.YES: core.restart()
-
- def getTablesWithSwitches(self):
- out = []
- for i, tbl in enumerate(configBE.tablesTR):
- out.append("%s%s: %s" % (tbl, punctuationSeparator, self.getInSwitchesText(configBE.tablesFN[i])))
- return out
+ config.conf["brailleExtender"][f"tabSize_{configBE.curBD}"] = self.tabSize.Value
+ configBE.inputTables, configBE.outputTables = brailleTablesHelper.getPreferedTables()
- def getCurrentSelection(self):
- idx = self.tables.GetSelection()
- tbl = configBE.tablesFN[self.tables.GetSelection()]
- return idx, tbl
-
- def setCurrentSelection(self, tbl, newLoc):
- if newLoc == "io":
- self.iTables.add(tbl)
- self.oTables.add(tbl)
- elif newLoc == "i":
- self.iTables.add(tbl)
- self.oTables.discard(tbl)
- elif newLoc == "o":
- self.oTables.add(tbl)
- self.iTables.discard(tbl)
- elif newLoc == "n":
- self.iTables.discard(tbl)
- self.oTables.discard(tbl)
-
- def inSwitches(self, tbl):
- inp = tbl in self.iTables
- out = tbl in self.oTables
- return [inp, out]
-
- def getInSwitchesText(self, tbl):
- inS = self.inSwitches(tbl)
- if all(inS): inSt = _("input and output")
- elif not any(inS): inSt = _("none")
- elif inS[0]: inSt = _("input only")
- elif inS[1]: inSt = _("output only")
- return inSt
-
- def changeSwitch(self, tbl, direction=1, loop=True):
- dirs = ['n', 'i', 'o', "io"]
- iCurDir = 0
- inS = self.inSwitches(tbl)
- if all(inS): iCurDir = dirs.index("io")
- elif not any(inS): iCurDir = dirs.index('n')
- elif inS[0]: iCurDir = dirs.index('i')
- elif inS[1]: iCurDir = dirs.index('o')
-
- if len(dirs)-1 == iCurDir and direction == 1 and loop: newDir = dirs[0]
- elif iCurDir == 0 and direction == 0 and loop: newDir = dirs[-1]
- elif iCurDir < len(dirs)-1 and direction == 1: newDir = dirs[iCurDir+1]
- elif iCurDir > 0 and iCurDir < len(dirs) and direction == 0: newDir = dirs[iCurDir-1]
- else: return
- self.setCurrentSelection(tbl, newDir)
+class TablesGroupsDlg(gui.settingsDialogs.SettingsDialog):
- def onCustomBrailleTablesBtn(self, evt):
- customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
- customBrailleTablesDlg.ShowModal()
+ # Translators: title of a dialog.
+ title = f"{addonName} - %s" % _("Groups of tables")
+
+ def makeSettings(self, settingsSizer):
+ wx.CallAfter(notImplemented)
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ self.addTablesGroupBtn = bHelper.addButton(self, wx.NewId(), "%s..." % _("&Add a group"), wx.DefaultPosition)
+ self.addTablesGroupBtn.Bind(wx.EVT_BUTTON, self.onAddTablesGroupBtn)
+ sHelper.addItem(bHelper)
+
+ def addTablesGroupBtn(self, evt):
+ addTablesGroupDlg = AddTablesGroupDlg(self, multiInstanceAllowed=True)
+ addTablesGroupDlg.ShowModal()
- def onTables(self, evt):
- keycode = evt.GetKeyCode()
- if keycode in [ord(','), ord(';')]:
- idx, tbl = self.getCurrentSelection()
- if keycode == ord(','):
- queueHandler.queueFunction(queueHandler.eventQueue, ui.message, "%s" % tbl)
- else:
- ui.browseableMessage('\n'.join([
- _("Table name: %s") % configBE.tablesTR[idx],
- _("File name: %s") % tbl,
- _("In switches: %s") % self.getInSwitchesText(tbl)
- ]), _("About this table"), False)
- if keycode == wx.WXK_F1:
- ui.browseableMessage(
- _("In this combo box, all tables are present. Press space bar, left or right arrow keys to include (or not) the selected table in switches")+".\n"+
- _("You can also press 'comma' key to get the file name of the selected table and 'semicolon' key to view miscellaneous infos on the selected table")+".",
- _("Contextual help"), False)
- if keycode in [wx.WXK_LEFT, wx.WXK_RIGHT, wx.WXK_SPACE]:
- idx, tbl = self.getCurrentSelection()
- if keycode == wx.WXK_LEFT: self.changeSwitch(tbl, 0, False)
- elif keycode == wx.WXK_RIGHT: self.changeSwitch(tbl, 1, False)
- elif keycode == wx.WXK_SPACE: self.changeSwitch(tbl, 1, True)
- newSwitch = self.getInSwitchesText(tbl)
- self.tables.SetString(self.tables.GetSelection(), "%s%s: %s" % (configBE.tablesTR[idx], punctuationSeparator, newSwitch))
- queueHandler.queueFunction(queueHandler.eventQueue, ui.message, "%s" % newSwitch)
- utils.refreshBD()
- else: evt.Skip()
+class AddTablesGroupDlg(gui.settingsDialogs.SettingsDialog):
+
+ title = _("Add a group of tables")
+
+ def makeSettings(self, settingsSizer):
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ self.name = sHelper.addLabeledControl(_("Group name"), wx.TextCtrl)
+ self.description = sHelper.addLabeledControl(_("Description"), wx.TextCtrl, style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER, size = (360, 90), pos=(-1,-1))
+ label = _(f"Group members")
+ self.members = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listUncontractedTables)
+ #self.outputTables.CheckedItems = brailleTablesHelper.getPostTablesIndexes()
+ self.outputTables.Select(0)
class CustomBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
# Translators: title of a dialog.
- title = "Braille Extender - %s" % _("Custom braille tables")
+ title = f"{addonName} - %s" % _("Custom braille tables")
providedTablesPath = "%s/res/brailleTables.json" % configBE.baseDir
userTablesPath = "%s/brailleTables.json" % configBE.configDir
From 0f8c2f83d02c42044955068843c99ff97da8e8cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Mon, 13 Apr 2020 04:05:49 +0200
Subject: [PATCH 56/87] settings: fixes on 'representation of undefined
characters' and 'braille tables' categories
---
.../brailleExtender/brailleTablesHelper.py | 16 ++++++++++
.../globalPlugins/brailleExtender/settings.py | 29 ++++++++++++++++---
.../brailleExtender/undefinedChars.py | 20 ++++---------
3 files changed, 47 insertions(+), 18 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
index 62e303c7..2eb58e48 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
@@ -2,11 +2,14 @@
# brailleTablesHelper.py
# Part of BrailleExtender addon for NVDA
# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
+import addonHandler
import brailleTables
import config
from typing import Optional, List, Tuple
from logHandler import log
+addonHandler.initTranslation()
+
listContractedTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.contracted]
listUncontractedTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if not table.contracted]
listInputTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.input]
@@ -14,6 +17,13 @@
listTablesFileName = lambda tables=None: [table.fileName for table in (tables or brailleTables.listTables())]
listTablesDisplayName = lambda tables=None: [table.displayName for table in (tables or brailleTables.listTables())]
+def fileName2displayName(l):
+ allTablesFileName = listTablesFileName()
+ o = []
+ for e in l:
+ if e in allTablesFileName: o.append(allTablesFileName.index(e))
+ return ', '.join([brailleTables.listTables()[e].displayName for e in o])
+
def getPreferedTables() -> Tuple[List[str]]:
allInputTablesFileName = listTablesFileName(listInputTables())
allOutputTablesFileName = listTablesFileName(listOutputTables())
@@ -68,3 +78,9 @@ def getTablesFilenameByID(l: List[int]) -> List[int]:
for i in l:
if i < size: o.append(listTablesFileName[i])
return o
+
+def translateUsableIn(s):
+ if s.startswith('i:'): return _("input")
+ elif s.startswith('o:'): return _("output")
+ elif s.startswith('io:'): return _("input and output")
+ else: return _("None")
\ No newline at end of file
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index aeab1a24..fcf7a6be 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -358,7 +358,7 @@ def makeSettings(self, settingsSizer):
self.inputTableShortcuts = sHelper.addLabeledControl(label, wx.Choice, choices=[currentTableLabel] + listUncontractedTables)
#self.inputTableShortcuts.SetSelection(iSht)
- self.tablesGroupBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Groups of tables"), wx.DefaultPosition)
+ self.tablesGroupBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Groups of tables"), wx.DefaultPosition)
self.tablesGroupBtn.Bind(wx.EVT_BUTTON, self.onTablesGroupsBtn)
self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
@@ -409,26 +409,47 @@ def makeSettings(self, settingsSizer):
wx.CallAfter(notImplemented)
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ groupsLabelText = _("List of table groups")
+ self.groupsList = sHelper.addLabeledControl(groupsLabelText, wx.ListCtrl, style=wx.LC_REPORT|wx.LC_SINGLE_SEL,size=(550,350))
+ self.groupsList.InsertColumn(0, _("Name"), width=150)
+ self.groupsList.InsertColumn(1, _("Members"), width=150)
+ self.groupsList.InsertColumn(2, _("Usable in"), width=150)
+ self.onSetGroups()
self.addTablesGroupBtn = bHelper.addButton(self, wx.NewId(), "%s..." % _("&Add a group"), wx.DefaultPosition)
self.addTablesGroupBtn.Bind(wx.EVT_BUTTON, self.onAddTablesGroupBtn)
sHelper.addItem(bHelper)
- def addTablesGroupBtn(self, evt):
+
+ def onSetGroups(self, evt=None):
+ groups = {
+ "Fake group 1": "i:en-ueb-g1.ctb|fr-bfu-comp8.utb",
+ "Fake group 2": "o:ru.ctb|fr-bfu-comp8.utb",
+ "Fake group 3": "n:ru.ctb|en-ueb-g1.ctb",
+ }
+ for name, desc in groups.items():
+ self.groupsList.Append((
+ name,
+ brailleTablesHelper.fileName2displayName(desc.split(':')[-1].split('|')),
+ brailleTablesHelper.translateUsableIn(desc),
+ ))
+
+ def onAddTablesGroupBtn(self, evt):
addTablesGroupDlg = AddTablesGroupDlg(self, multiInstanceAllowed=True)
addTablesGroupDlg.ShowModal()
class AddTablesGroupDlg(gui.settingsDialogs.SettingsDialog):
-
+
title = _("Add a group of tables")
def makeSettings(self, settingsSizer):
+ listUncontractedTables = brailleTablesHelper.listTablesDisplayName(brailleTablesHelper.listUncontractedTables())
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
self.name = sHelper.addLabeledControl(_("Group name"), wx.TextCtrl)
self.description = sHelper.addLabeledControl(_("Description"), wx.TextCtrl, style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER, size = (360, 90), pos=(-1,-1))
label = _(f"Group members")
self.members = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listUncontractedTables)
#self.outputTables.CheckedItems = brailleTablesHelper.getPostTablesIndexes()
- self.outputTables.Select(0)
+ #self.outputTables.Select(0)
class CustomBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
diff --git a/addon/globalPlugins/brailleExtender/undefinedChars.py b/addon/globalPlugins/brailleExtender/undefinedChars.py
index ff6e9e82..1b30ab33 100644
--- a/addon/globalPlugins/brailleExtender/undefinedChars.py
+++ b/addon/globalPlugins/brailleExtender/undefinedChars.py
@@ -19,6 +19,7 @@
from . import configBE, huc
from .common import *
+from . import brailleTablesHelper
from .utils import getCurrentBrailleTables, getTextInBraille
addonHandler.initTranslation()
@@ -314,17 +315,10 @@ def makeSettings(self, settingsSizer):
_("Language"), wx.Choice, choices=values
)
self.undefinedCharLang.SetSelection(undefinedCharLangID)
- values = [_("Use the current output table")] + [
- table.displayName for table in configBE.tables if table.output
- ]
- keys = ["current"] + [
- table.fileName for table in configBE.tables if table.output
- ]
- undefinedCharTable = config.conf["brailleExtender"]["undefinedCharsRepr"][
- "table"
- ]
- if undefinedCharTable not in configBE.tablesFN + ["current"]:
- undefinedCharTable = "current"
+ values = [_("Use the current output table")] + brailleTablesHelper.listTablesDisplayName(brailleTablesHelper.listOutputTables())
+ keys = ["current"] + brailleTablesHelper.listTablesFileName(brailleTablesHelper.listOutputTables())
+ undefinedCharTable = config.conf["brailleExtender"]["undefinedCharsRepr"]["table"]
+ if undefinedCharTable not in keys: undefinedCharTable = "current"
undefinedCharTableID = keys.index(undefinedCharTable)
self.undefinedCharTable = sHelper.addLabeledControl(
_("Braille table"), wx.Choice, choices=values
@@ -405,9 +399,7 @@ def onSave(self):
0
]
undefinedCharTable = self.undefinedCharTable.GetSelection()
- keys = ["current"] + [
- table.fileName for table in configBE.tables if table.output
- ]
+ keys = ["current"] + brailleTablesHelper.listTablesFileName(brailleTablesHelper.listOutputTables())
config.conf["brailleExtender"]["undefinedCharsRepr"]["table"] = keys[
undefinedCharTable
]
From 3978bafd2d6e24a597dfb836c057d18f172f5108 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Mon, 13 Apr 2020 05:17:55 +0200
Subject: [PATCH 57/87] Prefered tables: more fixes (settings)
---
.../brailleExtender/brailleTablesHelper.py | 13 ++++++------
.../globalPlugins/brailleExtender/configBE.py | 8 +++++--
.../globalPlugins/brailleExtender/settings.py | 21 +++++++++++++------
3 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
index 2eb58e48..71469b35 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
@@ -35,12 +35,13 @@ def getPreferedTables() -> Tuple[List[str]]:
def getPreferedTablesIndexes() -> List[int]:
preferedInputTables, preferedOutputTables = getPreferedTables()
- tablesFileName = [table.fileName for table in brailleTables.listTables()]
+ inputTables = listTablesFileName(listInputTables())
+ outputTables = listTablesFileName(listOutputTables())
o = []
- for l in [preferedInputTables, preferedOutputTables]:
+ for a, b in [(preferedInputTables, inputTables), (preferedOutputTables, outputTables)]:
o_ = []
- for i, e in enumerate(l):
- if e in tablesFileName: o_.append(tablesFileName.index(e))
+ for e in a:
+ if e in b: o_.append(b.index(e))
o.append(o_)
return o
@@ -71,8 +72,8 @@ def isContractedTable(fileName):
if fileName in tablesFN: return False
return brailleTables.listTables()[tablesFN.index(fileName)].contracted
-def getTablesFilenameByID(l: List[int]) -> List[int]:
- listTablesFileName = [table.fileName for table in brailleTables.listTables()]
+def getTablesFilenameByID(l: List[int], tables=None) -> List[int]:
+ listTablesFileName = [table.fileName for table in (tables or brailleTables.listTables())]
o = []
size = len(listTablesFileName)
for i in l:
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index e27d35ba..5a00215b 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -282,7 +282,7 @@ def discardRoleLabels():
backupRoleLabels = {}
def loadConf():
- global curBD, gesturesFileExists, profileFileExists, iniProfile, inputTables, outputTables
+ global curBD, gesturesFileExists, profileFileExists, iniProfile
curBD = braille.handler.display.name
try: brlextConf = config.conf["brailleExtender"].copy()
except configobj.validate.VdtValueError:
@@ -319,9 +319,13 @@ def loadConf():
if config.conf["brailleExtender"]["inputTableShortcuts"] not in brailleTablesHelper.listTablesFileName(brailleTablesHelper.listUncontractedTables()): config.conf["brailleExtender"]["inputTableShortcuts"] = '?'
if config.conf["brailleExtender"]["features"]["roleLabels"]:
loadRoleLabels(config.conf["brailleExtender"]["roleLabels"].copy())
- inputTables, outputTables = brailleTablesHelper.getPreferedTables()
+ initializePreferedTables()
return True
+def initializePreferedTables():
+ global inputTables, outputTables
+ inputTables, outputTables = brailleTablesHelper.getPreferedTables()
+
def loadGestures():
if gesturesFileExists:
if os.path.exists(os.path.join(profilesDir, "_BrowseMode", config.conf["braille"]["inputTable"] + ".ini")): GLng = config.conf["braille"]["inputTable"]
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index fcf7a6be..f3fb821e 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -342,12 +342,13 @@ def makeSettings(self, settingsSizer):
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
- listTables = [f"{table.displayName}, {table.fileName}" for table in brailleTables.listTables()]
+ listTables = [f"{table.displayName}, {table.fileName}" for table in brailleTables.listTables() if table.input]
label = _("Prefered input tables")
self.inputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTables)
self.inputTables.CheckedItems = listPreferedTablesIndexes[0]
self.inputTables.Select(0)
+ listTables = [f"{table.displayName}, {table.fileName}" for table in brailleTables.listTables() if table.output]
label = _("Prefered output tables")
self.outputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTables)
self.outputTables.CheckedItems = listPreferedTablesIndexes[1]
@@ -389,16 +390,24 @@ def onCustomBrailleTablesBtn(self, evt):
def postInit(self): self.tables.SetFocus()
def onSave(self):
- inputTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(self.inputTables.CheckedItems))
- outputTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(self.outputTables.CheckedItems))
+ inputTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(
+ self.inputTables.CheckedItems,
+ brailleTablesHelper.listInputTables()
+ ))
+ outputTables = '|'.join(
+ brailleTablesHelper.getTablesFilenameByID(
+ self.outputTables.CheckedItems,
+ brailleTablesHelper.listOutputTables()
+ )
+ )
#postTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(self.postTables.CheckedItems))
- config.conf["brailleExtender"]["inputTables"] = ','.join(inputTables)
- config.conf["brailleExtender"]["outputTables"] = ','.join(outputTables)
+ config.conf["brailleExtender"]["preferedInputTables"] = inputTables
+ config.conf["brailleExtender"]["preferedOutputTables"] = outputTables
#config.conf["brailleExtender"]["postTables"] = postTables
config.conf["brailleExtender"]["inputTableShortcuts"] = configBE.tablesUFN[self.inputTableShortcuts.GetSelection()-1] if self.inputTableShortcuts.GetSelection() > 0 else '?'
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"][f"tabSize_{configBE.curBD}"] = self.tabSize.Value
- configBE.inputTables, configBE.outputTables = brailleTablesHelper.getPreferedTables()
+ configBE.initializePreferedTables()
class TablesGroupsDlg(gui.settingsDialogs.SettingsDialog):
From abd71006fd4a3c59d4887b402ce8d4f054ad124e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Mon, 13 Apr 2020 07:24:45 +0200
Subject: [PATCH 58/87] Small fixes
---
.../brailleExtender/brailleTablesHelper.py | 11 ++---------
addon/globalPlugins/brailleExtender/settings.py | 14 ++++++++++++++
2 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
index 71469b35..61a4ec73 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
@@ -2,6 +2,7 @@
# brailleTablesHelper.py
# Part of BrailleExtender addon for NVDA
# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
+
import addonHandler
import brailleTables
import config
@@ -58,19 +59,11 @@ def getPostTablesIndexes() -> List[int]:
if e in tablesFileName: o.append(tablesFileName.index(e))
return o
-def cleanTablesFileName(tables: List[str], output: Optional[bool]=False) -> List[str]:
- listTablesFileName = listTablesFileName()
- for t in tables:
- if not t in listTablesFileName: tables.remove(l)
- return tables
-
def getCustomBrailleTables():
return [config.conf["brailleExtender"]["brailleTables"][k].split('|', 3) for k in config.conf["brailleExtender"]["brailleTables"]]
def isContractedTable(fileName):
- listContractedTables = listContractedTables()
- if fileName in tablesFN: return False
- return brailleTables.listTables()[tablesFN.index(fileName)].contracted
+ return fileName in listTablesFileName(listContractedTables())
def getTablesFilenameByID(l: List[int], tables=None) -> List[int]:
listTablesFileName = [table.fileName for table in (tables or brailleTables.listTables())]
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index f3fb821e..f2eff5fe 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -389,6 +389,18 @@ def onCustomBrailleTablesBtn(self, evt):
def postInit(self): self.tables.SetFocus()
+ def isValid(self):
+ if self.tabSize.Value > 42:
+ gui.messageBox(
+ _("Tab size is invalid"),
+ _("Error"),
+ wx.OK|wx.ICON_ERROR,
+ self
+ )
+ self.tabSize.SetFocus()
+ return False
+ return super().isValid()
+
def onSave(self):
inputTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(
self.inputTables.CheckedItems,
@@ -407,6 +419,8 @@ def onSave(self):
config.conf["brailleExtender"]["inputTableShortcuts"] = configBE.tablesUFN[self.inputTableShortcuts.GetSelection()-1] if self.inputTableShortcuts.GetSelection() > 0 else '?'
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"][f"tabSize_{configBE.curBD}"] = self.tabSize.Value
+
+ def postSave(self):
configBE.initializePreferedTables()
class TablesGroupsDlg(gui.settingsDialogs.SettingsDialog):
From 8eaebae925e566fa1ed5fade1e010a2aa95d0513 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 14 Apr 2020 13:28:23 +0200
Subject: [PATCH 59/87] settings: progress on 'groups of tables' dialog
---
.../globalPlugins/brailleExtender/__init__.py | 13 +-
.../brailleExtender/brailleTablesExt.py | 502 ++++++++++++++++++
.../brailleExtender/brailleTablesHelper.py | 80 ---
.../globalPlugins/brailleExtender/configBE.py | 17 +-
.../globalPlugins/brailleExtender/settings.py | 247 +--------
.../brailleExtender/undefinedChars.py | 8 +-
6 files changed, 524 insertions(+), 343 deletions(-)
create mode 100644 addon/globalPlugins/brailleExtender/brailleTablesExt.py
delete mode 100644 addon/globalPlugins/brailleExtender/brailleTablesHelper.py
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 7e421573..d9cab1f7 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -50,7 +50,7 @@
from . import utils
from .updateCheck import *
from . import advancedInputMode
-from . import brailleTablesHelper
+from . import brailleTablesExt
from . import dictionaries
from . import huc
from . import undefinedChars
@@ -210,6 +210,7 @@ def __init__(self):
if config.conf["brailleExtender"]["reverseScrollBtns"]: self.reverseScrollBtns()
self.createMenu()
advancedInputMode.initialize()
+ brailleTablesExt.initializeGroups()
log.info(f"{addonName} {addonVersion} loaded ({round(time.time()-startTime, 2)}s)")
def event_gainFocus(self, obj, nextHandler):
@@ -322,7 +323,7 @@ def onDefaultDictionary(evt):
@staticmethod
def onTableDictionary(evt):
- outTable = brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])]
+ outTable = brailleTablesExt.listTablesDisplayName()[brailleTablesExt.listTablesFileName().index(config.conf["braille"]["translationTable"])]
gui.mainFrame._popupSettingsDialog(dictionaries.DictionaryDlg, _("Table dictionary")+(" (%s)" % outTable), "table")
@staticmethod
@@ -630,7 +631,7 @@ def script_reportExtraInfos(self, gesture):
def script_getTableOverview(self, gesture):
inTable = brailleInput.handler.table.displayName
- ouTable = brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])]
+ ouTable = brailleTablesExt.listTablesDisplayName()[brailleTablesExt.listTablesFileName().index(config.conf["braille"]["translationTable"])]
t = (_(" Input table")+": %s\n"+_("Output table")+": %s\n\n") % (inTable+' (%s)' % (brailleInput.handler.table.fileName), ouTable+' (%s)' % (config.conf["braille"]["translationTable"]))
t += utils.getTableOverview()
ui.browseableMessage("%s
" % t, _("Table overview (%s)" % brailleInput.handler.table.displayName), True)
@@ -864,7 +865,7 @@ def script_switchInputBrailleTable(self, gesture):
tid = configBE.inputTables.index(config.conf["braille"]["inputTable"])
nID = tid + 1 if tid + 1 < len(configBE.inputTables) else 0
brailleInput.handler.table = brailleTables.listTables(
- )[brailleTablesHelper.listTablesFileName().index(configBE.inputTables[nID])]
+ )[brailleTablesExt.listTablesFileName().index(configBE.inputTables[nID])]
ui.message(_("Input: %s") % brailleInput.handler.table.displayName)
return
@@ -882,14 +883,14 @@ def script_switchOutputBrailleTable(self, gesture):
config.conf["braille"]["translationTable"] = configBE.outputTables[nID]
utils.refreshBD()
dictionaries.setDictTables()
- ui.message(_("Output: %s") % brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])])
+ ui.message(_("Output: %s") % brailleTablesExt.listTablesDisplayName()[brailleTablesExt.listTablesFileName().index(config.conf["braille"]["translationTable"])])
return
script_switchOutputBrailleTable.__doc__ = _("Switch between his favorite output braille tables")
def script_currentBrailleTable(self, gesture):
inTable = brailleInput.handler.table.displayName
- ouTable = brailleTablesHelper.listTablesDisplayName()[brailleTablesHelper.listTablesFileName().index(config.conf["braille"]["translationTable"])]
+ ouTable = brailleTablesExt.listTablesDisplayName()[brailleTablesExt.listTablesFileName().index(config.conf["braille"]["translationTable"])]
if ouTable == inTable:
braille.handler.message(_("I⣿O:{I}").format(I=inTable, O=ouTable))
speech.speakMessage(_("Input and output: {I}.").format(I=inTable, O=ouTable))
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
new file mode 100644
index 00000000..79a71465
--- /dev/null
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -0,0 +1,502 @@
+# coding: utf-8
+# brailleTablesExt.py
+# Part of BrailleExtender addon for NVDA
+# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
+
+import codecs
+import json
+import gui
+import wx
+
+import addonHandler
+import brailleTables
+import config
+from collections import namedtuple
+from typing import Optional, List, Tuple
+from brailleTables import listTables
+from logHandler import log
+from . import configBE
+from .common import *
+
+addonHandler.initTranslation()
+
+GroupTables = namedtuple("GroupTables", ("name", "members", "usableIn"))
+
+listContractedTables = lambda tables=None: [table for table in (tables or listTables()) if table.contracted]
+listUncontractedTables = lambda tables=None: [table for table in (tables or listTables()) if not table.contracted]
+listInputTables = lambda tables=None: [table for table in (tables or listTables()) if table.input]
+listUncontractedInputTables = listInputTables(listUncontractedTables())
+listOutputTables = lambda tables=None: [table for table in (tables or listTables()) if table.output]
+listTablesFileName = lambda tables=None: [table.fileName for table in (tables or listTables())]
+listTablesDisplayName = lambda tables=None: [table.displayName for table in (tables or listTables())]
+
+def fileName2displayName(l):
+ allTablesFileName = listTablesFileName()
+ o = []
+ for e in l:
+ if e in allTablesFileName: o.append(allTablesFileName.index(e))
+ return ', '.join([listTables()[e].displayName for e in o])
+
+def listTablesIndexes(l, tables):
+ if not tables: tables = listTables()
+ tables = listTablesFileName(tables)
+ return [tables.index(e) for e in l if e in tables]
+
+def getPreferedTables() -> Tuple[List[str]]:
+ allInputTablesFileName = listTablesFileName(listInputTables())
+ allOutputTablesFileName = listTablesFileName(listOutputTables())
+ preferedInputTablesFileName = config.conf["brailleExtender"]["tables"]["preferedInput"].split('|')
+ preferedOutputTablesFileName = config.conf["brailleExtender"]["tables"]["preferedOutput"].split('|')
+ inputTables = [fn for fn in preferedInputTablesFileName if fn in allInputTablesFileName]
+ outputTables = [fn for fn in preferedOutputTablesFileName if fn in allOutputTablesFileName]
+ return inputTables, outputTables
+
+def getPreferedTablesIndexes() -> List[int]:
+ preferedInputTables, preferedOutputTables = getPreferedTables()
+ inputTables = listTablesFileName(listInputTables())
+ outputTables = listTablesFileName(listOutputTables())
+ o = []
+ for a, b in [(preferedInputTables, inputTables), (preferedOutputTables, outputTables)]:
+ o_ = []
+ for e in a:
+ if e in b: o_.append(b.index(e))
+ o.append(o_)
+ return o
+
+def getCustomBrailleTables():
+ return [config.conf["brailleExtender"]["brailleTables"][k].split('|', 3) for k in config.conf["brailleExtender"]["brailleTables"]]
+
+def isContractedTable(fileName):
+ return fileName in listTablesFileName(listContractedTables())
+
+def getTablesFilenameByID(l: List[int], tables=None) -> List[int]:
+ tablesFileName = [table.fileName for table in (tables or listTables())]
+ o = []
+ size = len(tablesFileName)
+ for i in l:
+ if i < size: o.append(tablesFileName[i])
+ return o
+
+def translateUsableIn(s):
+ labels = {
+ 'i': _("input"),
+ 'o': _("output"),
+ 'io': _("input and output")
+ }
+ return labels[s] if s in labels.keys() else _("None")
+
+def translateUsableInIndexes(usableIn):
+ o = []
+ if 'i' in usableIn: o.append(0)
+ if 'o' in usableIn: o.append(1)
+ return o
+
+def setDict(newGroups):
+ global _groups
+ _groups = newGroups
+
+def getGroups():
+ return _groups if _groups else []
+
+def getPathGroups():
+ return f"{configDir}/groups-tables.json"
+
+def initializeGroups():
+ global _groups
+ _groups = []
+ fp = getPathGroups()
+ if not os.path.exists(fp):
+ return
+ json_ = json.load(codecs.open(fp, "r", "UTF-8"))
+ for entry in json_:
+ _groups.append(
+ GroupTables(
+ entry["name"], entry["members"], entry["usableIn"]
+ )
+ )
+
+def saveGroups(entries=None):
+ if not entries: entries = getGroups()
+ entries = [
+ {
+ "name": entry.name,
+ "members": entry.members,
+ "usableIn": entry.usableIn
+ }
+ for entry in entries
+ ]
+ with codecs.open(getPathGroups(), "w", "UTF-8") as outfile:
+ json.dump(entries, outfile, ensure_ascii=False, indent=2)
+
+def getGroups():
+ groups = getGroups()
+ i = [group for group in groups if group.usableIn in ['i', 'io']]
+ o = [group for group in groups if group.usableIn in ['o', 'io']]
+ return i, o
+
+_groups = None
+
+class BrailleTablesDlg(gui.settingsDialogs.SettingsPanel):
+
+ # Translators: title of a dialog.
+ title = _("Braille tables")
+
+ def makeSettings(self, settingsSizer):
+ listPreferedTablesIndexes = getPreferedTablesIndexes()
+ currentTableLabel = _("Use the current input table")
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+
+ tables = [f"{table.displayName}, {table.fileName}" for table in listTables() if table.input]
+ label = _("Prefered input tables")
+ self.inputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=tables)
+ self.inputTables.CheckedItems = listPreferedTablesIndexes[0]
+ self.inputTables.Select(0)
+
+ tables = [f"{table.displayName}, {table.fileName}" for table in listTables() if table.output]
+ label = _("Prefered output tables")
+ self.outputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=tables)
+ self.outputTables.CheckedItems = listPreferedTablesIndexes[1]
+ self.outputTables.Select(0)
+
+ label = _("Input braille table to use for keyboard shortcuts")
+ try:
+ selectedItem = 0 if config.conf["brailleExtender"]["tables"]["shortcuts"] == '?' else listTablesFileName(
+ listUncontractedInputTables
+ ).index(config.conf["brailleExtender"]["tables"]["shortcuts"]) + 1
+ except ValueError:
+ selectedItem = 0
+ self.inputTableShortcuts = sHelper.addLabeledControl(label, wx.Choice, choices=[currentTableLabel] + listTablesDisplayName(listUncontractedInputTables))
+ self.inputTableShortcuts.SetSelection(selectedItem)
+
+ self.tablesGroupBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Groups of tables"), wx.DefaultPosition)
+ self.tablesGroupBtn.Bind(wx.EVT_BUTTON, self.onTablesGroupsBtn)
+
+ self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
+ self.customBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onCustomBrailleTablesBtn)
+
+ # Translators: label of a dialog.
+ self.tabSpace = sHelper.addItem(wx.CheckBox(self, label=_("Display &tab signs as spaces")))
+ self.tabSpace.SetValue(config.conf["brailleExtender"]["tabSpace"])
+ self.tabSpace.Bind(wx.EVT_CHECKBOX, self.onTabSpace)
+
+ # Translators: label of a dialog.
+ self.tabSize = sHelper.addLabeledControl(_("Number of &space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
+ sHelper.addItem(bHelper1)
+ self.onTabSpace()
+
+ def onTabSpace(self, evt=None):
+ if self.tabSpace.IsChecked(): self.tabSize.Enable()
+ else: self.tabSize.Disable()
+
+ def onTablesGroupsBtn(self, evt):
+ tablesGroupsDlg = TablesGroupsDlg(self, multiInstanceAllowed=True)
+ tablesGroupsDlg.ShowModal()
+
+ def onCustomBrailleTablesBtn(self, evt):
+ customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
+ customBrailleTablesDlg.ShowModal()
+
+ def postInit(self): self.tables.SetFocus()
+
+ def isValid(self):
+ if self.tabSize.Value > 42:
+ gui.messageBox(
+ _("Tab size is invalid"),
+ _("Error"),
+ wx.OK|wx.ICON_ERROR,
+ self
+ )
+ self.tabSize.SetFocus()
+ return False
+ return super().isValid()
+
+ def onSave(self):
+ inputTables = '|'.join(getTablesFilenameByID(
+ self.inputTables.CheckedItems,
+ listInputTables()
+ ))
+ outputTables = '|'.join(
+ getTablesFilenameByID(
+ self.outputTables.CheckedItems,
+ listOutputTables()
+ )
+ )
+ tablesShortcuts = getTablesFilenameByID(
+ [self.inputTableShortcuts.GetSelection()-1],
+ listUncontractedInputTables
+ )[0] if self.inputTableShortcuts.GetSelection() > 0 else '?'
+ config.conf["brailleExtender"]["tables"]["preferedInput"] = inputTables
+ config.conf["brailleExtender"]["tables"]["preferedOutput"] = outputTables
+ config.conf["brailleExtender"]["tables"]["shortcuts"] = tablesShortcuts
+ config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
+ config.conf["brailleExtender"][f"tabSize_{configBE.curBD}"] = self.tabSize.Value
+
+ def postSave(self):
+ configBE.initializePreferedTables()
+
+
+class TablesGroupsDlg(gui.settingsDialogs.SettingsDialog):
+
+ # Translators: title of a dialog.
+ title = f"{addonName} - %s" % _("Groups of tables")
+
+ def makeSettings(self, settingsSizer):
+ self.tmpGroups = getGroups()
+ self.tmpGroups.sort(key=lambda e: e.name)
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ groupsLabelText = _("List of table groups")
+ self.groupsList = sHelper.addLabeledControl(groupsLabelText, wx.ListCtrl, style=wx.LC_REPORT|wx.LC_SINGLE_SEL,size=(550,350))
+ self.groupsList.InsertColumn(0, _("Name"), width=150)
+ self.groupsList.InsertColumn(1, _("Members"), width=150)
+ self.groupsList.InsertColumn(2, _("Usable in"), width=150)
+ self.onSetEntries()
+
+ bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in groups of tables dialog to add new entries.
+ label=_("&Add")
+ ).Bind(wx.EVT_BUTTON, self.onAddClick)
+
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in groups of tables dialog to edit existing entries.
+ label=_("&Edit")
+ ).Bind(wx.EVT_BUTTON, self.onEditClick)
+
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in groups of tables dialog to remove existing entries.
+ label=_("Re&move")
+ ).Bind(wx.EVT_BUTTON, self.onRemoveClick)
+
+ sHelper.addItem(bHelper)
+ bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in groups of tables dialog to open groups of tables file in an editor.
+ label=_("&Open the groups of tables file in an editor")
+ ).Bind(wx.EVT_BUTTON, self.onOpenFileClick)
+ bHelper.addButton(
+ parent=self,
+ # Translators: The label for a button in groups of tables dialog to reload groups of tables.
+ label=_("&Reload the groups of tables")
+ ).Bind(wx.EVT_BUTTON, self.onReloadClick)
+ sHelper.addItem(bHelper)
+
+ def onSetEntries(self, evt=None):
+ self.groupsList.DeleteAllItems()
+ for group in self.tmpGroups:
+ self.groupsList.Append((
+ group.name,
+ fileName2displayName(group.members),
+ translateUsableIn(group.usableIn)
+ ))
+
+ def onAddClick(self, event):
+ entryDialog = GroupEntryDlg(self, title=_("Add group entry"))
+ if entryDialog.ShowModal() == wx.ID_OK:
+ entry = entryDialog.groupEntry
+ self.tmpGroups.append(entry)
+ self.groupsList.Append(
+ (entry.name, fileName2displayName(entry.members), translateUsableIn(entry.usableIn))
+ )
+ index = self.groupsList.GetFirstSelected()
+ while index >= 0:
+ self.groupsList.Select(index, on=0)
+ index = self.groupsList.GetNextSelected(index)
+ addedIndex = self.groupsList.GetItemCount() - 1
+ self.groupsList.Select(addedIndex)
+ self.groupsList.Focus(addedIndex)
+ self.groupsList.SetFocus()
+ entryDialog.Destroy()
+
+ def onEditClick(self, event):
+ if self.groupsList.GetSelectedItemCount() != 1:
+ return
+ editIndex = self.groupsList.GetFirstSelected()
+ entryDialog = GroupEntryDlg(self)
+ entryDialog.name.SetValue(self.tmpGroups[editIndex].name)
+ entryDialog.members.CheckedItems = listTablesIndexes(self.tmpGroups[editIndex].members, listUncontractedInputTables)
+ entryDialog.usableIn.CheckedItems = translateUsableInIndexes(self.tmpGroups[editIndex].usableIn)
+ if entryDialog.ShowModal() == wx.ID_OK:
+ entry = entryDialog.groupEntry
+ self.tmpGroups[editIndex] = entry
+ self.groupsList.SetItem(editIndex, 0, entry.name)
+ self.groupsList.SetItem(editIndex, 1, fileName2displayName(entry.members))
+ self.groupsList.SetItem(editIndex, 2, translateUsableIn(entry.usableIn))
+ self.groupsList.SetFocus()
+ entryDialog.Destroy()
+
+ def onRemoveClick(self, event):
+ index = self.groupsList.GetFirstSelected()
+ while index >= 0:
+ self.groupsList.DeleteItem(index)
+ del self.tmpGroups[index]
+ index = self.groupsList.GetNextSelected(index)
+ self.onSetEntries()
+ self.groupsList.SetFocus()
+
+
+ def onOpenFileClick(self,evt):
+ path = getPathGroups()
+ if not os.path.exists(path): return
+ try: os.startfile(path)
+ except OSError: os.popen(f"notepad \"{path}\"")
+
+ def onReloadClick(self,evt):
+ self.tmpGroups = getGroups()
+ self.onSetEntries()
+
+ def onOk(self, evt):
+ saveGroups(self.tmpGroups)
+ setDict(self.tmpGroups)
+ super().onOk(evt)
+
+
+class GroupEntryDlg(wx.Dialog):
+
+ def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
+ super().__init__(parent, title=title)
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
+ sHelper = gui.guiHelper.BoxSizerHelper(self, orientation=wx.VERTICAL)
+ self.name = sHelper.addLabeledControl(_("Group name"), wx.TextCtrl)
+ label = _(f"Group members")
+ self.members = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTablesDisplayName(listUncontractedTables()))
+ self.members.SetSelection(0)
+ label = _("Usable in")
+ choices = [_("input"), _("output")]
+ self.usableIn = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=choices)
+ self.usableIn.SetSelection(0)
+ sHelper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK | wx.CANCEL))
+ mainSizer.Add(sHelper.sizer, border=20, flag=wx.ALL)
+ mainSizer.Fit(self)
+ self.SetSizer(mainSizer)
+ self.Bind(wx.EVT_BUTTON, self.onOk, id=wx.ID_OK)
+ self.name.SetFocus()
+
+ def onOk(self, evt):
+ name = self.name.Value
+ members = getTablesFilenameByID(
+ self.members.CheckedItems, listUncontractedTables())
+ matches = ['i', 'o']
+ usableIn = ''.join([matches[e] for e in self.usableIn.CheckedItems])
+ if not name:
+ gui.messageBox(
+ _("Please specify a group name"),
+ _("Error"),
+ wx.OK|wx.ICON_ERROR,
+ self
+ )
+ return self.name.SetFocus()
+ if len(members) < 2:
+ gui.messageBox(
+ _("Please select at least 2 tables"),
+ _("Error"),
+ wx.OK|wx.ICON_ERROR,
+ self
+ )
+ return self.members.SetFocus()
+ self.groupEntry = GroupTables(name, members, usableIn)
+ evt.Skip()
+
+class CustomBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
+
+ # Translators: title of a dialog.
+ title = f"{addonName} - %s" % _("Custom braille tables")
+ providedTablesPath = "%s/res/json" % baseDir
+ userTablesPath = "%s/json" % configDir
+
+ def makeSettings(self, settingsSizer):
+ self.providedTables = self.getBrailleTablesFromJSON(self.providedTablesPath)
+ self.userTables = self.getBrailleTablesFromJSON(self.userTablesPath)
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ self.inTable = sHelper.addItem(wx.CheckBox(self, label=_("Use a custom table as input table")))
+ self.outTable = sHelper.addItem(wx.CheckBox(self, label=_("Use a custom table as output table")))
+ self.addBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Add a braille table"), wx.DefaultPosition)
+ self.addBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onAddBrailleTablesBtn)
+ sHelper.addItem(bHelper1)
+
+ @staticmethod
+ def getBrailleTablesFromJSON(path):
+ if not os.path.exists(path):
+ path = "%s/%s" % (baseDir, path)
+ if not os.path.exists(path): return {}
+ f = open(path, "r")
+ return json.load(f)
+
+ def onAddBrailleTablesBtn(self, evt):
+ addBrailleTablesDlg = AddBrailleTablesDlg(self, multiInstanceAllowed=True)
+ addBrailleTablesDlg.ShowModal()
+
+ def postInit(self): self.inTable.SetFocus()
+
+ def onOk(self, event):
+ super(CustomBrailleTablesDlg, self).onOk(evt)
+
+
+class AddBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
+ # Translators: title of a dialog.
+ title = "Braille Extender - %s" % _("Add a braille table")
+ tbl = []
+
+ def makeSettings(self, settingsSizer):
+ sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
+ bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
+ self.name = sHelper.addLabeledControl(_("Display name"), wx.TextCtrl)
+ self.description = sHelper.addLabeledControl(_("Description"), wx.TextCtrl, style = wx.TE_MULTILINE|wx.TE_PROCESS_ENTER, size = (360, 90), pos=(-1,-1))
+ self.path = sHelper.addLabeledControl(_("Path"), wx.TextCtrl)
+ self.browseBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Browse"), wx.DefaultPosition)
+ self.browseBtn.Bind(wx.EVT_BUTTON, self.onBrowseBtn)
+ sHelper.addItem(bHelper1)
+ self.isContracted = sHelper.addItem(wx.CheckBox(self, label=_("Contracted (grade 2) braille table")))
+ # Translators: label of a dialog.
+ self.inputOrOutput = sHelper.addLabeledControl(_("Available for"), wx.Choice, choices=[_("Input and output"), _("Input only"), _("Output only")])
+ self.inputOrOutput.SetSelection(0)
+
+ def postInit(self): self.name.SetFocus()
+
+ def onBrowseBtn(self, event):
+ dlg = wx.FileDialog(None, _("Choose a table file"), "%PROGRAMFILES%", "", "%s (*.ctb, *.cti, *.utb, *.uti)|*.ctb;*.cti;*.utb;*.uti" % _("Liblouis table files"), style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
+ if dlg.ShowModal() != wx.ID_OK:
+ dlg.Destroy()
+ return self.path.SetFocus()
+ self.path.SetValue(dlg.GetDirectory() + '\\' + dlg.GetFilename())
+ dlg.Destroy()
+ self.path.SetFocus()
+
+ def onOk(self, event):
+ path = self.path.GetValue().strip().encode("UTF-8")
+ displayName = self.name.GetValue().strip()
+ if not displayName:
+ gui.messageBox(_("Please specify a display name."), _("Invalid display name"), wx.OK|wx.ICON_ERROR)
+ self.name.SetFocus()
+ return
+ if not os.path.exists(path.decode("UTF-8").encode("mbcs")):
+ gui.messageBox(_("The specified path is not valid (%s).") % path.decode("UTF-8"), _("Invalid path"), wx.OK|wx.ICON_ERROR)
+ self.path.SetFocus()
+ return
+ switch_possibleValues = ["both", "input", "output"]
+ v = "%s|%s|%s|%s" % (
+ switch_possibleValues[self.inputOrOutput.GetSelection()],
+ self.isContracted.IsChecked(), path.decode("UTF-8"), displayName
+ )
+ k = hashlib.md5(path).hexdigest()[:15]
+ config.conf["brailleExtender"]["brailleTables"][k] = v
+ super(AddBrailleTablesDlg, self).onOk(evt)
+
+ @staticmethod
+ def getAvailableBrailleTables():
+ out = []
+ brailleTablesDir = configBE.TABLES_DIR
+ ls = glob.glob(brailleTablesDir+'\\*.ctb')+glob.glob(brailleTablesDir+'\\*.cti')+glob.glob(brailleTablesDir+'\\*.utb')
+ for i, e in enumerate(ls):
+ e = str(e.split('\\')[-1])
+ if e in configBE.tablesFN or e.lower() in configBE.tablesFN: del ls[i]
+ else: out.append(e.lower())
+ out = sorted(out)
+ return out
+
+
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py b/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
deleted file mode 100644
index 61a4ec73..00000000
--- a/addon/globalPlugins/brailleExtender/brailleTablesHelper.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# coding: utf-8
-# brailleTablesHelper.py
-# Part of BrailleExtender addon for NVDA
-# Copyright 2016-2020 André-Abush CLAUSE, released under GPL.
-
-import addonHandler
-import brailleTables
-import config
-from typing import Optional, List, Tuple
-from logHandler import log
-
-addonHandler.initTranslation()
-
-listContractedTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.contracted]
-listUncontractedTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if not table.contracted]
-listInputTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.input]
-listOutputTables = lambda tables=None: [table for table in (tables or brailleTables.listTables()) if table.output]
-listTablesFileName = lambda tables=None: [table.fileName for table in (tables or brailleTables.listTables())]
-listTablesDisplayName = lambda tables=None: [table.displayName for table in (tables or brailleTables.listTables())]
-
-def fileName2displayName(l):
- allTablesFileName = listTablesFileName()
- o = []
- for e in l:
- if e in allTablesFileName: o.append(allTablesFileName.index(e))
- return ', '.join([brailleTables.listTables()[e].displayName for e in o])
-
-def getPreferedTables() -> Tuple[List[str]]:
- allInputTablesFileName = listTablesFileName(listInputTables())
- allOutputTablesFileName = listTablesFileName(listOutputTables())
- preferedInputTablesFileName = config.conf["brailleExtender"]["preferedInputTables"].split('|')
- preferedOutputTablesFileName = config.conf["brailleExtender"]["preferedOutputTables"].split('|')
- inputTables = [fn for fn in preferedInputTablesFileName if fn in allInputTablesFileName]
- outputTables = [fn for fn in preferedOutputTablesFileName if fn in allOutputTablesFileName]
- return inputTables, outputTables
-
-def getPreferedTablesIndexes() -> List[int]:
- preferedInputTables, preferedOutputTables = getPreferedTables()
- inputTables = listTablesFileName(listInputTables())
- outputTables = listTablesFileName(listOutputTables())
- o = []
- for a, b in [(preferedInputTables, inputTables), (preferedOutputTables, outputTables)]:
- o_ = []
- for e in a:
- if e in b: o_.append(b.index(e))
- o.append(o_)
- return o
-
-def getPostTables() -> List[str]:
- tablesFileName = [table.fileName for table in brailleTables.listTables()]
- l = config.conf["brailleExtender"]["postTables"].split('|')
- return [fn for fn in l if fn in tablesFileName]
-
-def getPostTablesIndexes() -> List[int]:
- postTablesFileName = getPostTables()
- tablesFileName = [table.fileName for table in brailleTables.listTables()]
- o = []
- for i, e in enumerate(postTablesFileName):
- if e in tablesFileName: o.append(tablesFileName.index(e))
- return o
-
-def getCustomBrailleTables():
- return [config.conf["brailleExtender"]["brailleTables"][k].split('|', 3) for k in config.conf["brailleExtender"]["brailleTables"]]
-
-def isContractedTable(fileName):
- return fileName in listTablesFileName(listContractedTables())
-
-def getTablesFilenameByID(l: List[int], tables=None) -> List[int]:
- listTablesFileName = [table.fileName for table in (tables or brailleTables.listTables())]
- o = []
- size = len(listTablesFileName)
- for i in l:
- if i < size: o.append(listTablesFileName[i])
- return o
-
-def translateUsableIn(s):
- if s.startswith('i:'): return _("input")
- elif s.startswith('o:'): return _("output")
- elif s.startswith('io:'): return _("input and output")
- else: return _("None")
\ No newline at end of file
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 5a00215b..07d7899b 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -15,7 +15,7 @@
import configobj
import inputCore
import languageHandler
-from . import brailleTablesHelper
+from . import brailleTablesExt
from .common import *
Validator = configobj.validate.Validator
@@ -170,9 +170,6 @@ def getConfspec():
"stopSpeechUnknown": "boolean(default=True)",
"speakRoutingTo": "boolean(default=True)",
"routingReviewModeWithCursorKeys": "boolean(default=False)",
- "inputTableShortcuts": 'string(default="?")',
- "preferedInputTables": f'string(default="{config.conf["braille"]["inputTable"]}|unicode-braille.utb")',
- "preferedOutputTables": f'string(default="{config.conf["braille"]["translationTable"]}")',
"tabSpace": "boolean(default=False)",
f"tabSize_{curBD}": "integer(min=1, default=2, max=42)",
"undefinedCharsRepr": {
@@ -186,7 +183,6 @@ def getConfspec():
"lang": "string(default=Windows)",
"table": "string(default=current)"
},
- "postTables": 'string(default="None")',
"viewSaved": "string(default=%s)" % NOVIEWSAVED,
"reviewModeTerminal": "boolean(default=True)",
"oneHandMode": "boolean(default=False)",
@@ -241,7 +237,12 @@ def getConfspec():
},
"quickLaunches": {},
"roleLabels": {},
- "brailleTables": {},
+ "tables": {
+ "groups": {},
+ "shortcuts": 'string(default="?")',
+ "preferedInput": f'string(default="{config.conf["braille"]["inputTable"]}|unicode-braille.utb")',
+ "preferedOutput": f'string(default="{config.conf["braille"]["translationTable"]}")',
+ },
"advancedInputMode": {
"stopAfterOneChar": "boolean(default=True)",
"escapeSignUnicodeValue": "string(default=⠼)",
@@ -316,7 +317,7 @@ def loadConf():
limitCellsRight = int(config.conf["brailleExtender"]["rightMarginCells_%s" % curBD])
if (backupDisplaySize-limitCellsRight <= backupDisplaySize and limitCellsRight > 0):
braille.handler.displaySize = backupDisplaySize-limitCellsRight
- if config.conf["brailleExtender"]["inputTableShortcuts"] not in brailleTablesHelper.listTablesFileName(brailleTablesHelper.listUncontractedTables()): config.conf["brailleExtender"]["inputTableShortcuts"] = '?'
+ if config.conf["brailleExtender"]["tables"]["shortcuts"] not in brailleTablesExt.listTablesFileName(brailleTablesExt.listUncontractedTables()): config.conf["brailleExtender"]["tables"]["shortcuts"] = '?'
if config.conf["brailleExtender"]["features"]["roleLabels"]:
loadRoleLabels(config.conf["brailleExtender"]["roleLabels"].copy())
initializePreferedTables()
@@ -324,7 +325,7 @@ def loadConf():
def initializePreferedTables():
global inputTables, outputTables
- inputTables, outputTables = brailleTablesHelper.getPreferedTables()
+ inputTables, outputTables = brailleTablesExt.getPreferedTables()
def loadGestures():
if gesturesFileExists:
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index f2eff5fe..15771529 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -28,7 +28,7 @@
from . import utils
from .common import *
from . import advancedInputMode
-from . import brailleTablesHelper
+from . import brailleTablesExt
from . import undefinedChars
instanceGP = None
@@ -331,249 +331,6 @@ def onSave(self):
if config.conf["brailleExtender"]["features"]["roleLabels"]:
configBE.loadRoleLabels(config.conf["brailleExtender"]["roleLabels"].copy())
-class BrailleTablesDlg(gui.settingsDialogs.SettingsPanel):
-
- # Translators: title of a dialog.
- title = _("Braille tables")
-
- def makeSettings(self, settingsSizer):
- listPreferedTablesIndexes = brailleTablesHelper.getPreferedTablesIndexes()
- currentTableLabel = _("Use the current input table")
- sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
- bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
-
- listTables = [f"{table.displayName}, {table.fileName}" for table in brailleTables.listTables() if table.input]
- label = _("Prefered input tables")
- self.inputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTables)
- self.inputTables.CheckedItems = listPreferedTablesIndexes[0]
- self.inputTables.Select(0)
-
- listTables = [f"{table.displayName}, {table.fileName}" for table in brailleTables.listTables() if table.output]
- label = _("Prefered output tables")
- self.outputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTables)
- self.outputTables.CheckedItems = listPreferedTablesIndexes[1]
- self.outputTables.Select(0)
-
- listUncontractedTables = brailleTablesHelper.listTablesDisplayName(brailleTablesHelper.listUncontractedTables())
- label = _("Input braille table for keyboard shortcut keys")
- self.inputTableShortcuts = sHelper.addLabeledControl(label, wx.Choice, choices=[currentTableLabel] + listUncontractedTables)
- #self.inputTableShortcuts.SetSelection(iSht)
-
- self.tablesGroupBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Groups of tables"), wx.DefaultPosition)
- self.tablesGroupBtn.Bind(wx.EVT_BUTTON, self.onTablesGroupsBtn)
-
- self.customBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("Alternative and &custom braille tables"), wx.DefaultPosition)
- self.customBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onCustomBrailleTablesBtn)
-
- # Translators: label of a dialog.
- self.tabSpace = sHelper.addItem(wx.CheckBox(self, label=_("Display &tab signs as spaces")))
- self.tabSpace.SetValue(config.conf["brailleExtender"]["tabSpace"])
- self.tabSpace.Bind(wx.EVT_CHECKBOX, self.onTabSpace)
-
- # Translators: label of a dialog.
- self.tabSize = sHelper.addLabeledControl(_("Number of &space for a tab sign")+" "+_("for the currrent braille display"), gui.nvdaControls.SelectOnFocusSpinCtrl, min=1, max=42, initial=int(config.conf["brailleExtender"]["tabSize_%s" % configBE.curBD]))
- sHelper.addItem(bHelper1)
- self.onTabSpace()
-
- def onTabSpace(self, evt=None):
- if self.tabSpace.IsChecked(): self.tabSize.Enable()
- else: self.tabSize.Disable()
-
- def onTablesGroupsBtn(self, evt):
- tablesGroupsDlg = TablesGroupsDlg(self, multiInstanceAllowed=True)
- tablesGroupsDlg.ShowModal()
-
- def onCustomBrailleTablesBtn(self, evt):
- customBrailleTablesDlg = CustomBrailleTablesDlg(self, multiInstanceAllowed=True)
- customBrailleTablesDlg.ShowModal()
-
- def postInit(self): self.tables.SetFocus()
-
- def isValid(self):
- if self.tabSize.Value > 42:
- gui.messageBox(
- _("Tab size is invalid"),
- _("Error"),
- wx.OK|wx.ICON_ERROR,
- self
- )
- self.tabSize.SetFocus()
- return False
- return super().isValid()
-
- def onSave(self):
- inputTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(
- self.inputTables.CheckedItems,
- brailleTablesHelper.listInputTables()
- ))
- outputTables = '|'.join(
- brailleTablesHelper.getTablesFilenameByID(
- self.outputTables.CheckedItems,
- brailleTablesHelper.listOutputTables()
- )
- )
- #postTables = '|'.join(brailleTablesHelper.getTablesFilenameByID(self.postTables.CheckedItems))
- config.conf["brailleExtender"]["preferedInputTables"] = inputTables
- config.conf["brailleExtender"]["preferedOutputTables"] = outputTables
- #config.conf["brailleExtender"]["postTables"] = postTables
- config.conf["brailleExtender"]["inputTableShortcuts"] = configBE.tablesUFN[self.inputTableShortcuts.GetSelection()-1] if self.inputTableShortcuts.GetSelection() > 0 else '?'
- config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
- config.conf["brailleExtender"][f"tabSize_{configBE.curBD}"] = self.tabSize.Value
-
- def postSave(self):
- configBE.initializePreferedTables()
-
-class TablesGroupsDlg(gui.settingsDialogs.SettingsDialog):
-
- # Translators: title of a dialog.
- title = f"{addonName} - %s" % _("Groups of tables")
-
- def makeSettings(self, settingsSizer):
- wx.CallAfter(notImplemented)
- sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
- bHelper = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
- groupsLabelText = _("List of table groups")
- self.groupsList = sHelper.addLabeledControl(groupsLabelText, wx.ListCtrl, style=wx.LC_REPORT|wx.LC_SINGLE_SEL,size=(550,350))
- self.groupsList.InsertColumn(0, _("Name"), width=150)
- self.groupsList.InsertColumn(1, _("Members"), width=150)
- self.groupsList.InsertColumn(2, _("Usable in"), width=150)
- self.onSetGroups()
- self.addTablesGroupBtn = bHelper.addButton(self, wx.NewId(), "%s..." % _("&Add a group"), wx.DefaultPosition)
- self.addTablesGroupBtn.Bind(wx.EVT_BUTTON, self.onAddTablesGroupBtn)
- sHelper.addItem(bHelper)
-
-
- def onSetGroups(self, evt=None):
- groups = {
- "Fake group 1": "i:en-ueb-g1.ctb|fr-bfu-comp8.utb",
- "Fake group 2": "o:ru.ctb|fr-bfu-comp8.utb",
- "Fake group 3": "n:ru.ctb|en-ueb-g1.ctb",
- }
- for name, desc in groups.items():
- self.groupsList.Append((
- name,
- brailleTablesHelper.fileName2displayName(desc.split(':')[-1].split('|')),
- brailleTablesHelper.translateUsableIn(desc),
- ))
-
- def onAddTablesGroupBtn(self, evt):
- addTablesGroupDlg = AddTablesGroupDlg(self, multiInstanceAllowed=True)
- addTablesGroupDlg.ShowModal()
-
-class AddTablesGroupDlg(gui.settingsDialogs.SettingsDialog):
-
- title = _("Add a group of tables")
-
- def makeSettings(self, settingsSizer):
- listUncontractedTables = brailleTablesHelper.listTablesDisplayName(brailleTablesHelper.listUncontractedTables())
- sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
- self.name = sHelper.addLabeledControl(_("Group name"), wx.TextCtrl)
- self.description = sHelper.addLabeledControl(_("Description"), wx.TextCtrl, style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER, size = (360, 90), pos=(-1,-1))
- label = _(f"Group members")
- self.members = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listUncontractedTables)
- #self.outputTables.CheckedItems = brailleTablesHelper.getPostTablesIndexes()
- #self.outputTables.Select(0)
-
-
-class CustomBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
-
- # Translators: title of a dialog.
- title = f"{addonName} - %s" % _("Custom braille tables")
- providedTablesPath = "%s/res/brailleTables.json" % configBE.baseDir
- userTablesPath = "%s/brailleTables.json" % configBE.configDir
-
- def makeSettings(self, settingsSizer):
- self.providedTables = self.getBrailleTablesFromJSON(self.providedTablesPath)
- self.userTables = self.getBrailleTablesFromJSON(self.userTablesPath)
- wx.CallAfter(notImplemented)
- sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
- bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
- self.inTable = sHelper.addItem(wx.CheckBox(self, label=_("Use a custom table as input table")))
- self.outTable = sHelper.addItem(wx.CheckBox(self, label=_("Use a custom table as output table")))
- self.addBrailleTablesBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Add a braille table"), wx.DefaultPosition)
- self.addBrailleTablesBtn.Bind(wx.EVT_BUTTON, self.onAddBrailleTablesBtn)
- sHelper.addItem(bHelper1)
-
- @staticmethod
- def getBrailleTablesFromJSON(path):
- if not os.path.exists(path):
- path = "%s/%s" % (configBE.baseDir, path)
- if not os.path.exists(path): return {}
- f = open(path, "r")
- return json.load(f)
-
- def onAddBrailleTablesBtn(self, evt):
- addBrailleTablesDlg = AddBrailleTablesDlg(self, multiInstanceAllowed=True)
- addBrailleTablesDlg.ShowModal()
-
- def postInit(self): self.inTable.SetFocus()
-
- def onOk(self, event):
- super(CustomBrailleTablesDlg, self).onOk(evt)
-
-
-class AddBrailleTablesDlg(gui.settingsDialogs.SettingsDialog):
- # Translators: title of a dialog.
- title = "Braille Extender - %s" % _("Add a braille table")
- tbl = []
-
- def makeSettings(self, settingsSizer):
- sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
- bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
- self.name = sHelper.addLabeledControl(_("Display name"), wx.TextCtrl)
- self.description = sHelper.addLabeledControl(_("Description"), wx.TextCtrl, style = wx.TE_MULTILINE|wx.TE_PROCESS_ENTER, size = (360, 90), pos=(-1,-1))
- self.path = sHelper.addLabeledControl(_("Path"), wx.TextCtrl)
- self.browseBtn = bHelper1.addButton(self, wx.NewId(), "%s..." % _("&Browse"), wx.DefaultPosition)
- self.browseBtn.Bind(wx.EVT_BUTTON, self.onBrowseBtn)
- sHelper.addItem(bHelper1)
- self.isContracted = sHelper.addItem(wx.CheckBox(self, label=_("Contracted (grade 2) braille table")))
- # Translators: label of a dialog.
- self.inputOrOutput = sHelper.addLabeledControl(_("Available for"), wx.Choice, choices=[_("Input and output"), _("Input only"), _("Output only")])
- self.inputOrOutput.SetSelection(0)
-
- def postInit(self): self.name.SetFocus()
-
- def onBrowseBtn(self, event):
- dlg = wx.FileDialog(None, _("Choose a table file"), "%PROGRAMFILES%", "", "%s (*.ctb, *.cti, *.utb, *.uti)|*.ctb;*.cti;*.utb;*.uti" % _("Liblouis table files"), style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
- if dlg.ShowModal() != wx.ID_OK:
- dlg.Destroy()
- return self.path.SetFocus()
- self.path.SetValue(dlg.GetDirectory() + '\\' + dlg.GetFilename())
- dlg.Destroy()
- self.path.SetFocus()
-
- def onOk(self, event):
- path = self.path.GetValue().strip().encode("UTF-8")
- displayName = self.name.GetValue().strip()
- if not displayName:
- gui.messageBox(_("Please specify a display name."), _("Invalid display name"), wx.OK|wx.ICON_ERROR)
- self.name.SetFocus()
- return
- if not os.path.exists(path.decode("UTF-8").encode("mbcs")):
- gui.messageBox(_("The specified path is not valid (%s).") % path.decode("UTF-8"), _("Invalid path"), wx.OK|wx.ICON_ERROR)
- self.path.SetFocus()
- return
- switch_possibleValues = ["both", "input", "output"]
- v = "%s|%s|%s|%s" % (
- switch_possibleValues[self.inputOrOutput.GetSelection()],
- self.isContracted.IsChecked(), path.decode("UTF-8"), displayName
- )
- k = hashlib.md5(path).hexdigest()[:15]
- config.conf["brailleExtender"]["brailleTables"][k] = v
- super(AddBrailleTablesDlg, self).onOk(evt)
-
- @staticmethod
- def getAvailableBrailleTables():
- out = []
- brailleTablesDir = configBE.brailleTables.TABLES_DIR
- ls = glob.glob(brailleTablesDir+'\\*.ctb')+glob.glob(brailleTablesDir+'\\*.cti')+glob.glob(brailleTablesDir+'\\*.utb')
- for i, e in enumerate(ls):
- e = str(e.split('\\')[-1])
- if e in configBE.tablesFN or e.lower() in configBE.tablesFN: del ls[i]
- else: out.append(e.lower())
- out = sorted(out)
- return out
-
class QuickLaunchesDlg(gui.settingsDialogs.SettingsDialog):
@@ -896,7 +653,7 @@ class AddonSettingsDialog(gui.settingsDialogs.MultiCategorySettingsDialog):
categoryClasses=[
GeneralDlg,
AttribraDlg,
- BrailleTablesDlg,
+ brailleTablesExt.BrailleTablesDlg,
undefinedChars.SettingsDlg,
advancedInputMode.SettingsDlg,
RoleLabelsDlg,
diff --git a/addon/globalPlugins/brailleExtender/undefinedChars.py b/addon/globalPlugins/brailleExtender/undefinedChars.py
index 1b30ab33..28edaa47 100644
--- a/addon/globalPlugins/brailleExtender/undefinedChars.py
+++ b/addon/globalPlugins/brailleExtender/undefinedChars.py
@@ -19,7 +19,7 @@
from . import configBE, huc
from .common import *
-from . import brailleTablesHelper
+from . import brailleTablesExt
from .utils import getCurrentBrailleTables, getTextInBraille
addonHandler.initTranslation()
@@ -315,8 +315,8 @@ def makeSettings(self, settingsSizer):
_("Language"), wx.Choice, choices=values
)
self.undefinedCharLang.SetSelection(undefinedCharLangID)
- values = [_("Use the current output table")] + brailleTablesHelper.listTablesDisplayName(brailleTablesHelper.listOutputTables())
- keys = ["current"] + brailleTablesHelper.listTablesFileName(brailleTablesHelper.listOutputTables())
+ values = [_("Use the current output table")] + brailleTablesExt.listTablesDisplayName(brailleTablesExt.listOutputTables())
+ keys = ["current"] + brailleTablesExt.listTablesFileName(brailleTablesExt.listOutputTables())
undefinedCharTable = config.conf["brailleExtender"]["undefinedCharsRepr"]["table"]
if undefinedCharTable not in keys: undefinedCharTable = "current"
undefinedCharTableID = keys.index(undefinedCharTable)
@@ -399,7 +399,7 @@ def onSave(self):
0
]
undefinedCharTable = self.undefinedCharTable.GetSelection()
- keys = ["current"] + brailleTablesHelper.listTablesFileName(brailleTablesHelper.listOutputTables())
+ keys = ["current"] + brailleTablesExt.listTablesFileName(brailleTablesExt.listOutputTables())
config.conf["brailleExtender"]["undefinedCharsRepr"]["table"] = keys[
undefinedCharTable
]
From ec5fd9a008a23e5212fc6165f1d136aa094dd52b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Tue, 14 Apr 2020 13:35:20 +0200
Subject: [PATCH 60/87] fixup
---
addon/globalPlugins/brailleExtender/brailleTablesExt.py | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
index 79a71465..025775fe 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesExt.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -95,9 +95,6 @@ def setDict(newGroups):
global _groups
_groups = newGroups
-def getGroups():
- return _groups if _groups else []
-
def getPathGroups():
return f"{configDir}/groups-tables.json"
@@ -128,7 +125,8 @@ def saveGroups(entries=None):
with codecs.open(getPathGroups(), "w", "UTF-8") as outfile:
json.dump(entries, outfile, ensure_ascii=False, indent=2)
-def getGroups():
+def getGroups(plain=True):
+ if plain: return _groups if _groups else []
groups = getGroups()
i = [group for group in groups if group.usableIn in ['i', 'io']]
o = [group for group in groups if group.usableIn in ['o', 'io']]
From 720facee298d547534dd32273fcd54a49b461134 Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Wed, 15 Apr 2020 12:21:21 +0200
Subject: [PATCH 61/87] starting to update the localizations, first part, work
in progress
---
addon/locale/hr/LC_MESSAGES/nvda.po | 1502 ++++++++++++++++++---------
1 file changed, 1016 insertions(+), 486 deletions(-)
diff --git a/addon/locale/hr/LC_MESSAGES/nvda.po b/addon/locale/hr/LC_MESSAGES/nvda.po
index 353e88fb..95c84702 100644
--- a/addon/locale/hr/LC_MESSAGES/nvda.po
+++ b/addon/locale/hr/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-03-19 09:08+0100\n"
-"PO-Revision-Date: 2020-03-19 09:10+0100\n"
+"POT-Creation-Date: 2020-04-15 09:24+0200\n"
+"PO-Revision-Date: 2020-04-15 12:18+0100\n"
"Last-Translator: zvonimir stanecic \n"
"Language-Team: \n"
"Language: hr\n"
@@ -17,175 +17,175 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
-#: addon/globalPlugins/brailleExtender/__init__.py:61
+#: addon/globalPlugins/brailleExtender/__init__.py:64
msgid "Default"
msgstr "Podrazumijevano"
-#: addon/globalPlugins/brailleExtender/__init__.py:62
+#: addon/globalPlugins/brailleExtender/__init__.py:65
msgid "Moving in the text"
msgstr "premještanje po tekstu"
-#: addon/globalPlugins/brailleExtender/__init__.py:63
+#: addon/globalPlugins/brailleExtender/__init__.py:66
msgid "Text selection"
msgstr "označavanje teksta"
-#: addon/globalPlugins/brailleExtender/__init__.py:64
+#: addon/globalPlugins/brailleExtender/__init__.py:67
msgid "Objects"
msgstr "Objekti"
-#: addon/globalPlugins/brailleExtender/__init__.py:65
+#: addon/globalPlugins/brailleExtender/__init__.py:68
msgid "Review"
msgstr "Pregled"
-#: addon/globalPlugins/brailleExtender/__init__.py:66
+#: addon/globalPlugins/brailleExtender/__init__.py:69
msgid "Links"
msgstr "Veze"
-#: addon/globalPlugins/brailleExtender/__init__.py:67
+#: addon/globalPlugins/brailleExtender/__init__.py:70
msgid "Unvisited links"
msgstr "Neposjećene veze"
-#: addon/globalPlugins/brailleExtender/__init__.py:68
+#: addon/globalPlugins/brailleExtender/__init__.py:71
msgid "Visited links"
msgstr "Posjećene veze"
-#: addon/globalPlugins/brailleExtender/__init__.py:69
+#: addon/globalPlugins/brailleExtender/__init__.py:72
msgid "Landmarks"
msgstr "Orjentiri"
-#: addon/globalPlugins/brailleExtender/__init__.py:70
+#: addon/globalPlugins/brailleExtender/__init__.py:73
msgid "Headings"
msgstr "Naslovi"
-#: addon/globalPlugins/brailleExtender/__init__.py:71
+#: addon/globalPlugins/brailleExtender/__init__.py:74
msgid "Headings at level 1"
msgstr "Naslovi na razini 1"
-#: addon/globalPlugins/brailleExtender/__init__.py:72
+#: addon/globalPlugins/brailleExtender/__init__.py:75
msgid "Headings at level 2"
msgstr "Naslovi na razini 2"
-#: addon/globalPlugins/brailleExtender/__init__.py:73
+#: addon/globalPlugins/brailleExtender/__init__.py:76
msgid "Headings at level 3"
msgstr "Naslovi na razini 3"
-#: addon/globalPlugins/brailleExtender/__init__.py:74
+#: addon/globalPlugins/brailleExtender/__init__.py:77
msgid "Headings at level 4"
msgstr "Naslovi na razini 4"
-#: addon/globalPlugins/brailleExtender/__init__.py:75
+#: addon/globalPlugins/brailleExtender/__init__.py:78
msgid "Headings at level 5"
msgstr "Naslovi na razini 5"
-#: addon/globalPlugins/brailleExtender/__init__.py:76
+#: addon/globalPlugins/brailleExtender/__init__.py:79
msgid "Headings at level 6"
msgstr "Naslovi na razini 6"
-#: addon/globalPlugins/brailleExtender/__init__.py:77
+#: addon/globalPlugins/brailleExtender/__init__.py:80
msgid "Lists"
msgstr "Popisi"
-#: addon/globalPlugins/brailleExtender/__init__.py:78
+#: addon/globalPlugins/brailleExtender/__init__.py:81
msgid "List items"
msgstr "Elementi popisa"
-#: addon/globalPlugins/brailleExtender/__init__.py:79
+#: addon/globalPlugins/brailleExtender/__init__.py:82
msgid "Graphics"
msgstr "Slike"
-#: addon/globalPlugins/brailleExtender/__init__.py:80
+#: addon/globalPlugins/brailleExtender/__init__.py:83
msgid "Block quotes"
msgstr "Citati"
-#: addon/globalPlugins/brailleExtender/__init__.py:81
+#: addon/globalPlugins/brailleExtender/__init__.py:84
msgid "Buttons"
msgstr "Gumbi"
-#: addon/globalPlugins/brailleExtender/__init__.py:82
+#: addon/globalPlugins/brailleExtender/__init__.py:85
msgid "Form fields"
msgstr "Polja obrazaca"
-#: addon/globalPlugins/brailleExtender/__init__.py:83
+#: addon/globalPlugins/brailleExtender/__init__.py:86
msgid "Edit fields"
msgstr "Polja za uređivanje"
-#: addon/globalPlugins/brailleExtender/__init__.py:84
+#: addon/globalPlugins/brailleExtender/__init__.py:87
msgid "Radio buttons"
msgstr "Izborni gumbi"
-#: addon/globalPlugins/brailleExtender/__init__.py:85
+#: addon/globalPlugins/brailleExtender/__init__.py:88
msgid "Combo boxes"
msgstr "Odabirni okviri"
-#: addon/globalPlugins/brailleExtender/__init__.py:86
+#: addon/globalPlugins/brailleExtender/__init__.py:89
msgid "Check boxes"
msgstr "Potvrdni okviri"
-#: addon/globalPlugins/brailleExtender/__init__.py:87
+#: addon/globalPlugins/brailleExtender/__init__.py:90
msgid "Not link blocks"
msgstr "Tekst izvan bloka linkova"
-#: addon/globalPlugins/brailleExtender/__init__.py:88
+#: addon/globalPlugins/brailleExtender/__init__.py:91
msgid "Frames"
msgstr "Okviri"
-#: addon/globalPlugins/brailleExtender/__init__.py:89
+#: addon/globalPlugins/brailleExtender/__init__.py:92
msgid "Separators"
msgstr "Rastavljači"
-#: addon/globalPlugins/brailleExtender/__init__.py:90
+#: addon/globalPlugins/brailleExtender/__init__.py:93
msgid "Embedded objects"
msgstr "Ugrađeni objekti"
-#: addon/globalPlugins/brailleExtender/__init__.py:91
+#: addon/globalPlugins/brailleExtender/__init__.py:94
msgid "Annotations"
msgstr "Anotacije"
-#: addon/globalPlugins/brailleExtender/__init__.py:92
+#: addon/globalPlugins/brailleExtender/__init__.py:95
msgid "Spelling errors"
msgstr "Pravopisne pogreške"
-#: addon/globalPlugins/brailleExtender/__init__.py:93
+#: addon/globalPlugins/brailleExtender/__init__.py:96
msgid "Tables"
msgstr "tablice"
-#: addon/globalPlugins/brailleExtender/__init__.py:94
+#: addon/globalPlugins/brailleExtender/__init__.py:97
msgid "Move in table"
msgstr "Premještanje po tablici"
-#: addon/globalPlugins/brailleExtender/__init__.py:100
+#: addon/globalPlugins/brailleExtender/__init__.py:103
msgid "If pressed twice, presents the information in browse mode"
msgstr "ako je pritisnuto dvaput, prikazuje informacije u brajičnom pregledu"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Docu&mentation"
msgstr "&Pomoć"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Opens the addon's documentation."
msgstr "Otvara pomoc dodatka."
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "&Settings"
msgstr "&Postavke"
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "Opens the addons' settings."
msgstr "Otvara postavke dodatka."
-#: addon/globalPlugins/brailleExtender/__init__.py:265
-msgid "Braille &dictionaries"
-msgstr "Brajični &Rječnici"
+#: addon/globalPlugins/brailleExtender/__init__.py:270
+msgid "Table &dictionaries"
+msgstr "&Rječnici tablice"
-#: addon/globalPlugins/brailleExtender/__init__.py:265
+#: addon/globalPlugins/brailleExtender/__init__.py:270
msgid "'Braille dictionaries' menu"
msgstr "Izbornik 'brajičnih rječnika'"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid "&Global dictionary"
msgstr "&Globalni rječnik"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid ""
"A dialog where you can set global dictionary by adding dictionary entries to "
"the list."
@@ -193,11 +193,11 @@ msgstr ""
"Dijaloški okvir u kojem se može dodati globalni rječnik putem dodavanja "
"zapisa u isti."
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid "&Table dictionary"
msgstr "&Rječnik tablice"
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid ""
"A dialog where you can set table-specific dictionary by adding dictionary "
"entries to the list."
@@ -205,228 +205,252 @@ msgstr ""
"Rječnik specifičan za brajičnu tablicu u kojem se mogu dodati zapisi "
"specifični za tablicu."
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid "Te&mporary dictionary"
msgstr "&Privremeni rječnik"
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid ""
"A dialog where you can set temporary dictionary by adding dictionary entries "
"to the list."
msgstr ""
"Dijaloški okvir privremenih rječnika u kojem možete dodati zapise za isti."
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+msgid "Advanced &input mode dictionary"
+msgstr "Rječnik naprednog načina unosa"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+msgid "Advanced input mode configuration"
+msgstr "Konfiguracija naprednog načina unosa"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "&Quick launches"
msgstr "&Brza pokretanja"
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "Quick launches configuration"
msgstr "Konfiguracija brzih pokretanja"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "&Profile editor"
msgstr "Uređivač &profila"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "Profile editor"
msgstr "uređivač profila"
-#: addon/globalPlugins/brailleExtender/__init__.py:285
+#: addon/globalPlugins/brailleExtender/__init__.py:296
msgid "Overview of the current input braille table"
msgstr "Pregled trenutne brajične tablice"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload add-on"
msgstr "Ponovno učitaj dodatak"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload this add-on."
msgstr "Ponovno učitava dodatak."
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "&Check for update"
msgstr "&Provjeri, postoji li nova inačica"
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "Checks if update is available"
msgstr "Provjerava, postoji li nadogradnja"
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "&Website"
msgstr "&Web stranica"
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "Open addon's website."
msgstr "Otvara web stranicu dodatka."
-#: addon/globalPlugins/brailleExtender/__init__.py:293
+#: addon/globalPlugins/brailleExtender/__init__.py:304
msgid "&Braille Extender"
msgstr "&Braille Extender"
-#: addon/globalPlugins/brailleExtender/__init__.py:297
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:319
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Global dictionary"
msgstr "Globalni rječnik"
-#: addon/globalPlugins/brailleExtender/__init__.py:302
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:324
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Table dictionary"
msgstr "Rječnik tablice"
-#: addon/globalPlugins/brailleExtender/__init__.py:306
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:328
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Temporary dictionary"
msgstr "Privremeni rječnik"
-#: addon/globalPlugins/brailleExtender/__init__.py:416
+#: addon/globalPlugins/brailleExtender/__init__.py:438
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
msgid "Character"
msgstr "Znak"
-#: addon/globalPlugins/brailleExtender/__init__.py:417
+#: addon/globalPlugins/brailleExtender/__init__.py:439
msgid "Word"
msgstr "Riječ"
-#: addon/globalPlugins/brailleExtender/__init__.py:418
+#: addon/globalPlugins/brailleExtender/__init__.py:440
msgid "Line"
msgstr "Redak"
-#: addon/globalPlugins/brailleExtender/__init__.py:419
+#: addon/globalPlugins/brailleExtender/__init__.py:441
msgid "Paragraph"
msgstr "Odlomak"
-#: addon/globalPlugins/brailleExtender/__init__.py:420
+#: addon/globalPlugins/brailleExtender/__init__.py:442
msgid "Page"
msgstr "Stranica"
-#: addon/globalPlugins/brailleExtender/__init__.py:421
+#: addon/globalPlugins/brailleExtender/__init__.py:443
msgid "Document"
msgstr "Dokument"
-#: addon/globalPlugins/brailleExtender/__init__.py:457
+#: addon/globalPlugins/brailleExtender/__init__.py:479
msgid "Not available here"
msgstr "Nije ovdje dostupno"
-#: addon/globalPlugins/brailleExtender/__init__.py:475
#: addon/globalPlugins/brailleExtender/__init__.py:497
+#: addon/globalPlugins/brailleExtender/__init__.py:519
msgid "Not supported here or browse mode not enabled"
msgstr "Nije podržano ovdje, ili način pregleda nije uključen"
-#: addon/globalPlugins/brailleExtender/__init__.py:477
+#: addon/globalPlugins/brailleExtender/__init__.py:499
msgid "Select previous rotor setting"
msgstr "Označi prethodnu postavku rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:478
+#: addon/globalPlugins/brailleExtender/__init__.py:500
msgid "Select next rotor setting"
msgstr "Označi slijedeću postavku rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:526
+#: addon/globalPlugins/brailleExtender/__init__.py:548
msgid "Move to previous item depending rotor setting"
msgstr "Prebacuje se na prethodnu ovisnu stavku rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:527
+#: addon/globalPlugins/brailleExtender/__init__.py:549
msgid "Move to next item depending rotor setting"
msgstr "Prebacuje se na sljedeću stavku rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:535
+#: addon/globalPlugins/brailleExtender/__init__.py:557
msgid ""
"Varies depending on rotor setting. Eg: in object mode, it's similar to NVDA"
"+enter"
msgstr ""
"Varira ovisno o postavci rotora. NPR: u načinu objekta, slično kao NVDA+enter"
-#: addon/globalPlugins/brailleExtender/__init__.py:538
+#: addon/globalPlugins/brailleExtender/__init__.py:560
msgid "Move to previous item using rotor setting"
msgstr "Prebacuje se na prethodnu stavku koristeći postavku rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:539
+#: addon/globalPlugins/brailleExtender/__init__.py:561
msgid "Move to next item using rotor setting"
msgstr "prebacuje se na sljedeću postavku koristeći postavku rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
+#: addon/globalPlugins/brailleExtender/__init__.py:565
#, python-format
msgid "Braille keyboard %s"
msgstr "Brajična tipkovnica %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "locked"
msgstr "Zaključano"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "unlocked"
msgstr "OtključanoOtključano"
-#: addon/globalPlugins/brailleExtender/__init__.py:544
+#: addon/globalPlugins/brailleExtender/__init__.py:566
msgid "Lock/unlock braille keyboard"
msgstr "Zaključava/otključava brajičnu tipkovnicu"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#, python-format
-msgid "Dots 7 and 8: %s"
-msgstr "Točkice 7 i 8: %s"
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
+msgid "enabled"
+msgstr "Omogućeno"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
msgid "disabled"
msgstr "Onemogućeno"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
-msgid "enabled"
-msgstr "Omogućeno"
+#: addon/globalPlugins/brailleExtender/__init__.py:571
+#, python-format
+msgid "One hand mode %s"
+msgstr "Način jedne ruke %s"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:572
+msgid "Enable/disable one hand mode feature"
+msgstr "Uključuje ili isključuje način rada jednom rukom"
-#: addon/globalPlugins/brailleExtender/__init__.py:550
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#, python-format
+msgid "Dots 7 and 8: %s"
+msgstr "Točkice 7 i 8: %s"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:578
msgid "Hide/show dots 7 and 8"
msgstr "Pokaži/sakrij točkice 7 i 8"
-#: addon/globalPlugins/brailleExtender/__init__.py:555
+#: addon/globalPlugins/brailleExtender/__init__.py:583
#, python-format
msgid "BRF mode: %s"
msgstr "Način formatirane brajice: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:556
+#: addon/globalPlugins/brailleExtender/__init__.py:584
msgid "Enable/disable BRF mode"
msgstr "Uključuje ili isključuje način formatirane brajice"
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:588
#, python-format
msgid "Modifier keys %s"
msgstr "Modifikatorske tipke %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:561
+#: addon/globalPlugins/brailleExtender/__init__.py:589
msgid "Lock/unlock modifiers keys"
msgstr "Otključava/zaključava modifikatorske tipke"
-#: addon/globalPlugins/brailleExtender/__init__.py:567
+#: addon/globalPlugins/brailleExtender/__init__.py:595
msgid "Enable/disable Attribra"
msgstr "Omoguči/onemoguči attribru"
-#: addon/globalPlugins/brailleExtender/__init__.py:577
+#: addon/globalPlugins/brailleExtender/__init__.py:605
msgid "Quick access to the \"say current line while scrolling in\" option"
msgstr "Brzi pristup opciji \"izgovori trenutni redak pri prebacivanju\""
-#: addon/globalPlugins/brailleExtender/__init__.py:582
+#: addon/globalPlugins/brailleExtender/__init__.py:610
msgid "Speech on"
msgstr "Govor je uključen"
-#: addon/globalPlugins/brailleExtender/__init__.py:585
+#: addon/globalPlugins/brailleExtender/__init__.py:613
msgid "Speech off"
msgstr "Govor je isključen"
-#: addon/globalPlugins/brailleExtender/__init__.py:587
+#: addon/globalPlugins/brailleExtender/__init__.py:615
msgid "Toggle speech on or off"
msgstr "Uključuje ili isključuje govor"
-#: addon/globalPlugins/brailleExtender/__init__.py:595
+#: addon/globalPlugins/brailleExtender/__init__.py:623
msgid "No extra info for this element"
msgstr "Nema dodatnih informacija za ovaj element"
#. Translators: Input help mode message for report extra infos command.
-#: addon/globalPlugins/brailleExtender/__init__.py:599
+#: addon/globalPlugins/brailleExtender/__init__.py:627
msgid ""
"Reports some extra infos for the current element. For example, the URL on a "
"link"
@@ -434,45 +458,45 @@ msgstr ""
"Izvještava neke dodatne informacije o trenutnom elementu. Na primjer URL "
"trenutnog linka"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid " Input table"
msgstr " ulazna brajična tablica"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid "Output table"
msgstr "Izlazna brajična tablica"
-#: addon/globalPlugins/brailleExtender/__init__.py:606
+#: addon/globalPlugins/brailleExtender/__init__.py:634
#, python-format
msgid "Table overview (%s)"
msgstr "Pregled tablice (%s)"
-#: addon/globalPlugins/brailleExtender/__init__.py:607
+#: addon/globalPlugins/brailleExtender/__init__.py:635
msgid "Display an overview of current input braille table"
msgstr "Prikazuje pregled trenutne ulazne brajične tablice"
-#: addon/globalPlugins/brailleExtender/__init__.py:612
-#: addon/globalPlugins/brailleExtender/__init__.py:620
-#: addon/globalPlugins/brailleExtender/__init__.py:627
+#: addon/globalPlugins/brailleExtender/__init__.py:640
+#: addon/globalPlugins/brailleExtender/__init__.py:648
+#: addon/globalPlugins/brailleExtender/__init__.py:655
msgid "No text selection"
msgstr "Nema označenog teksta"
-#: addon/globalPlugins/brailleExtender/__init__.py:613
+#: addon/globalPlugins/brailleExtender/__init__.py:641
msgid "Unicode Braille conversion"
msgstr "Konverzija u brajični unicode"
-#: addon/globalPlugins/brailleExtender/__init__.py:614
+#: addon/globalPlugins/brailleExtender/__init__.py:642
msgid ""
"Convert the text selection in unicode braille and display it in a browseable "
"message"
msgstr ""
"Pretvara tekst u Unicode brajicu i prikazuje ga kao virtualiziranu poruku"
-#: addon/globalPlugins/brailleExtender/__init__.py:621
+#: addon/globalPlugins/brailleExtender/__init__.py:649
msgid "Braille Unicode to cell descriptions"
msgstr "Brajični unicode na opise znakova"
-#: addon/globalPlugins/brailleExtender/__init__.py:622
+#: addon/globalPlugins/brailleExtender/__init__.py:650
msgid ""
"Convert text selection in braille cell descriptions and display it in a "
"browseable message"
@@ -480,11 +504,11 @@ msgstr ""
"Pretvara tekst u format opisa brajičnih ćelija i prikazuje ga u virtualnom "
"prozoru"
-#: addon/globalPlugins/brailleExtender/__init__.py:629
+#: addon/globalPlugins/brailleExtender/__init__.py:657
msgid "Cell descriptions to braille Unicode"
msgstr "Opisi znakova na brajični unicode"
-#: addon/globalPlugins/brailleExtender/__init__.py:630
+#: addon/globalPlugins/brailleExtender/__init__.py:658
msgid ""
"Braille cell description to Unicode Braille. E.g.: in a edit field type "
"'125-24-0-1-123-123'. Then select this text and execute this command"
@@ -492,84 +516,102 @@ msgstr ""
"Opisuje brajičnu ćeliju brajičnim unicode znakovima. to jest.: u polje za "
"uređivanje napišite '125-24-0-1-123-123'. a špsčoke tpga izvršite ovu komandu"
-#: addon/globalPlugins/brailleExtender/__init__.py:634
+#: addon/globalPlugins/brailleExtender/__init__.py:663
+#, python-format
+msgid "Advanced braille input mode %s"
+msgstr "Način naprednog uređivanja teksta %s"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:664
+msgid "Enable/disable the advanced input mode"
+msgstr "Uključuje ili isključuje napredni način unosa"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:669
+#, python-format
+msgid "Description of undefined characters %s"
+msgstr "Opis Nedefiniranih znakova %s"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:671
+msgid "Enable/disable description of undefined characters"
+msgstr "Uključuje ili isključuje opis nedefiniranih znakova"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:675
msgid "Get the cursor position of text"
msgstr "Dohvati položaj teksta ispod pokazivača"
-#: addon/globalPlugins/brailleExtender/__init__.py:660
+#: addon/globalPlugins/brailleExtender/__init__.py:701
msgid "Hour and date with autorefresh"
msgstr "Datum i vrijeme s automatskim osvježavanjem"
-#: addon/globalPlugins/brailleExtender/__init__.py:673
+#: addon/globalPlugins/brailleExtender/__init__.py:714
msgid "Autoscroll stopped"
msgstr "automatsko čitanje je zaustavljeno"
-#: addon/globalPlugins/brailleExtender/__init__.py:680
+#: addon/globalPlugins/brailleExtender/__init__.py:721
msgid "Unable to start autoscroll. More info in NVDA log"
msgstr ""
"Nije moguće pokrenuti automatsko čitanje. Više informacija nalazi se u NVDA "
"zapisniku."
-#: addon/globalPlugins/brailleExtender/__init__.py:685
+#: addon/globalPlugins/brailleExtender/__init__.py:726
msgid "Enable/disable autoscroll"
msgstr "Uključuje ili isključuje automatsko čitanje"
-#: addon/globalPlugins/brailleExtender/__init__.py:700
+#: addon/globalPlugins/brailleExtender/__init__.py:741
msgid "Increase the master volume"
msgstr "povećava vrijednost automatske glasnoće"
-#: addon/globalPlugins/brailleExtender/__init__.py:717
+#: addon/globalPlugins/brailleExtender/__init__.py:758
msgid "Decrease the master volume"
msgstr "Smanjuje vrijednost glavne glasnoće"
-#: addon/globalPlugins/brailleExtender/__init__.py:723
+#: addon/globalPlugins/brailleExtender/__init__.py:764
msgid "Muted sound"
msgstr "zvuk je utišan"
-#: addon/globalPlugins/brailleExtender/__init__.py:725
+#: addon/globalPlugins/brailleExtender/__init__.py:766
#, python-format
msgid "Unmuted sound (%3d%%)"
msgstr "Ottišan zvuk (%3d%%)"
-#: addon/globalPlugins/brailleExtender/__init__.py:731
+#: addon/globalPlugins/brailleExtender/__init__.py:772
msgid "Mute or unmute sound"
msgstr "utišaj ili ottišaj zvuk"
-#: addon/globalPlugins/brailleExtender/__init__.py:736
+#: addon/globalPlugins/brailleExtender/__init__.py:777
#, python-format
msgid "Show the %s documentation"
msgstr "Prikazuje pomoć %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:774
+#: addon/globalPlugins/brailleExtender/__init__.py:815
msgid "No such file or directory"
msgstr "Nema takve mape ili datoteke"
-#: addon/globalPlugins/brailleExtender/__init__.py:776
+#: addon/globalPlugins/brailleExtender/__init__.py:817
msgid "Opens a custom program/file. Go to settings to define them"
msgstr ""
"Otvara prilagođeni program/datoteku. Otvorite postavke, kako biste ih "
"definirali"
-#: addon/globalPlugins/brailleExtender/__init__.py:783
+#: addon/globalPlugins/brailleExtender/__init__.py:824
#, python-format
msgid "Check for %s updates, and starts the download if there is one"
msgstr "Provjerava postoji li nadogradnja %s, i preuzima istu"
-#: addon/globalPlugins/brailleExtender/__init__.py:813
+#: addon/globalPlugins/brailleExtender/__init__.py:854
msgid "Increase autoscroll delay"
msgstr "povećaj brzinu automatskog čitanja"
-#: addon/globalPlugins/brailleExtender/__init__.py:814
+#: addon/globalPlugins/brailleExtender/__init__.py:855
msgid "Decrease autoscroll delay"
msgstr "Smanji brzinu automatskog čitanja"
-#: addon/globalPlugins/brailleExtender/__init__.py:818
-#: addon/globalPlugins/brailleExtender/__init__.py:836
+#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:877
msgid "Please use NVDA 2017.3 minimum for this feature"
msgstr "Molimo koristite NVDA minimalno 2017.3 kako bi ova značajka radila"
-#: addon/globalPlugins/brailleExtender/__init__.py:820
-#: addon/globalPlugins/brailleExtender/__init__.py:838
+#: addon/globalPlugins/brailleExtender/__init__.py:861
+#: addon/globalPlugins/brailleExtender/__init__.py:879
msgid ""
"You must choose at least two tables for this feature. Please fill in the "
"settings"
@@ -577,49 +619,49 @@ msgstr ""
"Morate koristiti najmanje dvije tablice za ovu mogučnost. Molimo popunite "
"postavke"
-#: addon/globalPlugins/brailleExtender/__init__.py:827
+#: addon/globalPlugins/brailleExtender/__init__.py:868
#, python-format
msgid "Input: %s"
msgstr "Ulaz: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:831
+#: addon/globalPlugins/brailleExtender/__init__.py:872
msgid "Switch between his favorite input braille tables"
msgstr "Prebacuje između ulaznih brajičnih tablica"
-#: addon/globalPlugins/brailleExtender/__init__.py:847
+#: addon/globalPlugins/brailleExtender/__init__.py:888
#, python-format
msgid "Output: %s"
msgstr "Izlaz: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:850
+#: addon/globalPlugins/brailleExtender/__init__.py:891
msgid "Switch between his favorite output braille tables"
msgstr "Prebacuje između izlaznih brajičnih tablica"
-#: addon/globalPlugins/brailleExtender/__init__.py:856
+#: addon/globalPlugins/brailleExtender/__init__.py:897
#, python-brace-format
msgid "I⣿O:{I}"
msgstr "I⣿O:{I}"
-#: addon/globalPlugins/brailleExtender/__init__.py:857
+#: addon/globalPlugins/brailleExtender/__init__.py:898
#, python-brace-format
msgid "Input and output: {I}."
msgstr "Ulaz i izlaz: {I}."
-#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:900
#, python-brace-format
msgid "I:{I} ⣿ O: {O}"
msgstr "I:{I} ⣿ O: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:860
+#: addon/globalPlugins/brailleExtender/__init__.py:901
#, python-brace-format
msgid "Input: {I}; Output: {O}"
msgstr "Ulaz: {I}; Izlaz: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:864
+#: addon/globalPlugins/brailleExtender/__init__.py:905
msgid "Announce the current input and output braille tables"
msgstr "Izgovaranje trenutne ulazne i izlazne brajične tablice"
-#: addon/globalPlugins/brailleExtender/__init__.py:869
+#: addon/globalPlugins/brailleExtender/__init__.py:910
msgid ""
"Gives the Unicode value of the character where the cursor is located and the "
"decimal, binary and octal equivalent."
@@ -627,7 +669,7 @@ msgstr ""
"Dohvaća Unicode vrijednost znaka tamo gje se načazi pokazivač. Također "
"dodaje binarnu, oktalnu, te heksadecimalnu vrijednost."
-#: addon/globalPlugins/brailleExtender/__init__.py:877
+#: addon/globalPlugins/brailleExtender/__init__.py:918
msgid ""
"Show the output speech for selected text in braille. Useful for emojis for "
"example"
@@ -635,110 +677,110 @@ msgstr ""
"Prikaži izlaznu govornu informaciju. za označeni tekst. Korisno za emoji "
"simbole"
-#: addon/globalPlugins/brailleExtender/__init__.py:881
+#: addon/globalPlugins/brailleExtender/__init__.py:922
msgid "No shortcut performed from a braille display"
msgstr "Nema izvođenog prečaca sa brajičnog redka"
-#: addon/globalPlugins/brailleExtender/__init__.py:885
+#: addon/globalPlugins/brailleExtender/__init__.py:926
msgid "Repeat the last shortcut performed from a braille display"
msgstr "Ponovi zadnji prečac sa brajičnog retka"
-#: addon/globalPlugins/brailleExtender/__init__.py:899
+#: addon/globalPlugins/brailleExtender/__init__.py:940
#, python-format
msgid "%s reloaded"
msgstr "%s je ponovno učitan"
-#: addon/globalPlugins/brailleExtender/__init__.py:911
+#: addon/globalPlugins/brailleExtender/__init__.py:952
#, python-format
msgid "Reload %s"
msgstr "Ponovno učitaj %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:914
+#: addon/globalPlugins/brailleExtender/__init__.py:955
msgid "Reload the first braille display defined in settings"
msgstr "ponovno učitava prvi brajični redak ojeg si definirao u postavkama"
-#: addon/globalPlugins/brailleExtender/__init__.py:917
+#: addon/globalPlugins/brailleExtender/__init__.py:958
msgid "Reload the second braille display defined in settings"
msgstr "ponovno učitava drugi brajični redak, kojeg si definirao u postavkama"
-#: addon/globalPlugins/brailleExtender/__init__.py:923
+#: addon/globalPlugins/brailleExtender/__init__.py:964
msgid "No braille display specified. No reload to do"
msgstr "Nije određen brajični redak. Ništa nije potrebno ponovno pokretati"
-#: addon/globalPlugins/brailleExtender/__init__.py:960
+#: addon/globalPlugins/brailleExtender/__init__.py:1001
msgid "WIN"
msgstr "WIN"
-#: addon/globalPlugins/brailleExtender/__init__.py:961
+#: addon/globalPlugins/brailleExtender/__init__.py:1002
msgid "CTRL"
msgstr "CTRL"
-#: addon/globalPlugins/brailleExtender/__init__.py:962
+#: addon/globalPlugins/brailleExtender/__init__.py:1003
msgid "SHIFT"
msgstr "SHIFT"
-#: addon/globalPlugins/brailleExtender/__init__.py:963
+#: addon/globalPlugins/brailleExtender/__init__.py:1004
msgid "ALT"
msgstr "ALT"
-#: addon/globalPlugins/brailleExtender/__init__.py:1065
+#: addon/globalPlugins/brailleExtender/__init__.py:1106
msgid "Keyboard shortcut cancelled"
msgstr "Prečac je odbačen"
#. /* docstrings for modifier keys */
-#: addon/globalPlugins/brailleExtender/__init__.py:1073
+#: addon/globalPlugins/brailleExtender/__init__.py:1114
msgid "Emulate pressing down "
msgstr "Oponaša pritisak strelice dolje "
-#: addon/globalPlugins/brailleExtender/__init__.py:1074
+#: addon/globalPlugins/brailleExtender/__init__.py:1115
msgid " on the system keyboard"
msgstr " na tipkovnici sustava"
-#: addon/globalPlugins/brailleExtender/__init__.py:1130
+#: addon/globalPlugins/brailleExtender/__init__.py:1171
msgid "Current braille view saved"
msgstr "Trenutačni brajični pregled je spremljen"
-#: addon/globalPlugins/brailleExtender/__init__.py:1133
+#: addon/globalPlugins/brailleExtender/__init__.py:1174
msgid "Buffer cleaned"
msgstr "Spremnik je izbrisan"
-#: addon/globalPlugins/brailleExtender/__init__.py:1134
+#: addon/globalPlugins/brailleExtender/__init__.py:1175
msgid "Save the current braille view. Press twice quickly to clean the buffer"
msgstr ""
"Sprema trenutačni brajični pregled. Pritisnite dva puta brzo, kako biste "
"očistili spremnik"
-#: addon/globalPlugins/brailleExtender/__init__.py:1139
+#: addon/globalPlugins/brailleExtender/__init__.py:1180
msgid "View saved"
msgstr "Pregled je spremljen"
-#: addon/globalPlugins/brailleExtender/__init__.py:1140
+#: addon/globalPlugins/brailleExtender/__init__.py:1181
msgid "Buffer empty"
msgstr "Spremnik je prazan"
-#: addon/globalPlugins/brailleExtender/__init__.py:1141
+#: addon/globalPlugins/brailleExtender/__init__.py:1182
msgid "Show the saved braille view through a flash message"
msgstr "Prikazuje spremljeni brajični pregled kao flash poruku."
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Pause"
msgstr "Pauza"
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Resume"
msgstr "Nastavi"
-#: addon/globalPlugins/brailleExtender/__init__.py:1217
-#: addon/globalPlugins/brailleExtender/__init__.py:1224
+#: addon/globalPlugins/brailleExtender/__init__.py:1258
+#: addon/globalPlugins/brailleExtender/__init__.py:1265
#, python-format
msgid "Auto test type %d"
msgstr "Tip automatskog testiranja %d"
-#: addon/globalPlugins/brailleExtender/__init__.py:1234
+#: addon/globalPlugins/brailleExtender/__init__.py:1275
msgid "Auto test stopped"
msgstr "Automatsko testiranje je zaustavljeno"
-#: addon/globalPlugins/brailleExtender/__init__.py:1244
+#: addon/globalPlugins/brailleExtender/__init__.py:1285
msgid ""
"Auto test started. Use the up and down arrow keys to change speed. Use the "
"left and right arrow keys to change test type. Use space key to pause or "
@@ -749,92 +791,376 @@ msgstr ""
"testiranja. Koristite razmaknicu za pauziranje ili nstavljanje testa. "
"Koristite escape za izlaz"
-#: addon/globalPlugins/brailleExtender/__init__.py:1246
+#: addon/globalPlugins/brailleExtender/__init__.py:1287
msgid "Auto test"
msgstr "Automatsko testiranje"
-#: addon/globalPlugins/brailleExtender/__init__.py:1251
+#: addon/globalPlugins/brailleExtender/__init__.py:1292
msgid "Add dictionary entry or see a dictionary"
msgstr "Dodaj zapis u rječnik ili pogledaj rječnik"
-#: addon/globalPlugins/brailleExtender/__init__.py:1252
+#: addon/globalPlugins/brailleExtender/__init__.py:1293
msgid "Add a entry in braille dictionary"
msgstr "Dodaj zapis u rječnik brajičnih tablica"
#. Add-on summary, usually the user visible name of the addon.
#. Translators: Summary for this add-on to be shown on installation and add-on information.
-#: addon/globalPlugins/brailleExtender/__init__.py:1299
-#: addon/globalPlugins/brailleExtender/dictionaries.py:111
-#: addon/globalPlugins/brailleExtender/dictionaries.py:367
-#: addon/globalPlugins/brailleExtender/dictionaries.py:374
-#: addon/globalPlugins/brailleExtender/dictionaries.py:378
-#: addon/globalPlugins/brailleExtender/dictionaries.py:382
-#: addon/globalPlugins/brailleExtender/settings.py:33 buildVars.py:24
+#: addon/globalPlugins/brailleExtender/__init__.py:1344
+#: addon/globalPlugins/brailleExtender/dictionaries.py:112
+#: addon/globalPlugins/brailleExtender/dictionaries.py:369
+#: addon/globalPlugins/brailleExtender/dictionaries.py:376
+#: addon/globalPlugins/brailleExtender/dictionaries.py:380
+#: addon/globalPlugins/brailleExtender/dictionaries.py:384
+#: addon/globalPlugins/brailleExtender/settings.py:35
+#: addon/globalPlugins/brailleExtender/settings.py:388 buildVars.py:24
msgid "Braille Extender"
msgstr "Braille Extender"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:33
-#, python-format
-msgid "%s braille display"
-msgstr "%s brajični redak"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+msgid "HUC8"
+msgstr "HUC8"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:34
-#, python-format
-msgid "profile loaded: %s"
-msgstr "Profil je učitan: %s"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:258
+msgid "Hexadecimal"
+msgstr "Heksadecimalni"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:65
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:259
+msgid "Decimal"
+msgstr "Decimalni"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:66
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:260
+msgid "Octal"
+msgstr "Oktalni"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:67
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:261
+msgid "Binary"
+msgstr "Binarni"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/addonDoc.py:46
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:239
+msgid "Representation of undefined characters"
+msgstr "Opis nedefiniranih znakova"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:48
+msgid ""
+"The extension allows you to customize how an undefined character should be "
+"represented within a braille table. To do so, go to the braille table "
+"settings. You can choose between the following representations:"
+msgstr ""
+"Dodatak vam omogućuje podešavanje izgleda nedefiniranog znaka unutar "
+"brajične tablice. Kako biste to podesili, uđite u postavke. Možete izabrati "
+"između sljedećih prikaza:"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:52
+msgid ""
+"You can also combine this option with the “describe the character if "
+"possible” setting."
+msgstr ""
+"Ovu opciju možete kombinirati sa postavkom “Opiši znakove ako je to moguće”."
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:54
+msgid "Notes:"
+msgstr "Upozorenja:"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:56
+msgid ""
+"To distinguish the undefined set of characters while maximizing space, the "
+"best combination is the usage of the HUC8 representation without checking "
+"the “describe character if possible” option."
+msgstr ""
+"U cilju razlikovanja nedefiniranih znakova i dobivanju na slobodnom "
+"prostoru, the najbolje je koristiti prikaz HUC8 bez označavanja potvrdnog "
+"okvira “Opiši znak ako je to moguće”."
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:57
+#, python-brace-format
+msgid "To learn more about the HUC representation, see {url}"
+msgstr "Kako biste saznali više o prikazu HUC, Pogledajte {url}"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:58
+msgid ""
+"Keep in mind that definitions in tables and those in your table dictionaries "
+"take precedence over character descriptions, which also take precedence over "
+"the chosen representation for undefined characters."
+msgstr ""
+"Imajte na umu da definicije u tablicama, te one u rječnicima tablice imaju "
+"prednost nad opisima znakova, koje opet imaju prednost nad izabranim "
+"prikazom nedefiniranih znakova."
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:61
+msgid "Getting Current Character Info"
+msgstr "Dobivanje informacije o trenutnom znaku"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:63
+msgid ""
+"This feature allows you to obtain various information regarding the "
+"character under the cursor using the current input braille table, such as:"
+msgstr ""
+"Ova vam značajka omogućuje dobivanje raznih informacija o znaku pod kursorom "
+"koristeći trenutnu brajičnu tablicu, kao što su to:"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:65
+msgid ""
+"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
+"values; A description of the character if possible; - The Unicode Braille "
+"representation and the Braille dot pattern."
+msgstr ""
+"prikazi HUC8 i HUC6; Heksadecimalnu, decimalnu, oktalnu i binarnu "
+"vrijednost; Opis znaka ako je dostupan; - Brajični unicode prikaz i "
+"vrijednost u točkicama."
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:67
+msgid ""
+"Pressing the defined gesture associated to this function once shows you the "
+"information in a flash message and a double-press displays the same "
+"information in a virtual NVDA buffer."
+msgstr ""
+"Kada pritisnete ovaj prečac jedamput, prikazat će se brza poruka a dvostruku "
+"pritisak pokazuje informaciju u virtualnom spremniku."
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:69
+msgid ""
+"On supported displays the defined gesture is ⡉+space. No system gestures are "
+"defined by default."
+msgstr ""
+"Na podržanim brajičnim retcima prečac je ⡉+razmaknica. Podrazumjevano nisu "
+"definirani prečaci sustava."
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:71
+#, python-brace-format
+msgid ""
+"For example, for the '{chosenChar}' character, we will get the following "
+"information:"
+msgstr ""
+"Na primjer, za izabrani '{chosenChar}' znak, dobit ćemo slijedeće "
+"informacije:"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:74
+msgid "Advanced Braille Input"
+msgstr "Napredni unos brajičnih znakova"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:76
+msgid ""
+"This feature allows you to enter any character from its HUC8 representation "
+"or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to "
+"develop abbreviations. To use this function, enter the advanced input mode "
+"and then enter the desired pattern. Default gestures: NVDA+Windows+i or ⡊"
+"+space (on supported displays). Press the same gesture to exit this mode. "
+"Alternatively, an option allows you to automatically exit this mode after "
+"entering a single pattern. "
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:80
+msgid "Specify the basis as follows"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
+msgid "⠭ or ⠓"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
+msgid "for a hexadecimal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:83
+msgid "for a decimal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:84
+msgid "for an octal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:87
+msgid ""
+"Enter the value of the character according to the previously selected basis."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:88
+msgid "Press Space to validate."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:91
+msgid ""
+"For abbreviations, you must first add them in the dialog box - Advanced mode "
+"dictionaries -. Then, you just have to enter your abbreviation and press "
+"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:93
+msgid "Here are some examples of sequences to be entered for given characters:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:97
+msgid "Note: the HUC6 input is currently not supported."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:100
+msgid "One-hand mode"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:102
+msgid ""
+"This feature allows you to compose a cell in several steps. This can be "
+"activated in the general settings of the extension's preferences or on the "
+"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
+"Three input methods are available."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:103
+msgid "Method #1: fill a cell in 2 stages on both sides"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:105
+msgid ""
+"With this method, type the left side dots, then the right side dots. If one "
+"side is empty, type the dots correspondig to the opposite side twice, or "
+"type the dots corresponding to the non-empty side in 2 steps."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:106
+#: addon/globalPlugins/brailleExtender/addonDoc.py:115
+msgid "For example:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:108
+msgid "For ⠛: press dots 1-2 then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:109
+msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:110
+msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:112
+msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:114
+msgid ""
+"Using this method, you can compose a cell with one hand, regardless of which "
+"side of the Braille keyboard you choose. The first step allows you to enter "
+"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
+"An empty cell will be obtained by pressing the space key twice."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:117
+msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:118
+msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:119
+msgid "For ⠘: press space then 1-2, or space then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:121
+msgid ""
+"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
+"validate the character)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:126
+msgid "Dots 1-2, then dots 4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:127
+msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:128
+msgid "Dot 1, then dots 2-4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:129
+msgid "Dots 1-2-4, then dot 5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:130
+msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:131
+msgid "Etc."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:150
+msgid "Documentation"
+msgstr "Dokumentacija"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:160
+msgid "Driver loaded"
+msgstr "Upravljački program je upitan"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:161
+msgid "Profile"
+msgstr "Profil"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:51
+#: addon/globalPlugins/brailleExtender/addonDoc.py:175
msgid "Simple keys"
msgstr "jednostavne tipke"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:53
+#: addon/globalPlugins/brailleExtender/addonDoc.py:177
msgid "Usual shortcuts"
msgstr "uobičajeni prečaci"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:55
+#: addon/globalPlugins/brailleExtender/addonDoc.py:179
msgid "Standard NVDA commands"
msgstr "standardni NVDA prečaci"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:57
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/addonDoc.py:182
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Modifier keys"
msgstr "Modifikacijske tipke"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:59
+#: addon/globalPlugins/brailleExtender/addonDoc.py:185
msgid "Quick navigation keys"
msgstr "Tipke za brzu navigaciju"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:61
+#: addon/globalPlugins/brailleExtender/addonDoc.py:189
msgid "Rotor feature"
msgstr "značajka rotora"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:63
+#: addon/globalPlugins/brailleExtender/addonDoc.py:197
msgid "Gadget commands"
msgstr "komande gadgeti"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:65
+#: addon/globalPlugins/brailleExtender/addonDoc.py:210
msgid "Shortcuts defined outside add-on"
msgstr "Prečaci definirani izvan dodatka"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:85
+#: addon/globalPlugins/brailleExtender/addonDoc.py:238
msgid "Keyboard configurations provided"
msgstr "Omogućene konfiguracije tipkovnice"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:87
+#: addon/globalPlugins/brailleExtender/addonDoc.py:241
msgid "Keyboard configurations are"
msgstr "tipkovničke konfiguracije su"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:93
+#: addon/globalPlugins/brailleExtender/addonDoc.py:250
msgid "Warning:"
msgstr "Upozorenje:"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:94
+#: addon/globalPlugins/brailleExtender/addonDoc.py:252
msgid "BrailleExtender has no gesture map yet for your braille display."
msgstr ""
"BrailleExtender još uvijek nema profil tipkovničkih prečaca za vaš brajični "
"redak."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:95
+#: addon/globalPlugins/brailleExtender/addonDoc.py:255
msgid ""
"However, you can still assign your own gestures in the \"Input Gestures\" "
"dialog (under Preferences menu)."
@@ -842,168 +1168,338 @@ msgstr ""
"Međutim, još uvijek možete odrediti nove prečace u NVDA izborniku>ulazne "
"geste."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:97
+#: addon/globalPlugins/brailleExtender/addonDoc.py:259
msgid "Add-on gestures on the system keyboard"
msgstr "Prečaci dodatka na tipkovnici sustava"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:118
+#: addon/globalPlugins/brailleExtender/addonDoc.py:282
msgid "Arabic"
msgstr "Arapski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:119
+#: addon/globalPlugins/brailleExtender/addonDoc.py:283
msgid "Croatian"
msgstr "Hrvatski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:120
+#: addon/globalPlugins/brailleExtender/addonDoc.py:284
msgid "Danish"
msgstr "Danski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:121
+#: addon/globalPlugins/brailleExtender/addonDoc.py:285
+msgid "English and French"
+msgstr "Engleski i francuski"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:286
msgid "German"
msgstr "njemački"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:122
+#: addon/globalPlugins/brailleExtender/addonDoc.py:287
msgid "Hebrew"
msgstr "hebrejski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:123
+#: addon/globalPlugins/brailleExtender/addonDoc.py:288
msgid "Persian"
msgstr "Perzijski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:124
+#: addon/globalPlugins/brailleExtender/addonDoc.py:289
msgid "Polish"
msgstr "Poljski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:125
+#: addon/globalPlugins/brailleExtender/addonDoc.py:290
msgid "Russian"
msgstr "Ruski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:127
+#: addon/globalPlugins/brailleExtender/addonDoc.py:293
msgid "Copyrights and acknowledgements"
msgstr "Autorska prava i zahvale"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:129
+#: addon/globalPlugins/brailleExtender/addonDoc.py:299
msgid "and other contributors"
msgstr "I drugi suradnici"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:133
+#: addon/globalPlugins/brailleExtender/addonDoc.py:303
msgid "Translators"
msgstr "Prevoditelji"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:139
+#: addon/globalPlugins/brailleExtender/addonDoc.py:313
msgid "Code contributions and other"
msgstr "doprinosi u kodu i ostalo"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:139
+#: addon/globalPlugins/brailleExtender/addonDoc.py:315
msgid "Additional third party copyrighted code is included:"
msgstr "Dodan je kod treće strane, zaštićen autorskim pravima:"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:142
+#: addon/globalPlugins/brailleExtender/addonDoc.py:321
msgid "Thanks also to"
msgstr "također zahvaljujem"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:144
+#: addon/globalPlugins/brailleExtender/addonDoc.py:323
msgid "And thank you very much for all your feedback and comments."
msgstr "i hvala vam za sve vaše povratne informacije i e-mail komentare"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:146
+#: addon/globalPlugins/brailleExtender/addonDoc.py:327
#, python-format
msgid "%s's documentation"
msgstr "%s's pomoć"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:162
+#: addon/globalPlugins/brailleExtender/addonDoc.py:346
#, python-format
msgid "Emulates pressing %s on the system keyboard"
msgstr "Oponaša pritisak %s na tipkovnici sustava"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:169
+#: addon/globalPlugins/brailleExtender/addonDoc.py:357
msgid "description currently unavailable for this shortcut"
msgstr "Opis je trenutno nedostupan za ovaj prečac"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:187
+#: addon/globalPlugins/brailleExtender/addonDoc.py:377
msgid "caps lock"
msgstr "caps lock"
-#: addon/globalPlugins/brailleExtender/configBE.py:40
-#: addon/globalPlugins/brailleExtender/configBE.py:47
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:105
+msgid "all tables"
+msgstr "Sve brajične tablice"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:116
+msgid "Advanced input mode dictionary"
+msgstr "Rječnik naprednog načina unosa"
+
+#. Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
+#. Translators: The label for the combo box of dictionary entries in table dictionary dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:123
+#: addon/globalPlugins/brailleExtender/dictionaries.py:132
+msgid "Dictionary &entries"
+msgstr "&Zapisi u rječniku"
+
+#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:131
+msgid "Abbreviation"
+msgstr "Kratica"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:132
+msgid "Replace by"
+msgstr "Zamjeni sa"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:133
+msgid "Input table"
+msgstr "Ulazna brajična tablica"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
+#. Translators: The label for a button in table dictionaries dialog to add new entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:139
+#: addon/globalPlugins/brailleExtender/dictionaries.py:149
+msgid "&Add"
+msgstr "&Dodaj"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
+#. Translators: The label for a button in table dictionaries dialog to edit existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:145
+#: addon/globalPlugins/brailleExtender/dictionaries.py:155
+msgid "&Edit"
+msgstr "&Uredi"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
+#. Translators: The label for a button in table dictionaries dialog to remove existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:151
+#: addon/globalPlugins/brailleExtender/dictionaries.py:161
+msgid "Re&move"
+msgstr "&Ukloni"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:159
+msgid "&Open the dictionary file in an editor"
+msgstr "&Otvori datoteku rječnika u uređivaču teksta"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
+#. Translators: The label for a button in table dictionaries dialog to reload dictionary.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:164
+#: addon/globalPlugins/brailleExtender/dictionaries.py:174
+msgid "&Reload the dictionary"
+msgstr "&Ponovno učitaj rječnik"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:177
+#: addon/globalPlugins/brailleExtender/dictionaries.py:218
+msgid "Add Dictionary Entry"
+msgstr "Dodaj unos u rječnik"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:221
+msgid "File doesn't exist yet"
+msgstr "Datoteka još ne postoji"
+
+#. Translators: This is the label for the edit dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:242
+#: addon/globalPlugins/brailleExtender/dictionaries.py:290
+msgid "Edit Dictionary Entry"
+msgstr "Uredi zapis u rječniku"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:247
+msgid "&Abreviation"
+msgstr "&Kratica"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:252
+msgid "&Replace by"
+msgstr "&Zamijeni sa"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:276
+msgid "Advanced input mode"
+msgstr "Napredni način unosa"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:284
+msgid "E&xit the advanced input mode after typing one pattern"
+msgstr "&isključi napredni način unosa prilikom upisivana jedne kombinacije"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:291
+msgid "Escape sign for Unicode values"
+msgstr "Znak escape za vrijednosti Unicode"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:54
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:248
+msgid "Use braille table behavior"
+msgstr "Koristi ponašanje definirano u brajičnoj tablici"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:55
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:249
+msgid "Dots 1-8 (⣿)"
+msgstr "točkice 1-8 (⣿)"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:250
+msgid "Dots 1-6 (⠿)"
+msgstr "točkice 1-6 (⠿)"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:251
+msgid "Empty cell (⠀)"
+msgstr "prazna ćelija (⠀)"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:58
+msgid "Other dot pattern (e.g.: 6-123456)"
+msgstr "Druga kombinacija točaka (e.g.: 6-123456)"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:59
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:253
+msgid "Question mark (depending output table)"
+msgstr "Upitnik (ovisi o izlaznoj brajičnoj tablici)"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:60
+msgid "Other sign/pattern (e.g.: \\, ??)"
+msgstr "drugi znak ili kombinacija (npr:: \\, ??)"
+
#: addon/globalPlugins/brailleExtender/configBE.py:61
-#: addon/globalPlugins/brailleExtender/settings.py:421
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:255
+msgid "Hexadecimal, Liblouis style"
+msgstr "Heksadecimalni, Liblouis stil"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:256
+msgid "Hexadecimal, HUC8"
+msgstr "heksadecimalni, HUC8"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:257
+msgid "Hexadecimal, HUC6"
+msgstr "heksadecimalni, HUC6"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:70
+#: addon/globalPlugins/brailleExtender/configBE.py:77
+#: addon/globalPlugins/brailleExtender/configBE.py:91
+#: addon/globalPlugins/brailleExtender/settings.py:426
msgid "none"
msgstr "ništa"
-#: addon/globalPlugins/brailleExtender/configBE.py:41
+#: addon/globalPlugins/brailleExtender/configBE.py:71
msgid "braille only"
msgstr "samo brajica"
-#: addon/globalPlugins/brailleExtender/configBE.py:42
+#: addon/globalPlugins/brailleExtender/configBE.py:72
msgid "speech only"
msgstr "samo govor"
-#: addon/globalPlugins/brailleExtender/configBE.py:43
-#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon/globalPlugins/brailleExtender/configBE.py:73
+#: addon/globalPlugins/brailleExtender/configBE.py:94
msgid "both"
msgstr "oboje"
-#: addon/globalPlugins/brailleExtender/configBE.py:48
+#: addon/globalPlugins/brailleExtender/configBE.py:78
msgid "dots 7 and 8"
msgstr "točkice 7 i 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:49
+#: addon/globalPlugins/brailleExtender/configBE.py:79
msgid "dot 7"
msgstr "točkica 7"
-#: addon/globalPlugins/brailleExtender/configBE.py:50
+#: addon/globalPlugins/brailleExtender/configBE.py:80
msgid "dot 8"
msgstr "točkica 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon/globalPlugins/brailleExtender/configBE.py:86
msgid "stable"
msgstr "stabilna"
-#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon/globalPlugins/brailleExtender/configBE.py:87
msgid "development"
msgstr "razvojni prsten"
-#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon/globalPlugins/brailleExtender/configBE.py:92
msgid "focus mode"
msgstr "Način fokusa"
-#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon/globalPlugins/brailleExtender/configBE.py:93
msgid "review mode"
msgstr "Način pregleda"
-#: addon/globalPlugins/brailleExtender/configBE.py:92
+#: addon/globalPlugins/brailleExtender/configBE.py:102
+msgid "Fill a cell in two stages on both sides"
+msgstr "Popunjavaj brajičnu ćeliju u dva koraka obostrano"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:103
+msgid "Fill a cell in two stages on one side (space = empty side)"
+msgstr ""
+"Popuni brajičnu ćeliju u dva koraka jednostrano (razmaknica je prazni dio "
+"ćelije)"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:104
+msgid ""
+"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
+"character)"
+msgstr ""
+"Ispunjavaj brajičnu ćeliju točku po točku (svaka točka je preklopnik, "
+"pritisnite razmaknicu za provjeru znaka)"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:131
msgid "last known"
msgstr "zadni poznati"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:29
+#: addon/globalPlugins/brailleExtender/dictionaries.py:30
msgid "Sign"
msgstr "znak"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:31
+#: addon/globalPlugins/brailleExtender/dictionaries.py:32
msgid "Math"
msgstr "matematički znak ili operand"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:33
+#: addon/globalPlugins/brailleExtender/dictionaries.py:34
msgid "Replace"
msgstr "zamjena"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:41
+#: addon/globalPlugins/brailleExtender/dictionaries.py:42
msgid "Both (input and output)"
msgstr "Ulaz i izlaz"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:42
+#: addon/globalPlugins/brailleExtender/dictionaries.py:43
msgid "Backward (input only)"
msgstr "Samo ulaz (upis sa tipkovnice)"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:43
+#: addon/globalPlugins/brailleExtender/dictionaries.py:44
msgid "Forward (output only)"
msgstr "samo izlaz (na brajični redak)"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:110
+#: addon/globalPlugins/brailleExtender/dictionaries.py:111
#, python-format
msgid ""
"One or more errors are present in dictionaries tables. Concerned "
@@ -1012,121 +1508,87 @@ msgstr ""
"Jedna ili više greški prisutne su u tablicama rječnika. Rječnici s "
"problemima: %s. Kao posljedica, ovi rječnici nisu učitani."
-#. Translators: The label for the combo box of dictionary entries in speech dictionary dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:131
-msgid "Dictionary &entries"
-msgstr "&Zapisi u rječniku"
-
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:134
+#: addon/globalPlugins/brailleExtender/dictionaries.py:135
msgid "Comment"
msgstr "Komentar"
#. Translators: The label for a column in dictionary entries list used to identify original character.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:136
+#: addon/globalPlugins/brailleExtender/dictionaries.py:137
msgid "Pattern"
msgstr "Uzorak"
#. Translators: The label for a column in dictionary entries list and in a list of symbols from symbol pronunciation dialog used to identify replacement for a pattern or a symbol
-#: addon/globalPlugins/brailleExtender/dictionaries.py:138
+#: addon/globalPlugins/brailleExtender/dictionaries.py:139
msgid "Representation"
msgstr "Prikaz"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:140
+#: addon/globalPlugins/brailleExtender/dictionaries.py:141
msgid "Opcode"
msgstr "Kod operanda"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:142
+#: addon/globalPlugins/brailleExtender/dictionaries.py:143
msgid "Direction"
msgstr "smjer"
-#. Translators: The label for a button in speech dictionaries dialog to add new entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:148
-msgid "&Add"
-msgstr "&Dodaj"
-
-#. Translators: The label for a button in speech dictionaries dialog to edit existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:154
-msgid "&Edit"
-msgstr "&Uredi"
-
-#. Translators: The label for a button in speech dictionaries dialog to remove existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:160
-msgid "Re&move"
-msgstr "&Ukloni"
-
-#. Translators: The label for a button in speech dictionaries dialog to open dictionary file in an editor.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:168
+#. Translators: The label for a button in table dictionaries dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/dictionaries.py:169
msgid "&Open the current dictionary file in an editor"
msgstr "&Otvori trenutnu datoteku rječnika u uređivaču teksta"
-#. Translators: The label for a button in speech dictionaries dialog to reload dictionary.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:173
-msgid "&Reload the dictionary"
-msgstr "&Ponovno učitaj rječnik"
-
-#: addon/globalPlugins/brailleExtender/dictionaries.py:216
-msgid "Add Dictionary Entry"
-msgstr "Dodaj unos u rječnik"
-
-#. Translators: This is the label for the edit dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:288
-msgid "Edit Dictionary Entry"
-msgstr "Uredi zapis u rječniku"
-
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:294
+#: addon/globalPlugins/brailleExtender/dictionaries.py:296
msgid "Dictionary"
msgstr "Rječnik"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Global"
msgstr "Globalan"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Table"
msgstr "tablica"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Temporary"
msgstr "Privremeni"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:302
+#: addon/globalPlugins/brailleExtender/dictionaries.py:304
msgid "See &entries"
msgstr "Vidi Zap&ise"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:307
+#: addon/globalPlugins/brailleExtender/dictionaries.py:309
msgid "&Text pattern/sign"
msgstr "&Uzorak teksta / znak"
#. Translators: This is a label for an edit field in add dictionary entry dialog and in punctuation/symbol pronunciation dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:312
+#: addon/globalPlugins/brailleExtender/dictionaries.py:314
msgid "&Braille representation"
msgstr "&Brajični prikaz"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:316
+#: addon/globalPlugins/brailleExtender/dictionaries.py:318
msgid "&Comment"
msgstr "&Komentar"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:320
+#: addon/globalPlugins/brailleExtender/dictionaries.py:322
msgid "&Opcode"
msgstr "&Operand"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:325
+#: addon/globalPlugins/brailleExtender/dictionaries.py:327
msgid "&Direction"
msgstr "&Smjer"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:366
+#: addon/globalPlugins/brailleExtender/dictionaries.py:368
msgid "Text pattern/sign field is empty."
msgstr "Polje uzorak teksta /znak je prazno."
-#: addon/globalPlugins/brailleExtender/dictionaries.py:373
+#: addon/globalPlugins/brailleExtender/dictionaries.py:375
#, python-format
msgid ""
"Invalid value for 'text pattern/sign' field. You must specify a character "
@@ -1135,7 +1597,7 @@ msgstr ""
"Neispravna vrijednost za polje 'uzorak teksta/znak'. S ovim operandom treba "
"odrediti znak. NPR: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:377
+#: addon/globalPlugins/brailleExtender/dictionaries.py:379
#, python-format
msgid ""
"'Braille representation' field is empty, you must specify something with "
@@ -1144,7 +1606,7 @@ msgstr ""
"polje 'brajični prikaz' je prazno, morate odrediti nešto s ovim operandom. "
"NPR: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:381
+#: addon/globalPlugins/brailleExtender/dictionaries.py:383
#, python-format
msgid ""
"Invalid value for 'braille representation' field. You must enter dot "
@@ -1153,192 +1615,209 @@ msgstr ""
"Neispravna vrijednost za polje 'brajični prikaz'. Morate upisati uzorak "
"točkica za ovaj operand. Na primjer: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:32
+#. Translators: Reported when translation didn't succeed due to unsupported input.
+#: addon/globalPlugins/brailleExtender/patchs.py:376
+msgid "Unsupported input"
+msgstr "Unos nije podržan"
+
+#: addon/globalPlugins/brailleExtender/patchs.py:435
+msgid "Unsupported input method"
+msgstr "Način unosa nije podržan"
+
+#: addon/globalPlugins/brailleExtender/settings.py:34
msgid "The feature implementation is in progress. Thanks for your patience."
msgstr "Implementacija funkcije je u tijeku. Hvala na razumijevanju.."
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:38
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:40
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "General"
msgstr "Općenito"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:45
+#: addon/globalPlugins/brailleExtender/settings.py:47
msgid "Check for &updates automatically"
msgstr "Provjeri automatski, postoji li nadogradnja"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:49
+#: addon/globalPlugins/brailleExtender/settings.py:51
msgid "Add-on update channel"
msgstr "Kanal nadogradnji dodatka"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:56
+#: addon/globalPlugins/brailleExtender/settings.py:58
msgid "Say current line while scrolling in"
msgstr "Izgovori trenutni redak pri prebacivanju između fragmenata teksta"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:60
+#: addon/globalPlugins/brailleExtender/settings.py:62
msgid "Speech interrupt when scrolling on same line"
msgstr ""
"Prekid govora pri premještanju između fragmenata teksta u jednom fizičkom "
"redku"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:64
+#: addon/globalPlugins/brailleExtender/settings.py:66
msgid "Speech interrupt for unknown gestures"
msgstr "Prekid govora za nepoznate geste"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:68
+#: addon/globalPlugins/brailleExtender/settings.py:70
msgid "Announce the character while moving with routing buttons"
msgstr "Izvještavaj o znakovima pri pritisku routing tipaka"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:72
+#: addon/globalPlugins/brailleExtender/settings.py:74
msgid "Use cursor keys to route cursor in review mode"
msgstr ""
"Koristite kursorske tipke kako biste prebacili kursor na znak u načinu "
"pregleda"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:76
+#: addon/globalPlugins/brailleExtender/settings.py:78
msgid "Display time and date infinitely"
msgstr "Beskonačno prikazuj vrijeme i datum"
-#: addon/globalPlugins/brailleExtender/settings.py:78
+#: addon/globalPlugins/brailleExtender/settings.py:80
msgid "Automatic review mode for apps with terminal"
msgstr "Automatski način pregleda za konzolne aplikacije"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:82
+#: addon/globalPlugins/brailleExtender/settings.py:84
msgid "Feedback for volume change in"
msgstr "povratna informacija za promjenu glasnoće uz pomoć"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:90
+#: addon/globalPlugins/brailleExtender/settings.py:92
msgid "Feedback for modifier keys in"
msgstr "Povratna informacija za modifikatorske tipke uz pomoć"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:96
+#: addon/globalPlugins/brailleExtender/settings.py:98
msgid "Play beeps for modifier keys"
msgstr "Reproduciraj zvučne signale pri pritisku modifikacijskih tipki"
-#: addon/globalPlugins/brailleExtender/settings.py:101
+#: addon/globalPlugins/brailleExtender/settings.py:103
msgid "Right margin on cells"
msgstr "desna margina na ćelijama"
-#: addon/globalPlugins/brailleExtender/settings.py:101
-#: addon/globalPlugins/brailleExtender/settings.py:113
-#: addon/globalPlugins/brailleExtender/settings.py:356
+#: addon/globalPlugins/brailleExtender/settings.py:103
+#: addon/globalPlugins/brailleExtender/settings.py:115
+#: addon/globalPlugins/brailleExtender/settings.py:366
msgid "for the currrent braille display"
msgstr "za trenutni brajični redak"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:105
+#: addon/globalPlugins/brailleExtender/settings.py:107
msgid "Braille keyboard configuration"
msgstr "Konfiguracija brajične tipkovnice"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:109
+#: addon/globalPlugins/brailleExtender/settings.py:111
msgid "Reverse forward scroll and back scroll buttons"
msgstr "zamjeni mjesta tipkama za čitanje napred /nazad"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:113
+#: addon/globalPlugins/brailleExtender/settings.py:115
msgid "Autoscroll delay (ms)"
msgstr "Automatsko čitanje u milisekundama"
-#: addon/globalPlugins/brailleExtender/settings.py:114
+#: addon/globalPlugins/brailleExtender/settings.py:116
msgid "First braille display preferred"
msgstr "prvi preferirani brajični redak"
-#: addon/globalPlugins/brailleExtender/settings.py:116
+#: addon/globalPlugins/brailleExtender/settings.py:118
msgid "Second braille display preferred"
msgstr "Drugi preferirani brajični redak"
+#: addon/globalPlugins/brailleExtender/settings.py:120
+msgid "One-handed mode"
+msgstr "Način jedne ruke"
+
+#: addon/globalPlugins/brailleExtender/settings.py:124
+msgid "One hand mode method"
+msgstr "Metoda unosa načinom jedne ruke"
+
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:149
+#: addon/globalPlugins/brailleExtender/settings.py:159
msgid "Text attributes"
msgstr "atributi teksta"
-#: addon/globalPlugins/brailleExtender/settings.py:153
-#: addon/globalPlugins/brailleExtender/settings.py:200
+#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon/globalPlugins/brailleExtender/settings.py:210
msgid "Enable this feature"
msgstr "Uključi ovu značajku"
-#: addon/globalPlugins/brailleExtender/settings.py:155
+#: addon/globalPlugins/brailleExtender/settings.py:165
msgid "Show spelling errors with"
msgstr "Pokazuj pravopisne pogreške uz pomoć točkica"
-#: addon/globalPlugins/brailleExtender/settings.py:157
+#: addon/globalPlugins/brailleExtender/settings.py:167
msgid "Show bold with"
msgstr "Pokazuj podebljana slova uz pomoć točkica"
-#: addon/globalPlugins/brailleExtender/settings.py:159
+#: addon/globalPlugins/brailleExtender/settings.py:169
msgid "Show italic with"
msgstr "Pokazuj kosa slova uz pomoć točkica"
-#: addon/globalPlugins/brailleExtender/settings.py:161
+#: addon/globalPlugins/brailleExtender/settings.py:171
msgid "Show underline with"
msgstr "Pokazuj podcrtavanje uz pomoć točkica"
-#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon/globalPlugins/brailleExtender/settings.py:173
msgid "Show strikethrough with"
msgstr "Pokazuj podcrtavanje uz pomoć točkica"
-#: addon/globalPlugins/brailleExtender/settings.py:165
+#: addon/globalPlugins/brailleExtender/settings.py:175
msgid "Show subscript with"
msgstr "Pokazuj spuštena slova uz pomoć točkica"
-#: addon/globalPlugins/brailleExtender/settings.py:167
+#: addon/globalPlugins/brailleExtender/settings.py:177
msgid "Show superscript with"
msgstr "Pokazuj indeks uz pomoć"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:193
+#: addon/globalPlugins/brailleExtender/settings.py:203
msgid "Role labels"
msgstr "Oznake kontrola"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Role category"
msgstr "kategorija oznaki"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Landmark"
msgstr "Orjentir"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Positive state"
msgstr "Pozitivna vrijednost"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Negative state"
msgstr "Negativna vrijednost"
-#: addon/globalPlugins/brailleExtender/settings.py:206
+#: addon/globalPlugins/brailleExtender/settings.py:216
msgid "Role"
msgstr "tip"
-#: addon/globalPlugins/brailleExtender/settings.py:208
+#: addon/globalPlugins/brailleExtender/settings.py:218
msgid "Actual or new label"
msgstr "trenutna ili nova oznaka"
-#: addon/globalPlugins/brailleExtender/settings.py:212
+#: addon/globalPlugins/brailleExtender/settings.py:222
msgid "&Reset this role label"
msgstr "&Resetiraj ovu oznaku kontrole"
-#: addon/globalPlugins/brailleExtender/settings.py:214
+#: addon/globalPlugins/brailleExtender/settings.py:224
msgid "Reset all role labels"
msgstr "resetiraj sve oznake kontrola"
-#: addon/globalPlugins/brailleExtender/settings.py:279
+#: addon/globalPlugins/brailleExtender/settings.py:289
msgid "You have no customized label."
msgstr "Nemaš prilagođenih oznaka."
-#: addon/globalPlugins/brailleExtender/settings.py:282
+#: addon/globalPlugins/brailleExtender/settings.py:292
#, python-format
msgid ""
"Do you want really reset all labels? Currently, you have %d customized "
@@ -1346,101 +1825,94 @@ msgid ""
msgstr ""
"Želiš li zaista resetirati sve oznake? Trenutno imaš %d prilagođenih oznaka."
-#: addon/globalPlugins/brailleExtender/settings.py:283
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon/globalPlugins/brailleExtender/settings.py:293
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Confirmation"
msgstr "Potvrda"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:325
+#: addon/globalPlugins/brailleExtender/settings.py:335
msgid "Braille tables"
msgstr "brajične tablice"
-#: addon/globalPlugins/brailleExtender/settings.py:330
+#: addon/globalPlugins/brailleExtender/settings.py:340
msgid "Use the current input table"
msgstr "Koristi trenutnu ulaznu tablicu"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "Prefered braille tables"
msgstr "Preferirane brajične tablice"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "press F1 for help"
msgstr "pritisnite F1 za pomoć"
-#: addon/globalPlugins/brailleExtender/settings.py:343
+#: addon/globalPlugins/brailleExtender/settings.py:353
msgid "Input braille table for keyboard shortcut keys"
msgstr "Ulazna brajična tablica za tipkovničke prečace na tipkovnici"
-#: addon/globalPlugins/brailleExtender/settings.py:345
+#: addon/globalPlugins/brailleExtender/settings.py:355
msgid "None"
msgstr "Ništa"
-#: addon/globalPlugins/brailleExtender/settings.py:348
+#: addon/globalPlugins/brailleExtender/settings.py:358
msgid "Secondary output table to use"
msgstr "Sekundarna brajična tablica koja će se koristiti"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:352
-msgid "Display tab signs as spaces"
-msgstr "prilayuj ynakove tabulacije kao raymake"
+#: addon/globalPlugins/brailleExtender/settings.py:362
+msgid "Display &tab signs as spaces"
+msgstr "Prikazuj &tabulatore kao razmake"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:356
-msgid "Number of space for a tab sign"
-msgstr "Broj raymaka ya jedan ynak tab"
+#: addon/globalPlugins/brailleExtender/settings.py:366
+msgid "Number of &space for a tab sign"
+msgstr "Broj &razmaka za jedan znak tabulatora"
-#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:358
-msgid "Prevent undefined characters with Hexadecimal Unicode value"
-msgstr ""
-"Onemogućavanje prikazivanja heksadecimalnih vrijednosti pri nedefiniranim "
-"znakovima"
+#: addon/globalPlugins/brailleExtender/settings.py:367
+msgid "Alternative and &custom braille tables"
+msgstr "Alternativne i &prilagođene brajične tablice"
-#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:361
+#: addon/globalPlugins/brailleExtender/settings.py:387
msgid ""
-"Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+"NVDA must be restarted for some new options to take effect. Do you want "
+"restart now?"
msgstr ""
-"Prikaži nedefinirane znakove kao NPR: 0 kao prazna ćelija, 12345678, "
-"6-123456)"
-
-#: addon/globalPlugins/brailleExtender/settings.py:363
-msgid "Alternative and &custom braille tables"
-msgstr "Alternativne i &prilagođene brajične tablice"
+"NVDA mora ponovno biti pokrenut kako bi neke nove opcije stupile na snagu. "
+"Želite li sada ponovno pokrenuti?"
-#: addon/globalPlugins/brailleExtender/settings.py:420
+#: addon/globalPlugins/brailleExtender/settings.py:425
msgid "input and output"
msgstr "ulaz i izlaz"
-#: addon/globalPlugins/brailleExtender/settings.py:422
+#: addon/globalPlugins/brailleExtender/settings.py:427
msgid "input only"
msgstr "Samo ulaz"
-#: addon/globalPlugins/brailleExtender/settings.py:423
+#: addon/globalPlugins/brailleExtender/settings.py:428
msgid "output only"
msgstr "samo izlaz"
-#: addon/globalPlugins/brailleExtender/settings.py:454
+#: addon/globalPlugins/brailleExtender/settings.py:459
#, python-format
msgid "Table name: %s"
msgstr "Naziv tablice: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:455
+#: addon/globalPlugins/brailleExtender/settings.py:460
#, python-format
msgid "File name: %s"
msgstr "naziv datoteke: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:456
+#: addon/globalPlugins/brailleExtender/settings.py:461
#, python-format
msgid "In switches: %s"
msgstr "u rotorima: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:457
+#: addon/globalPlugins/brailleExtender/settings.py:462
msgid "About this table"
msgstr "O tablici"
-#: addon/globalPlugins/brailleExtender/settings.py:460
+#: addon/globalPlugins/brailleExtender/settings.py:465
msgid ""
"In this combo box, all tables are present. Press space bar, left or right "
"arrow keys to include (or not) the selected table in switches"
@@ -1449,7 +1921,7 @@ msgstr ""
"lijevu ili desnu strelicu kako biste dodali ili uklonili brajične tablice iz "
"rotora"
-#: addon/globalPlugins/brailleExtender/settings.py:461
+#: addon/globalPlugins/brailleExtender/settings.py:466
msgid ""
"You can also press 'comma' key to get the file name of the selected table "
"and 'semicolon' key to view miscellaneous infos on the selected table"
@@ -1458,125 +1930,125 @@ msgstr ""
"datoteke brajične tablice i 'točka zarez' kako biste dobili više dodatnih "
"informacija o brajičnoj tablici"
-#: addon/globalPlugins/brailleExtender/settings.py:462
+#: addon/globalPlugins/brailleExtender/settings.py:467
msgid "Contextual help"
msgstr "kontekstna pomoć"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:478
+#: addon/globalPlugins/brailleExtender/settings.py:483
msgid "Custom braille tables"
msgstr "Prilagođene brajične tablice"
-#: addon/globalPlugins/brailleExtender/settings.py:488
+#: addon/globalPlugins/brailleExtender/settings.py:493
msgid "Use a custom table as input table"
msgstr "Koristi prilagođenu brajičnu tablicu kao ulaznu"
-#: addon/globalPlugins/brailleExtender/settings.py:489
+#: addon/globalPlugins/brailleExtender/settings.py:494
msgid "Use a custom table as output table"
msgstr "Koristi prilagođenu brajičnu tablicu kao izlaznu tablicu"
-#: addon/globalPlugins/brailleExtender/settings.py:490
+#: addon/globalPlugins/brailleExtender/settings.py:495
msgid "&Add a braille table"
msgstr "&Dodaj brajičnu tablicu"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:514
+#: addon/globalPlugins/brailleExtender/settings.py:519
msgid "Add a braille table"
msgstr "Dodaj brajičnu tablicu"
-#: addon/globalPlugins/brailleExtender/settings.py:520
+#: addon/globalPlugins/brailleExtender/settings.py:525
msgid "Display name"
msgstr "Prikazno ime"
-#: addon/globalPlugins/brailleExtender/settings.py:521
+#: addon/globalPlugins/brailleExtender/settings.py:526
msgid "Description"
msgstr "Opis"
-#: addon/globalPlugins/brailleExtender/settings.py:522
+#: addon/globalPlugins/brailleExtender/settings.py:527
msgid "Path"
msgstr "Odredište"
-#: addon/globalPlugins/brailleExtender/settings.py:523
-#: addon/globalPlugins/brailleExtender/settings.py:594
+#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:599
msgid "&Browse"
msgstr "&Pregledaj"
-#: addon/globalPlugins/brailleExtender/settings.py:526
+#: addon/globalPlugins/brailleExtender/settings.py:531
msgid "Contracted (grade 2) braille table"
msgstr "Kratkopisna brajična tablica"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Available for"
msgstr "Dostupno za"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input and output"
msgstr "Ulaz i izlaz"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input only"
msgstr "Samo ulaz"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Output only"
msgstr "Samo zilaz"
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Choose a table file"
msgstr "Odaberite datoteku tablice"
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Liblouis table files"
msgstr "datoteke liblouis tablica"
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Please specify a display name."
msgstr "Molimo odredite ime prikaza."
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Invalid display name"
msgstr "Nepravilno ime prikaza"
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon/globalPlugins/brailleExtender/settings.py:555
#, python-format
msgid "The specified path is not valid (%s)."
msgstr "Odredište koje ste odredili je nepravilno (%s)."
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon/globalPlugins/brailleExtender/settings.py:555
msgid "Invalid path"
msgstr "Nepravilno odredište"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:578
+#: addon/globalPlugins/brailleExtender/settings.py:583
msgid "Quick launches"
msgstr "Brza pokretanja"
-#: addon/globalPlugins/brailleExtender/settings.py:589
+#: addon/globalPlugins/brailleExtender/settings.py:594
msgid "&Gestures"
msgstr "&geste"
-#: addon/globalPlugins/brailleExtender/settings.py:592
+#: addon/globalPlugins/brailleExtender/settings.py:597
msgid "Location (file path, URL or command)"
msgstr "Lokacija (Put do datoteke, URL ili komanda)"
-#: addon/globalPlugins/brailleExtender/settings.py:595
+#: addon/globalPlugins/brailleExtender/settings.py:600
msgid "&Remove this gesture"
msgstr "&Izbriši ovu gestu"
-#: addon/globalPlugins/brailleExtender/settings.py:596
+#: addon/globalPlugins/brailleExtender/settings.py:601
msgid "&Add a quick launch"
msgstr "&Dodaj brzo pokretanje"
-#: addon/globalPlugins/brailleExtender/settings.py:625
+#: addon/globalPlugins/brailleExtender/settings.py:630
msgid "Unable to associate this gesture. Please enter another, now"
msgstr "Ne mogu pridjeliti tu gestu. Upišite drugu, sada"
-#: addon/globalPlugins/brailleExtender/settings.py:630
+#: addon/globalPlugins/brailleExtender/settings.py:635
msgid "Out of capture"
msgstr "Izvan dosega"
-#: addon/globalPlugins/brailleExtender/settings.py:632
+#: addon/globalPlugins/brailleExtender/settings.py:637
#, python-brace-format
msgid ""
"Please enter a gesture from your {NAME_BRAILLE_DISPLAY} braille display. "
@@ -1585,21 +2057,21 @@ msgstr ""
"Unesite gestu s brajičnog retka {NAME_BRAILLE_DISPLAY}. Kabo biste odustali, "
"pritisnite razmaknicu."
-#: addon/globalPlugins/brailleExtender/settings.py:640
+#: addon/globalPlugins/brailleExtender/settings.py:645
#, python-format
msgid "OK. The gesture captured is %s"
msgstr "U redu. Primljena gesta je %s"
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Are you sure to want to delete this shorcut?"
msgstr "Jeste li sugurni da želite ukloniti ovaj prečac?"
-#: addon/globalPlugins/brailleExtender/settings.py:666
+#: addon/globalPlugins/brailleExtender/settings.py:671
#, python-brace-format
msgid "{BRAILLEGESTURE} removed"
msgstr "{BRAILLEGESTURE} uklonjeno"
-#: addon/globalPlugins/brailleExtender/settings.py:677
+#: addon/globalPlugins/brailleExtender/settings.py:682
msgid ""
"Please enter the desired gesture for the new quick launch. Press \"space bar"
"\" to cancel"
@@ -1607,106 +2079,153 @@ msgstr ""
"Molimo pritisnite željenu kombinaciju tipaka za brzo pokretanje. Pritisnite "
"\"razmaknicu\" kako biste odustali"
-#: addon/globalPlugins/brailleExtender/settings.py:680
+#: addon/globalPlugins/brailleExtender/settings.py:685
msgid "Don't add a quick launch"
msgstr "Ne dodavaj brzo pokretanje"
-#: addon/globalPlugins/brailleExtender/settings.py:706
+#: addon/globalPlugins/brailleExtender/settings.py:711
#, python-brace-format
msgid "Choose a file for {0}"
msgstr "Odaberite datoteku za {0}"
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Please create or select a quick launch first"
msgstr "Najprije označite ili stvorite brzo pokretanje."
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Error"
msgstr "greška"
-#: addon/globalPlugins/brailleExtender/settings.py:723
+#: addon/globalPlugins/brailleExtender/settings.py:728
msgid "Profiles editor"
msgstr "Uređivač profila"
-#: addon/globalPlugins/brailleExtender/settings.py:734
+#: addon/globalPlugins/brailleExtender/settings.py:739
msgid "You must have a braille display to editing a profile"
msgstr "Trebate posjedovati brajični redak, kako bise mogli uređivati profile"
-#: addon/globalPlugins/brailleExtender/settings.py:738
+#: addon/globalPlugins/brailleExtender/settings.py:743
msgid ""
"Profiles directory is not present or accessible. Unable to edit profiles"
msgstr ""
"Mapa profiles je nedostupna ili ne postoji. Nemoguće uređivati profile."
-#: addon/globalPlugins/brailleExtender/settings.py:744
+#: addon/globalPlugins/brailleExtender/settings.py:749
msgid "Profile to edit"
msgstr "Profil za uređivanje"
-#: addon/globalPlugins/brailleExtender/settings.py:750
+#: addon/globalPlugins/brailleExtender/settings.py:755
msgid "Gestures category"
msgstr "Kategorija gesti"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Single keys"
msgstr "Pojedinačne tipke"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Practical shortcuts"
msgstr "Praktični prečaci"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "NVDA commands"
msgstr "NVDA komande"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Addon features"
msgstr "Funkcije dodatka"
-#: addon/globalPlugins/brailleExtender/settings.py:755
+#: addon/globalPlugins/brailleExtender/settings.py:760
msgid "Gestures list"
msgstr "Popis gesti"
-#: addon/globalPlugins/brailleExtender/settings.py:764
+#: addon/globalPlugins/brailleExtender/settings.py:769
msgid "Add gesture"
msgstr "Dodaj gestu"
-#: addon/globalPlugins/brailleExtender/settings.py:766
+#: addon/globalPlugins/brailleExtender/settings.py:771
msgid "Remove this gesture"
msgstr "Ukloni ovaj prečac"
-#: addon/globalPlugins/brailleExtender/settings.py:769
+#: addon/globalPlugins/brailleExtender/settings.py:774
msgid "Assign a braille gesture"
msgstr "Dodijeli gestu"
-#: addon/globalPlugins/brailleExtender/settings.py:776
+#: addon/globalPlugins/brailleExtender/settings.py:781
msgid "Remove this profile"
msgstr "Izbriši ovaj profil"
-#: addon/globalPlugins/brailleExtender/settings.py:779
+#: addon/globalPlugins/brailleExtender/settings.py:784
msgid "Add a profile"
msgstr "Dodaj prvilo"
-#: addon/globalPlugins/brailleExtender/settings.py:785
+#: addon/globalPlugins/brailleExtender/settings.py:790
msgid "Name for the new profile"
msgstr "Naziv novog profila"
-#: addon/globalPlugins/brailleExtender/settings.py:791
+#: addon/globalPlugins/brailleExtender/settings.py:796
msgid "Create"
msgstr "Stvori"
-#: addon/globalPlugins/brailleExtender/settings.py:854
+#: addon/globalPlugins/brailleExtender/settings.py:859
msgid "Unable to load this profile. Malformed or inaccessible file"
msgstr "Ne mogu učitati ovaj profil. Izobličena ili nedostupna datoteka"
-#: addon/globalPlugins/brailleExtender/settings.py:873
+#: addon/globalPlugins/brailleExtender/settings.py:878
msgid "Undefined"
msgstr "Nedefinirano"
#. Translators: title of add-on parameters dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:902
+#: addon/globalPlugins/brailleExtender/settings.py:909
msgid "Settings"
msgstr "Postavke"
+#. Translators: label of a dialog.
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:244
+msgid "Representation &method"
+msgstr "Način prikaza"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:252
+#, python-brace-format
+msgid "Other dot pattern (e.g.: {dotPatternSample})"
+msgstr "Druga brajična kombinacija (e.g.: {dotPatternSample})"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:254
+#, python-brace-format
+msgid "Other sign/pattern (e.g.: {signPatternSample})"
+msgstr "Drugi znak (Npr: {signPatternSample})"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:272
+msgid "Specify another pattern"
+msgstr "Odredi drugu kombinaciju"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:276
+msgid "Describe undefined characters if possible"
+msgstr "Opisuj nedefinirane znakove ako je to moguće"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:284
+msgid "Also describe extended characters (e.g.: country flags)"
+msgstr "Također opisuj druge znakove (npr: zastave država)"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:291
+msgid "Start tag"
+msgstr "Početni tag"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:296
+msgid "End tag"
+msgstr "Završni tag"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:307
+msgid "Language"
+msgstr "Jezik"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:310
+msgid "Use the current output table"
+msgstr "Koristi trenutnu izlaznu brajičnu tablicu"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:323
+msgid "Braille table"
+msgstr "Brajična tablica"
+
#: addon/globalPlugins/brailleExtender/updateCheck.py:61
#, python-format
msgid "New version available, version %s. Do you want to download it now?"
@@ -1737,69 +2256,69 @@ msgstr "Dijaloški okvir za provjeru nadogradnje već je pokrenut!"
msgid "{addonName}'s update"
msgstr "Nadogradnja {addonName}-a"
-#: addon/globalPlugins/brailleExtender/utils.py:189
+#: addon/globalPlugins/brailleExtender/utils.py:194
msgid "Reload successful"
msgstr "Ponovno učitavanje uspješno"
-#: addon/globalPlugins/brailleExtender/utils.py:192
+#: addon/globalPlugins/brailleExtender/utils.py:197
msgid "Reload failed"
msgstr "ponovno učitavanje neuspješno"
-#: addon/globalPlugins/brailleExtender/utils.py:197
-#: addon/globalPlugins/brailleExtender/utils.py:207
+#: addon/globalPlugins/brailleExtender/utils.py:203
+#: addon/globalPlugins/brailleExtender/utils.py:218
msgid "Not a character"
msgstr "Nije znak"
-#: addon/globalPlugins/brailleExtender/utils.py:201
-msgid "unknown"
-msgstr "Nepoznato"
+#: addon/globalPlugins/brailleExtender/utils.py:208
+msgid "N/A"
+msgstr "Nije dostupno"
-#: addon/globalPlugins/brailleExtender/utils.py:330
+#: addon/globalPlugins/brailleExtender/utils.py:312
msgid "Available combinations"
msgstr "Dostupne kombinacije"
-#: addon/globalPlugins/brailleExtender/utils.py:332
+#: addon/globalPlugins/brailleExtender/utils.py:314
msgid "One combination available"
msgstr "Jedna kombinacija dostupna"
-#: addon/globalPlugins/brailleExtender/utils.py:349
+#: addon/globalPlugins/brailleExtender/utils.py:325
msgid "space"
msgstr "razmak"
-#: addon/globalPlugins/brailleExtender/utils.py:350
+#: addon/globalPlugins/brailleExtender/utils.py:326
msgid "left SHIFT"
msgstr "Lijevi SHIFT"
-#: addon/globalPlugins/brailleExtender/utils.py:351
+#: addon/globalPlugins/brailleExtender/utils.py:327
msgid "right SHIFT"
msgstr "desni SHIFT"
-#: addon/globalPlugins/brailleExtender/utils.py:352
+#: addon/globalPlugins/brailleExtender/utils.py:328
msgid "left selector"
msgstr "Lijevi odabirnik"
-#: addon/globalPlugins/brailleExtender/utils.py:353
+#: addon/globalPlugins/brailleExtender/utils.py:329
msgid "right selector"
msgstr "Desni odabirnik"
-#: addon/globalPlugins/brailleExtender/utils.py:354
+#: addon/globalPlugins/brailleExtender/utils.py:330
msgid "dot"
msgstr "točkica"
-#: addon/globalPlugins/brailleExtender/utils.py:369
+#: addon/globalPlugins/brailleExtender/utils.py:345
#, python-brace-format
msgid "{gesture} on {brailleDisplay}"
msgstr "{gesture} na {brailleDisplay}"
-#: addon/globalPlugins/brailleExtender/utils.py:446
+#: addon/globalPlugins/brailleExtender/utils.py:422
msgid "No text"
msgstr "Nema teksta"
-#: addon/globalPlugins/brailleExtender/utils.py:455
+#: addon/globalPlugins/brailleExtender/utils.py:431
msgid "Not text"
msgstr "Nije tekst"
-#: addon/globalPlugins/brailleExtender/utils.py:475
+#: addon/globalPlugins/brailleExtender/utils.py:451
msgid "No text selected"
msgstr "Nema označenog teksta"
@@ -1913,6 +2432,29 @@ msgstr ""
msgid "actions and quick navigation through a rotor"
msgstr "Brzo kretanje i navigacija putem rotora"
+#~ msgid "Braille &dictionaries"
+#~ msgstr "Brajični &Rječnici"
+
+#~ msgid "%s braille display"
+#~ msgstr "%s brajični redak"
+
+#~ msgid "profile loaded: %s"
+#~ msgstr "Profil je učitan: %s"
+
+#~ msgid "Prevent undefined characters with Hexadecimal Unicode value"
+#~ msgstr ""
+#~ "Onemogućavanje prikazivanja heksadecimalnih vrijednosti pri nedefiniranim "
+#~ "znakovima"
+
+#~ msgid ""
+#~ "Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+#~ msgstr ""
+#~ "Prikaži nedefinirane znakove kao NPR: 0 kao prazna ćelija, 12345678, "
+#~ "6-123456)"
+
+#~ msgid "unknown"
+#~ msgstr "Nepoznato"
+
#~ msgid ""
#~ "In virtual documents (HTML/PDF/…) you can navigate element type by "
#~ "element type using keyboard. These navigation keys should work with your "
@@ -1946,9 +2488,6 @@ msgstr "Brzo kretanje i navigacija putem rotora"
#~ msgid "Braille tables configuration"
#~ msgstr "Konfiguracija brajičnih tablica"
-#~ msgid "Text attributes configuration"
-#~ msgstr "Konfiguracija prikazivanja brajičnog formatiranja teksta"
-
#~ msgid "Role &labels"
#~ msgstr "&Oznake kontrola"
@@ -1995,9 +2534,6 @@ msgstr "Brzo kretanje i navigacija putem rotora"
#~ msgid "Enable Attribra"
#~ msgstr "Omogući Attribru"
-#~ msgid "braille tables"
-#~ msgstr "Brajične tablice"
-
#~ msgid "Unable to save or download update file. Opening your browser"
#~ msgstr ""
#~ "Nije moguče otvoriti ili spremiti datoteku. Otvaram vaš internetski "
@@ -2246,9 +2782,6 @@ msgstr "Brzo kretanje i navigacija putem rotora"
#~ msgid "Category"
#~ msgstr "Kategorija"
-#~ msgid "Profile"
-#~ msgstr "Profil"
-
#~ msgid "Bold"
#~ msgstr "podebljanje"
@@ -2297,9 +2830,6 @@ msgstr "Brzo kretanje i navigacija putem rotora"
#~ msgid "Feature Not Implemented Yet"
#~ msgstr "Značajka još uvijek nije implementirana"
-#~ msgid "Advanced rules"
-#~ msgstr "Napredna pravila"
-
#~ msgid "&Edit this rule"
#~ msgstr "&Uredi ovo pravilo"
From 529c97412121511a66cfe31336dde0c0dcfa0fbf Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Wed, 15 Apr 2020 16:39:40 +0200
Subject: [PATCH 62/87] croatian ranslation is completed.
---
addon/locale/hr/LC_MESSAGES/nvda.po | 74 +++++++++++++++++++++--------
1 file changed, 55 insertions(+), 19 deletions(-)
diff --git a/addon/locale/hr/LC_MESSAGES/nvda.po b/addon/locale/hr/LC_MESSAGES/nvda.po
index 95c84702..f9b2e79e 100644
--- a/addon/locale/hr/LC_MESSAGES/nvda.po
+++ b/addon/locale/hr/LC_MESSAGES/nvda.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
"POT-Creation-Date: 2020-04-15 09:24+0200\n"
-"PO-Revision-Date: 2020-04-15 12:18+0100\n"
+"PO-Revision-Date: 2020-04-15 16:39+0100\n"
"Last-Translator: zvonimir stanecic \n"
"Language-Team: \n"
"Language: hr\n"
@@ -958,35 +958,42 @@ msgid ""
"Alternatively, an option allows you to automatically exit this mode after "
"entering a single pattern. "
msgstr ""
+"Ova vam opcija omogućuje unos bilo kojeg znaka koristeći njegov HUC8 izgled "
+"ili njegovu heksadecimalnu/decimalnu/oktalnu/binarnu vrijednost. Čak "
+"štoviše, omogućuje vam razvoj skraćenica. Kako biste mogli koristiti ovu "
+"funkciju, uključite ga i upišite znak. Podrazumjevane prečice: NVDA+Windows"
+"+i ili ⡊+razmaknica (na podržanim brajičnim retcima). Pritisnite isti prečac "
+"za izlaz. Alternativno, opcija vam dozvoljava isključivanje ovog načina "
+"poslije upisanog samo jednog znaka. "
#: addon/globalPlugins/brailleExtender/addonDoc.py:80
msgid "Specify the basis as follows"
-msgstr ""
+msgstr "Odredite brojevnu bazu vrijednosti kako slijedi"
#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "⠭ or ⠓"
-msgstr ""
+msgstr "⠭ ili ⠓"
#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "for a hexadecimal value"
-msgstr ""
+msgstr "za heksadecimalnu vrijednost"
#: addon/globalPlugins/brailleExtender/addonDoc.py:83
msgid "for a decimal value"
-msgstr ""
+msgstr "za decimalnu vrijednost"
#: addon/globalPlugins/brailleExtender/addonDoc.py:84
msgid "for an octal value"
-msgstr ""
+msgstr "Za oktalnu vrijednost"
#: addon/globalPlugins/brailleExtender/addonDoc.py:87
msgid ""
"Enter the value of the character according to the previously selected basis."
-msgstr ""
+msgstr "Upišite znak u skladu sa odabranom brojevnom bazom."
#: addon/globalPlugins/brailleExtender/addonDoc.py:88
msgid "Press Space to validate."
-msgstr ""
+msgstr "Pritisnite razmaknicu za provjeru."
#: addon/globalPlugins/brailleExtender/addonDoc.py:91
msgid ""
@@ -994,18 +1001,21 @@ msgid ""
"dictionaries -. Then, you just have to enter your abbreviation and press "
"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
msgstr ""
+"za skraćenice, prvo ih morate dodati u dijaloški okvir - rječnici naprednog "
+"načina unosa -. Poslije toga trebate upisati vašu kraticu i pritisnuti enter "
+"za raširivanje. na primjer, možete pridružiti — ⠎⠺ — sa — sendvič —."
#: addon/globalPlugins/brailleExtender/addonDoc.py:93
msgid "Here are some examples of sequences to be entered for given characters:"
-msgstr ""
+msgstr "Ovdje su primjeri za upis znakova pri korištenju raznih kombinacija:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:97
msgid "Note: the HUC6 input is currently not supported."
-msgstr ""
+msgstr "Napomena: HUC6 unos nije podržan."
#: addon/globalPlugins/brailleExtender/addonDoc.py:100
msgid "One-hand mode"
-msgstr ""
+msgstr "Način upisa jednom rukom"
#: addon/globalPlugins/brailleExtender/addonDoc.py:102
msgid ""
@@ -1014,10 +1024,14 @@ msgid ""
"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
"Three input methods are available."
msgstr ""
+"Ova vam funkcija omogućuje upis znakova u nekoliko koraka. Opa opcija može "
+"biti aktivirana u općim postavkama dodatka ili s pomoću podrazumjevanog "
+"prečaca NVDA+Windows+h (⡂+razmaknica na podržanim brajičnim retcima). Tri "
+"metode unosa su dostupne."
#: addon/globalPlugins/brailleExtender/addonDoc.py:103
msgid "Method #1: fill a cell in 2 stages on both sides"
-msgstr ""
+msgstr "Metoda #1: popuni ćeliju u dva koraka obostrano"
#: addon/globalPlugins/brailleExtender/addonDoc.py:105
msgid ""
@@ -1025,27 +1039,34 @@ msgid ""
"side is empty, type the dots correspondig to the opposite side twice, or "
"type the dots corresponding to the non-empty side in 2 steps."
msgstr ""
+"Uz pomoć ove metode, upisujte točke lijeve strane, a potom desne strane. Akj "
+"je jedna strana prazna, upisujte točke koje odgovaraju točkama suprotne "
+"strane dvaput, ili upisujte točke koje odgovaraju strani koja nije prazna u "
+"dva koraka."
#: addon/globalPlugins/brailleExtender/addonDoc.py:106
#: addon/globalPlugins/brailleExtender/addonDoc.py:115
msgid "For example:"
-msgstr ""
+msgstr "Na primjer:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:108
msgid "For ⠛: press dots 1-2 then dots 4-5."
-msgstr ""
+msgstr "za ⠛: pritisnite točkice 1-2 a potom točkice 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:109
msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
msgstr ""
+"za ⠃: upišite točkice 1-2 a potom točkice 1-2, ili točku 1 a potom točku 2."
#: addon/globalPlugins/brailleExtender/addonDoc.py:110
msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
-msgstr ""
+msgstr "Za ⠘: upišite 4-5 a potom 4-5, ili točku 4 a potom točku 5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:112
msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
msgstr ""
+"Metoda#2: ispuni ćeliju u dva koraka jednostrano (razmaknica označava praznu "
+"stranu)"
#: addon/globalPlugins/brailleExtender/addonDoc.py:114
msgid ""
@@ -1054,48 +1075,63 @@ msgid ""
"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
"An empty cell will be obtained by pressing the space key twice."
msgstr ""
+"Koristeći ovu metodu, Možete upisivati jednom rukom neovisno o tome koji dio "
+"brajične tipkovnice poželite koristiti. Prvi vam korak omogućuje unos "
+"točkica 1-2-3-7 a drugi 4-5-6-8. Ako je jedna strana prazna, Pritisnite "
+"razmaknicu. Praznu ćete ćeliju dobiti pritišćući razmaknicu dvaput."
#: addon/globalPlugins/brailleExtender/addonDoc.py:117
msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
msgstr ""
+"Za ⠛: pritisnite točkice 1-2 potom točkice 1-2, ili točkice 4-5 a potomdots "
+"4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:118
msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
msgstr ""
+"Za ⠃: Pritisnite točkice 1-2 a potom razmaknicu, ili 4-5 a potom space."
#: addon/globalPlugins/brailleExtender/addonDoc.py:119
msgid "For ⠘: press space then 1-2, or space then dots 4-5."
msgstr ""
+"Za ⠘: pritisnite razmaknicu a potom 1-2, ili pritisnite razmaknicu a potom "
+"točkice 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:121
msgid ""
"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
"validate the character)"
msgstr ""
+"Metoda #3: ispunite ćeliju točku po točku (svaka točkica je preklopnik, "
+"pritisnite razmaknicu za provjeru znaka)"
#: addon/globalPlugins/brailleExtender/addonDoc.py:126
msgid "Dots 1-2, then dots 4-5, then space."
-msgstr ""
+msgstr "točkice 1-2, potom točkice 4-5, a potom razmaknica."
#: addon/globalPlugins/brailleExtender/addonDoc.py:127
msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
msgstr ""
+"Točkice 1-2-3, potom točkica 3 (za ispravak), a potom točkice 4-5, a potom "
+"razmaknicu."
#: addon/globalPlugins/brailleExtender/addonDoc.py:128
msgid "Dot 1, then dots 2-4-5, then space."
-msgstr ""
+msgstr "točkica 1, potom točkice 2-4-5, a potom razmaknica."
#: addon/globalPlugins/brailleExtender/addonDoc.py:129
msgid "Dots 1-2-4, then dot 5, then space."
-msgstr ""
+msgstr "točkice 1-2-4, potom točkica 5, a potom razmaknica."
#: addon/globalPlugins/brailleExtender/addonDoc.py:130
msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
msgstr ""
+"točkica 2, potom točkica 1, potom točkica 5, potom točkica 4, i potom "
+"razmaknica."
#: addon/globalPlugins/brailleExtender/addonDoc.py:131
msgid "Etc."
-msgstr ""
+msgstr "Itd."
#: addon/globalPlugins/brailleExtender/addonDoc.py:150
msgid "Documentation"
From 4bc3ca3bfa88c070c91546f66b3e3f324db9e918 Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Thu, 16 Apr 2020 14:37:56 +0200
Subject: [PATCH 63/87] russian localization beta, not complete yet... work in
progress
---
addon/locale/ru/LC_MESSAGES/nvda.po | 1470 ++++++++++++++++++---------
1 file changed, 989 insertions(+), 481 deletions(-)
diff --git a/addon/locale/ru/LC_MESSAGES/nvda.po b/addon/locale/ru/LC_MESSAGES/nvda.po
index 52a79d32..9bc7c2fc 100644
--- a/addon/locale/ru/LC_MESSAGES/nvda.po
+++ b/addon/locale/ru/LC_MESSAGES/nvda.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender dev-18.08.04-105046\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-03-19 09:08+0100\n"
-"PO-Revision-Date: 2020-03-19 09:12+0100\n"
+"POT-Creation-Date: 2020-04-15 09:24+0200\n"
+"PO-Revision-Date: 2020-04-16 14:36+0100\n"
"Last-Translator: Zvonimir \n"
"Language-Team: \n"
"Language: ru_RU\n"
@@ -19,175 +19,175 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: addon/globalPlugins/brailleExtender/__init__.py:61
+#: addon/globalPlugins/brailleExtender/__init__.py:64
msgid "Default"
msgstr "по умолчанию"
-#: addon/globalPlugins/brailleExtender/__init__.py:62
+#: addon/globalPlugins/brailleExtender/__init__.py:65
msgid "Moving in the text"
msgstr "Перемещение по тексту"
-#: addon/globalPlugins/brailleExtender/__init__.py:63
+#: addon/globalPlugins/brailleExtender/__init__.py:66
msgid "Text selection"
msgstr "выделение текста"
-#: addon/globalPlugins/brailleExtender/__init__.py:64
+#: addon/globalPlugins/brailleExtender/__init__.py:67
msgid "Objects"
msgstr "объекты"
-#: addon/globalPlugins/brailleExtender/__init__.py:65
+#: addon/globalPlugins/brailleExtender/__init__.py:68
msgid "Review"
msgstr "просмотр"
-#: addon/globalPlugins/brailleExtender/__init__.py:66
+#: addon/globalPlugins/brailleExtender/__init__.py:69
msgid "Links"
msgstr "ссылки"
-#: addon/globalPlugins/brailleExtender/__init__.py:67
+#: addon/globalPlugins/brailleExtender/__init__.py:70
msgid "Unvisited links"
msgstr "непосещённые ссылки"
-#: addon/globalPlugins/brailleExtender/__init__.py:68
+#: addon/globalPlugins/brailleExtender/__init__.py:71
msgid "Visited links"
msgstr "Посещённые ссылки"
-#: addon/globalPlugins/brailleExtender/__init__.py:69
+#: addon/globalPlugins/brailleExtender/__init__.py:72
msgid "Landmarks"
msgstr "Ориентир"
-#: addon/globalPlugins/brailleExtender/__init__.py:70
+#: addon/globalPlugins/brailleExtender/__init__.py:73
msgid "Headings"
msgstr "Заголовки"
-#: addon/globalPlugins/brailleExtender/__init__.py:71
+#: addon/globalPlugins/brailleExtender/__init__.py:74
msgid "Headings at level 1"
msgstr "Заголовки первого уровня"
-#: addon/globalPlugins/brailleExtender/__init__.py:72
+#: addon/globalPlugins/brailleExtender/__init__.py:75
msgid "Headings at level 2"
msgstr "Заголовки второго уровня"
-#: addon/globalPlugins/brailleExtender/__init__.py:73
+#: addon/globalPlugins/brailleExtender/__init__.py:76
msgid "Headings at level 3"
msgstr "Заголовки третьего уровня"
-#: addon/globalPlugins/brailleExtender/__init__.py:74
+#: addon/globalPlugins/brailleExtender/__init__.py:77
msgid "Headings at level 4"
msgstr "Заголовки четвёртого уровня"
-#: addon/globalPlugins/brailleExtender/__init__.py:75
+#: addon/globalPlugins/brailleExtender/__init__.py:78
msgid "Headings at level 5"
msgstr "Заголовки пятого уровня"
-#: addon/globalPlugins/brailleExtender/__init__.py:76
+#: addon/globalPlugins/brailleExtender/__init__.py:79
msgid "Headings at level 6"
msgstr "Заголовки шестого уровня"
-#: addon/globalPlugins/brailleExtender/__init__.py:77
+#: addon/globalPlugins/brailleExtender/__init__.py:80
msgid "Lists"
msgstr "Списки"
-#: addon/globalPlugins/brailleExtender/__init__.py:78
+#: addon/globalPlugins/brailleExtender/__init__.py:81
msgid "List items"
msgstr "Элементы списков"
-#: addon/globalPlugins/brailleExtender/__init__.py:79
+#: addon/globalPlugins/brailleExtender/__init__.py:82
msgid "Graphics"
msgstr "изображения"
-#: addon/globalPlugins/brailleExtender/__init__.py:80
+#: addon/globalPlugins/brailleExtender/__init__.py:83
msgid "Block quotes"
msgstr "цитаты"
-#: addon/globalPlugins/brailleExtender/__init__.py:81
+#: addon/globalPlugins/brailleExtender/__init__.py:84
msgid "Buttons"
msgstr "Кнопки"
-#: addon/globalPlugins/brailleExtender/__init__.py:82
+#: addon/globalPlugins/brailleExtender/__init__.py:85
msgid "Form fields"
msgstr "образцы"
-#: addon/globalPlugins/brailleExtender/__init__.py:83
+#: addon/globalPlugins/brailleExtender/__init__.py:86
msgid "Edit fields"
msgstr "Редакторы"
-#: addon/globalPlugins/brailleExtender/__init__.py:84
+#: addon/globalPlugins/brailleExtender/__init__.py:87
msgid "Radio buttons"
msgstr "избирательные кнопки"
-#: addon/globalPlugins/brailleExtender/__init__.py:85
+#: addon/globalPlugins/brailleExtender/__init__.py:88
msgid "Combo boxes"
msgstr "комбинированные списки"
-#: addon/globalPlugins/brailleExtender/__init__.py:86
+#: addon/globalPlugins/brailleExtender/__init__.py:89
msgid "Check boxes"
msgstr "флажки"
-#: addon/globalPlugins/brailleExtender/__init__.py:87
+#: addon/globalPlugins/brailleExtender/__init__.py:90
msgid "Not link blocks"
msgstr "тексты после ссылок"
-#: addon/globalPlugins/brailleExtender/__init__.py:88
+#: addon/globalPlugins/brailleExtender/__init__.py:91
msgid "Frames"
msgstr "фреймы"
-#: addon/globalPlugins/brailleExtender/__init__.py:89
+#: addon/globalPlugins/brailleExtender/__init__.py:92
msgid "Separators"
msgstr "сепараторы"
-#: addon/globalPlugins/brailleExtender/__init__.py:90
+#: addon/globalPlugins/brailleExtender/__init__.py:93
msgid "Embedded objects"
msgstr "внедрённые объекты"
-#: addon/globalPlugins/brailleExtender/__init__.py:91
+#: addon/globalPlugins/brailleExtender/__init__.py:94
msgid "Annotations"
msgstr "Аннотации"
-#: addon/globalPlugins/brailleExtender/__init__.py:92
+#: addon/globalPlugins/brailleExtender/__init__.py:95
msgid "Spelling errors"
msgstr "орфографические ошибки"
-#: addon/globalPlugins/brailleExtender/__init__.py:93
+#: addon/globalPlugins/brailleExtender/__init__.py:96
msgid "Tables"
msgstr "таблицы"
-#: addon/globalPlugins/brailleExtender/__init__.py:94
+#: addon/globalPlugins/brailleExtender/__init__.py:97
msgid "Move in table"
msgstr "Перемещение по таблицы"
-#: addon/globalPlugins/brailleExtender/__init__.py:100
+#: addon/globalPlugins/brailleExtender/__init__.py:103
msgid "If pressed twice, presents the information in browse mode"
msgstr "Подвойному нажатию показывает информацию в режиме просмотра"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Docu&mentation"
msgstr "&Справка"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Opens the addon's documentation."
msgstr "Открывает руководство пользователя для дополнения."
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "&Settings"
msgstr "&Настройки"
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "Opens the addons' settings."
msgstr "Открывает настройки дополнения."
-#: addon/globalPlugins/brailleExtender/__init__.py:265
-msgid "Braille &dictionaries"
-msgstr "Брайлевские &словари"
+#: addon/globalPlugins/brailleExtender/__init__.py:270
+msgid "Table &dictionaries"
+msgstr "&Словари таблиц"
-#: addon/globalPlugins/brailleExtender/__init__.py:265
+#: addon/globalPlugins/brailleExtender/__init__.py:270
msgid "'Braille dictionaries' menu"
msgstr "Меню 'Брайлевские словари'"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid "&Global dictionary"
msgstr "&Глобальный словарь"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid ""
"A dialog where you can set global dictionary by adding dictionary entries to "
"the list."
@@ -195,11 +195,11 @@ msgstr ""
"Диалоговое окно, в котором возможно создать глобальный словарь, добавляя "
"словарные статьи."
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid "&Table dictionary"
msgstr "Словарь таблицы"
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid ""
"A dialog where you can set table-specific dictionary by adding dictionary "
"entries to the list."
@@ -207,11 +207,11 @@ msgstr ""
"Диалоговое окно, в котором возможно создать словарь для конкретной "
"брайлевской таблицы, добавляя словарные статьи."
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid "Te&mporary dictionary"
msgstr "&Временный словарь"
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid ""
"A dialog where you can set temporary dictionary by adding dictionary entries "
"to the list."
@@ -219,119 +219,128 @@ msgstr ""
"Диалоговое окно, в котором возможно создать временный словарь, добавляя "
"словарные статьи."
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+msgid "Advanced &input mode dictionary"
+msgstr "Настройки &расширенного ввода"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+msgid "Advanced input mode configuration"
+msgstr "Настройки режима расширенного ввода"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "&Quick launches"
msgstr "&Приложения для быстрого запуска"
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "Quick launches configuration"
msgstr "Настройки приложений для быстрого запуска"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "&Profile editor"
msgstr "&Редактор профилей"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "Profile editor"
msgstr "Редактор профилей"
-#: addon/globalPlugins/brailleExtender/__init__.py:285
+#: addon/globalPlugins/brailleExtender/__init__.py:296
msgid "Overview of the current input braille table"
msgstr "обзор текущей брайлевской таблицы"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload add-on"
msgstr "Перезагрузить дополнение"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload this add-on."
msgstr "Перезагружает дополнение."
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "&Check for update"
msgstr "&Проверить наличие обновлений"
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "Checks if update is available"
msgstr "Проверяет наличие обновления"
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "&Website"
msgstr "&Web страница"
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "Open addon's website."
msgstr "Открыть web страницу дополнения."
-#: addon/globalPlugins/brailleExtender/__init__.py:293
+#: addon/globalPlugins/brailleExtender/__init__.py:304
msgid "&Braille Extender"
msgstr "&Braille Extender"
-#: addon/globalPlugins/brailleExtender/__init__.py:297
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:319
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Global dictionary"
msgstr "Глобальный словарь"
-#: addon/globalPlugins/brailleExtender/__init__.py:302
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:324
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Table dictionary"
msgstr "Словарь таблицы"
-#: addon/globalPlugins/brailleExtender/__init__.py:306
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:328
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Temporary dictionary"
msgstr "Временный словарь"
-#: addon/globalPlugins/brailleExtender/__init__.py:416
+#: addon/globalPlugins/brailleExtender/__init__.py:438
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
msgid "Character"
msgstr "Символ"
-#: addon/globalPlugins/brailleExtender/__init__.py:417
+#: addon/globalPlugins/brailleExtender/__init__.py:439
msgid "Word"
msgstr "Слово"
-#: addon/globalPlugins/brailleExtender/__init__.py:418
+#: addon/globalPlugins/brailleExtender/__init__.py:440
msgid "Line"
msgstr "Строка"
-#: addon/globalPlugins/brailleExtender/__init__.py:419
+#: addon/globalPlugins/brailleExtender/__init__.py:441
msgid "Paragraph"
msgstr "Абзац"
-#: addon/globalPlugins/brailleExtender/__init__.py:420
+#: addon/globalPlugins/brailleExtender/__init__.py:442
msgid "Page"
msgstr "Страница"
-#: addon/globalPlugins/brailleExtender/__init__.py:421
+#: addon/globalPlugins/brailleExtender/__init__.py:443
msgid "Document"
msgstr "Документ"
-#: addon/globalPlugins/brailleExtender/__init__.py:457
+#: addon/globalPlugins/brailleExtender/__init__.py:479
msgid "Not available here"
msgstr "Недоступно здесь"
-#: addon/globalPlugins/brailleExtender/__init__.py:475
#: addon/globalPlugins/brailleExtender/__init__.py:497
+#: addon/globalPlugins/brailleExtender/__init__.py:519
msgid "Not supported here or browse mode not enabled"
msgstr "Не поддерживается здесь или режим просмотра не включён"
-#: addon/globalPlugins/brailleExtender/__init__.py:477
+#: addon/globalPlugins/brailleExtender/__init__.py:499
msgid "Select previous rotor setting"
msgstr "Выбрать предыдущую настройку в роторе"
-#: addon/globalPlugins/brailleExtender/__init__.py:478
+#: addon/globalPlugins/brailleExtender/__init__.py:500
msgid "Select next rotor setting"
msgstr "выбрать следующую настройку в роторе"
-#: addon/globalPlugins/brailleExtender/__init__.py:526
+#: addon/globalPlugins/brailleExtender/__init__.py:548
msgid "Move to previous item depending rotor setting"
msgstr "Перейти к предыдущему элементу выбранной настройки ротора"
-#: addon/globalPlugins/brailleExtender/__init__.py:527
+#: addon/globalPlugins/brailleExtender/__init__.py:549
msgid "Move to next item depending rotor setting"
msgstr "Перейти к следующему элементу выбранной настройки ротора"
-#: addon/globalPlugins/brailleExtender/__init__.py:535
+#: addon/globalPlugins/brailleExtender/__init__.py:557
msgid ""
"Varies depending on rotor setting. Eg: in object mode, it's similar to NVDA"
"+enter"
@@ -339,98 +348,113 @@ msgstr ""
"варьируется в зависимости от настройки ротора. к примеру в режиме навигации "
"по объектам выполняет туже функцию, что и NVDA+enter"
-#: addon/globalPlugins/brailleExtender/__init__.py:538
+#: addon/globalPlugins/brailleExtender/__init__.py:560
msgid "Move to previous item using rotor setting"
msgstr "перейти к предыдущемуэлементуьиспользуя текущую настройку ротора"
-#: addon/globalPlugins/brailleExtender/__init__.py:539
+#: addon/globalPlugins/brailleExtender/__init__.py:561
msgid "Move to next item using rotor setting"
msgstr "Перейти к следующему элементу, используя текущую настройку ротора."
-#: addon/globalPlugins/brailleExtender/__init__.py:543
+#: addon/globalPlugins/brailleExtender/__init__.py:565
#, python-format
msgid "Braille keyboard %s"
msgstr "Брайлевская клавиатура %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "locked"
msgstr "Заблокирована"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "unlocked"
msgstr "Разблокирована"
-#: addon/globalPlugins/brailleExtender/__init__.py:544
+#: addon/globalPlugins/brailleExtender/__init__.py:566
msgid "Lock/unlock braille keyboard"
msgstr "Заблокировать/разблокировать брайлевскую клавиатуру"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#, python-format
-msgid "Dots 7 and 8: %s"
-msgstr "Точки 7 и 8: %s"
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
+msgid "enabled"
+msgstr "Включено"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
msgid "disabled"
msgstr "Выключено"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
-msgid "enabled"
-msgstr "Включено"
+#: addon/globalPlugins/brailleExtender/__init__.py:571
+#, python-format
+msgid "One hand mode %s"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:572
+msgid "Enable/disable one hand mode feature"
+msgstr "включить или выключить режим одной руки"
-#: addon/globalPlugins/brailleExtender/__init__.py:550
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#, python-format
+msgid "Dots 7 and 8: %s"
+msgstr "Точки 7 и 8: %s"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:578
msgid "Hide/show dots 7 and 8"
msgstr "Скрыть/показывать точки 7 и 8"
-#: addon/globalPlugins/brailleExtender/__init__.py:555
+#: addon/globalPlugins/brailleExtender/__init__.py:583
#, python-format
msgid "BRF mode: %s"
msgstr "режим форматированного брайля: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:556
+#: addon/globalPlugins/brailleExtender/__init__.py:584
msgid "Enable/disable BRF mode"
msgstr "Включить/выключить режим форматированного брайля"
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:588
#, python-format
msgid "Modifier keys %s"
msgstr "модификаторы %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:561
+#: addon/globalPlugins/brailleExtender/__init__.py:589
msgid "Lock/unlock modifiers keys"
msgstr "блокирует/разблокирует модификаторы"
-#: addon/globalPlugins/brailleExtender/__init__.py:567
+#: addon/globalPlugins/brailleExtender/__init__.py:595
msgid "Enable/disable Attribra"
msgstr "включить/выключить отображение атребутов текста"
-#: addon/globalPlugins/brailleExtender/__init__.py:577
+#: addon/globalPlugins/brailleExtender/__init__.py:605
msgid "Quick access to the \"say current line while scrolling in\" option"
msgstr "быстрый доступ к опции \"произносить текущую строку при прокрутке\""
-#: addon/globalPlugins/brailleExtender/__init__.py:582
+#: addon/globalPlugins/brailleExtender/__init__.py:610
msgid "Speech on"
msgstr "Речь включена"
-#: addon/globalPlugins/brailleExtender/__init__.py:585
+#: addon/globalPlugins/brailleExtender/__init__.py:613
msgid "Speech off"
msgstr "Речь выключена"
-#: addon/globalPlugins/brailleExtender/__init__.py:587
+#: addon/globalPlugins/brailleExtender/__init__.py:615
msgid "Toggle speech on or off"
msgstr "Включает или выключает речь"
-#: addon/globalPlugins/brailleExtender/__init__.py:595
+#: addon/globalPlugins/brailleExtender/__init__.py:623
msgid "No extra info for this element"
msgstr "Нет дополнительной информации для этого элемента"
#. Translators: Input help mode message for report extra infos command.
-#: addon/globalPlugins/brailleExtender/__init__.py:599
+#: addon/globalPlugins/brailleExtender/__init__.py:627
msgid ""
"Reports some extra infos for the current element. For example, the URL on a "
"link"
@@ -438,34 +462,34 @@ msgstr ""
"предоставляет дополнительную информацию к текущему элементу, например адрес "
"ссылки"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid " Input table"
msgstr " Таблица ввода"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid "Output table"
msgstr "Таблица вывода"
-#: addon/globalPlugins/brailleExtender/__init__.py:606
+#: addon/globalPlugins/brailleExtender/__init__.py:634
#, python-format
msgid "Table overview (%s)"
msgstr "обзор таблицы (%s)"
-#: addon/globalPlugins/brailleExtender/__init__.py:607
+#: addon/globalPlugins/brailleExtender/__init__.py:635
msgid "Display an overview of current input braille table"
msgstr "Показать обзор актуальной брайлевской таблицы ввода"
-#: addon/globalPlugins/brailleExtender/__init__.py:612
-#: addon/globalPlugins/brailleExtender/__init__.py:620
-#: addon/globalPlugins/brailleExtender/__init__.py:627
+#: addon/globalPlugins/brailleExtender/__init__.py:640
+#: addon/globalPlugins/brailleExtender/__init__.py:648
+#: addon/globalPlugins/brailleExtender/__init__.py:655
msgid "No text selection"
msgstr "нет выделенного текста"
-#: addon/globalPlugins/brailleExtender/__init__.py:613
+#: addon/globalPlugins/brailleExtender/__init__.py:641
msgid "Unicode Braille conversion"
msgstr "Преобразование в брайлевский юникод"
-#: addon/globalPlugins/brailleExtender/__init__.py:614
+#: addon/globalPlugins/brailleExtender/__init__.py:642
msgid ""
"Convert the text selection in unicode braille and display it in a browseable "
"message"
@@ -473,11 +497,11 @@ msgstr ""
"Преобразует выделенный текст в брайлевском юникоде, и показывает его в окне "
"просмотра"
-#: addon/globalPlugins/brailleExtender/__init__.py:621
+#: addon/globalPlugins/brailleExtender/__init__.py:649
msgid "Braille Unicode to cell descriptions"
msgstr "юникод брайл до описаний знаков"
-#: addon/globalPlugins/brailleExtender/__init__.py:622
+#: addon/globalPlugins/brailleExtender/__init__.py:650
msgid ""
"Convert text selection in braille cell descriptions and display it in a "
"browseable message"
@@ -485,11 +509,11 @@ msgstr ""
"Преобразует выделенный текст в описание брайлевских клеток и показывает его "
"в окне просмотра"
-#: addon/globalPlugins/brailleExtender/__init__.py:629
+#: addon/globalPlugins/brailleExtender/__init__.py:657
msgid "Cell descriptions to braille Unicode"
msgstr "Описаний знаков до юникод брайля"
-#: addon/globalPlugins/brailleExtender/__init__.py:630
+#: addon/globalPlugins/brailleExtender/__init__.py:658
msgid ""
"Braille cell description to Unicode Braille. E.g.: in a edit field type "
"'125-24-0-1-123-123'. Then select this text and execute this command"
@@ -497,85 +521,103 @@ msgstr ""
"Описание брайлевских клеток в брайлевский юникод. Напр: в редактор напишите "
"'125-24-0-1-123-123'. Потом выделите этот текст и выполните эту команду"
-#: addon/globalPlugins/brailleExtender/__init__.py:634
+#: addon/globalPlugins/brailleExtender/__init__.py:663
+#, python-format
+msgid "Advanced braille input mode %s"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:664
+msgid "Enable/disable the advanced input mode"
+msgstr "Включить или выключить режим расширенного ввода"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:669
+#, python-format
+msgid "Description of undefined characters %s"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:671
+msgid "Enable/disable description of undefined characters"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:675
msgid "Get the cursor position of text"
msgstr "получить информацию о позиции курсора в тексте"
-#: addon/globalPlugins/brailleExtender/__init__.py:660
+#: addon/globalPlugins/brailleExtender/__init__.py:701
msgid "Hour and date with autorefresh"
msgstr "Дата и время с автообновлением"
-#: addon/globalPlugins/brailleExtender/__init__.py:673
+#: addon/globalPlugins/brailleExtender/__init__.py:714
msgid "Autoscroll stopped"
msgstr "Автопрокрутка остановлена"
-#: addon/globalPlugins/brailleExtender/__init__.py:680
+#: addon/globalPlugins/brailleExtender/__init__.py:721
msgid "Unable to start autoscroll. More info in NVDA log"
msgstr ""
"Невозможно начать автопрокрутку. Чтобы узнать больше, откройте записник NVDA."
-#: addon/globalPlugins/brailleExtender/__init__.py:685
+#: addon/globalPlugins/brailleExtender/__init__.py:726
msgid "Enable/disable autoscroll"
msgstr "Включить/выключить автопрокрутку"
-#: addon/globalPlugins/brailleExtender/__init__.py:700
+#: addon/globalPlugins/brailleExtender/__init__.py:741
msgid "Increase the master volume"
msgstr "Увеличить громкость"
-#: addon/globalPlugins/brailleExtender/__init__.py:717
+#: addon/globalPlugins/brailleExtender/__init__.py:758
msgid "Decrease the master volume"
msgstr "уменьшить громкость"
-#: addon/globalPlugins/brailleExtender/__init__.py:723
+#: addon/globalPlugins/brailleExtender/__init__.py:764
msgid "Muted sound"
msgstr " звук выключен"
-#: addon/globalPlugins/brailleExtender/__init__.py:725
+#: addon/globalPlugins/brailleExtender/__init__.py:766
#, python-format
msgid "Unmuted sound (%3d%%)"
msgstr "звук включен (%3d%%)"
-#: addon/globalPlugins/brailleExtender/__init__.py:731
+#: addon/globalPlugins/brailleExtender/__init__.py:772
msgid "Mute or unmute sound"
msgstr "включить или выключить звук"
-#: addon/globalPlugins/brailleExtender/__init__.py:736
+#: addon/globalPlugins/brailleExtender/__init__.py:777
#, python-format
msgid "Show the %s documentation"
msgstr "Показать справку %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:774
+#: addon/globalPlugins/brailleExtender/__init__.py:815
msgid "No such file or directory"
msgstr "Нет такого файла или папки"
-#: addon/globalPlugins/brailleExtender/__init__.py:776
+#: addon/globalPlugins/brailleExtender/__init__.py:817
msgid "Opens a custom program/file. Go to settings to define them"
msgstr ""
"Открывает настроенну вами программу/файл. войдите в настройки, чтобы "
"определить их"
-#: addon/globalPlugins/brailleExtender/__init__.py:783
+#: addon/globalPlugins/brailleExtender/__init__.py:824
#, python-format
msgid "Check for %s updates, and starts the download if there is one"
msgstr ""
"Проверяет наличие обновлений %s, и начинает загрузку, если обновление "
"доступно"
-#: addon/globalPlugins/brailleExtender/__init__.py:813
+#: addon/globalPlugins/brailleExtender/__init__.py:854
msgid "Increase autoscroll delay"
msgstr "Увеличить задержку автопрокрутки"
-#: addon/globalPlugins/brailleExtender/__init__.py:814
+#: addon/globalPlugins/brailleExtender/__init__.py:855
msgid "Decrease autoscroll delay"
msgstr "уменьшить задержку автопрокрутки"
-#: addon/globalPlugins/brailleExtender/__init__.py:818
-#: addon/globalPlugins/brailleExtender/__init__.py:836
+#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:877
msgid "Please use NVDA 2017.3 minimum for this feature"
msgstr "Пожалуйста используйте NVDA 2017.3 для этой функции"
-#: addon/globalPlugins/brailleExtender/__init__.py:820
-#: addon/globalPlugins/brailleExtender/__init__.py:838
+#: addon/globalPlugins/brailleExtender/__init__.py:861
+#: addon/globalPlugins/brailleExtender/__init__.py:879
msgid ""
"You must choose at least two tables for this feature. Please fill in the "
"settings"
@@ -583,50 +625,50 @@ msgstr ""
"для использования данной функции необходимо выбрать не менее двух таблиц. "
"пожалуйста, выполните соответствующий пункт настроек."
-#: addon/globalPlugins/brailleExtender/__init__.py:827
+#: addon/globalPlugins/brailleExtender/__init__.py:868
#, python-format
msgid "Input: %s"
msgstr "Ввод: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:831
+#: addon/globalPlugins/brailleExtender/__init__.py:872
msgid "Switch between his favorite input braille tables"
msgstr "Переключение между вашими предпочитаемыми таблицами ввода"
-#: addon/globalPlugins/brailleExtender/__init__.py:847
+#: addon/globalPlugins/brailleExtender/__init__.py:888
#, python-format
msgid "Output: %s"
msgstr "Вывод: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:850
+#: addon/globalPlugins/brailleExtender/__init__.py:891
msgid "Switch between his favorite output braille tables"
msgstr ""
"Переключение между вашими предпочитаемыми таблицами брайлевского вывода"
-#: addon/globalPlugins/brailleExtender/__init__.py:856
+#: addon/globalPlugins/brailleExtender/__init__.py:897
#, python-brace-format
msgid "I⣿O:{I}"
msgstr "I⣿O:{I}"
-#: addon/globalPlugins/brailleExtender/__init__.py:857
+#: addon/globalPlugins/brailleExtender/__init__.py:898
#, python-brace-format
msgid "Input and output: {I}."
msgstr "Ввод и вывод: {I}."
-#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:900
#, python-brace-format
msgid "I:{I} ⣿ O: {O}"
msgstr "I:{I} ⣿ O: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:860
+#: addon/globalPlugins/brailleExtender/__init__.py:901
#, python-brace-format
msgid "Input: {I}; Output: {O}"
msgstr "Ввод: {I}; Вывод: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:864
+#: addon/globalPlugins/brailleExtender/__init__.py:905
msgid "Announce the current input and output braille tables"
msgstr "Объявляет текущие брайлевские таблицы ввода и вывода"
-#: addon/globalPlugins/brailleExtender/__init__.py:869
+#: addon/globalPlugins/brailleExtender/__init__.py:910
msgid ""
"Gives the Unicode value of the character where the cursor is located and the "
"decimal, binary and octal equivalent."
@@ -634,7 +676,7 @@ msgstr ""
"Даёт значение в юникоде для символа под курсором, также десятеричное, "
"бинарное и октальное восьмиричное значение."
-#: addon/globalPlugins/brailleExtender/__init__.py:877
+#: addon/globalPlugins/brailleExtender/__init__.py:918
msgid ""
"Show the output speech for selected text in braille. Useful for emojis for "
"example"
@@ -642,110 +684,110 @@ msgstr ""
"Показывать речевую информацию для выделённого текста на брайлевском дисплее. "
"Это например, полезно для эмодзи"
-#: addon/globalPlugins/brailleExtender/__init__.py:881
+#: addon/globalPlugins/brailleExtender/__init__.py:922
msgid "No shortcut performed from a braille display"
msgstr "Нет выполненой комбинасии клавиш"
-#: addon/globalPlugins/brailleExtender/__init__.py:885
+#: addon/globalPlugins/brailleExtender/__init__.py:926
msgid "Repeat the last shortcut performed from a braille display"
msgstr "Повторяет последнюю комбинацию клавишей на брайлевском дисплее"
-#: addon/globalPlugins/brailleExtender/__init__.py:899
+#: addon/globalPlugins/brailleExtender/__init__.py:940
#, python-format
msgid "%s reloaded"
msgstr "%s перезагружен"
-#: addon/globalPlugins/brailleExtender/__init__.py:911
+#: addon/globalPlugins/brailleExtender/__init__.py:952
#, python-format
msgid "Reload %s"
msgstr "перезагрузить %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:914
+#: addon/globalPlugins/brailleExtender/__init__.py:955
msgid "Reload the first braille display defined in settings"
msgstr "Перезагружает первый брайлевский дисплей, установленный в настройках"
-#: addon/globalPlugins/brailleExtender/__init__.py:917
+#: addon/globalPlugins/brailleExtender/__init__.py:958
msgid "Reload the second braille display defined in settings"
msgstr "Перезагружает вторый брайлевский дисплей установленный в настройках"
-#: addon/globalPlugins/brailleExtender/__init__.py:923
+#: addon/globalPlugins/brailleExtender/__init__.py:964
msgid "No braille display specified. No reload to do"
msgstr "Нет определённого Брайлевского дисплея. Нечего перезагружать"
-#: addon/globalPlugins/brailleExtender/__init__.py:960
+#: addon/globalPlugins/brailleExtender/__init__.py:1001
msgid "WIN"
msgstr "WIN"
-#: addon/globalPlugins/brailleExtender/__init__.py:961
+#: addon/globalPlugins/brailleExtender/__init__.py:1002
msgid "CTRL"
msgstr "CTRL"
-#: addon/globalPlugins/brailleExtender/__init__.py:962
+#: addon/globalPlugins/brailleExtender/__init__.py:1003
msgid "SHIFT"
msgstr "SHIFT"
-#: addon/globalPlugins/brailleExtender/__init__.py:963
+#: addon/globalPlugins/brailleExtender/__init__.py:1004
msgid "ALT"
msgstr "ALT"
-#: addon/globalPlugins/brailleExtender/__init__.py:1065
+#: addon/globalPlugins/brailleExtender/__init__.py:1106
msgid "Keyboard shortcut cancelled"
msgstr "Горячая клавиша отменена"
#. /* docstrings for modifier keys */
-#: addon/globalPlugins/brailleExtender/__init__.py:1073
+#: addon/globalPlugins/brailleExtender/__init__.py:1114
msgid "Emulate pressing down "
msgstr "эмулирует нажатие стрелки вниз "
-#: addon/globalPlugins/brailleExtender/__init__.py:1074
+#: addon/globalPlugins/brailleExtender/__init__.py:1115
msgid " on the system keyboard"
msgstr " На системной клавиатуре"
-#: addon/globalPlugins/brailleExtender/__init__.py:1130
+#: addon/globalPlugins/brailleExtender/__init__.py:1171
msgid "Current braille view saved"
msgstr "актуальный брайлевский просмотр сохранён"
-#: addon/globalPlugins/brailleExtender/__init__.py:1133
+#: addon/globalPlugins/brailleExtender/__init__.py:1174
msgid "Buffer cleaned"
msgstr "Буфер очищен"
-#: addon/globalPlugins/brailleExtender/__init__.py:1134
+#: addon/globalPlugins/brailleExtender/__init__.py:1175
msgid "Save the current braille view. Press twice quickly to clean the buffer"
msgstr ""
"Сохраняет актуальный просмотр брайля. Нажмите дважды быстро, чтобы очистить "
"буфер"
-#: addon/globalPlugins/brailleExtender/__init__.py:1139
+#: addon/globalPlugins/brailleExtender/__init__.py:1180
msgid "View saved"
msgstr "Просмотр сохранён"
-#: addon/globalPlugins/brailleExtender/__init__.py:1140
+#: addon/globalPlugins/brailleExtender/__init__.py:1181
msgid "Buffer empty"
msgstr "Буфер пуст"
-#: addon/globalPlugins/brailleExtender/__init__.py:1141
+#: addon/globalPlugins/brailleExtender/__init__.py:1182
msgid "Show the saved braille view through a flash message"
msgstr "Показывает подгляд брайля через флеш сообщение."
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Pause"
msgstr "пауза"
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Resume"
msgstr "возобновить"
-#: addon/globalPlugins/brailleExtender/__init__.py:1217
-#: addon/globalPlugins/brailleExtender/__init__.py:1224
+#: addon/globalPlugins/brailleExtender/__init__.py:1258
+#: addon/globalPlugins/brailleExtender/__init__.py:1265
#, python-format
msgid "Auto test type %d"
msgstr "Тип автотеста %d"
-#: addon/globalPlugins/brailleExtender/__init__.py:1234
+#: addon/globalPlugins/brailleExtender/__init__.py:1275
msgid "Auto test stopped"
msgstr "Автотест остановлен"
-#: addon/globalPlugins/brailleExtender/__init__.py:1244
+#: addon/globalPlugins/brailleExtender/__init__.py:1285
msgid ""
"Auto test started. Use the up and down arrow keys to change speed. Use the "
"left and right arrow keys to change test type. Use space key to pause or "
@@ -756,90 +798,353 @@ msgstr ""
"изменить тип теста. Используйте кнопку пробел, чтобы прервать или "
"возобновить тест. Используйте искейп для выхода"
-#: addon/globalPlugins/brailleExtender/__init__.py:1246
+#: addon/globalPlugins/brailleExtender/__init__.py:1287
msgid "Auto test"
msgstr "автотест"
-#: addon/globalPlugins/brailleExtender/__init__.py:1251
+#: addon/globalPlugins/brailleExtender/__init__.py:1292
msgid "Add dictionary entry or see a dictionary"
msgstr "Добавьте словарьную статью или посмотрите словарь"
-#: addon/globalPlugins/brailleExtender/__init__.py:1252
+#: addon/globalPlugins/brailleExtender/__init__.py:1293
msgid "Add a entry in braille dictionary"
msgstr "Добавь статью в брайлевский словарь"
#. Add-on summary, usually the user visible name of the addon.
#. Translators: Summary for this add-on to be shown on installation and add-on information.
-#: addon/globalPlugins/brailleExtender/__init__.py:1299
-#: addon/globalPlugins/brailleExtender/dictionaries.py:111
-#: addon/globalPlugins/brailleExtender/dictionaries.py:367
-#: addon/globalPlugins/brailleExtender/dictionaries.py:374
-#: addon/globalPlugins/brailleExtender/dictionaries.py:378
-#: addon/globalPlugins/brailleExtender/dictionaries.py:382
-#: addon/globalPlugins/brailleExtender/settings.py:33 buildVars.py:24
+#: addon/globalPlugins/brailleExtender/__init__.py:1344
+#: addon/globalPlugins/brailleExtender/dictionaries.py:112
+#: addon/globalPlugins/brailleExtender/dictionaries.py:369
+#: addon/globalPlugins/brailleExtender/dictionaries.py:376
+#: addon/globalPlugins/brailleExtender/dictionaries.py:380
+#: addon/globalPlugins/brailleExtender/dictionaries.py:384
+#: addon/globalPlugins/brailleExtender/settings.py:35
+#: addon/globalPlugins/brailleExtender/settings.py:388 buildVars.py:24
msgid "Braille Extender"
msgstr "Braille Extender"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:33
-#, python-format
-msgid "%s braille display"
-msgstr "Брайлевский дисплей %s"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+msgid "HUC8"
+msgstr ""
-#: addon/globalPlugins/brailleExtender/addonDoc.py:34
-#, python-format
-msgid "profile loaded: %s"
-msgstr "профиль загружен: %s"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:258
+msgid "Hexadecimal"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:65
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:259
+msgid "Decimal"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:66
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:260
+msgid "Octal"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:67
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:261
+msgid "Binary"
+msgstr "Двоичная"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/addonDoc.py:46
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:239
+msgid "Representation of undefined characters"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:48
+msgid ""
+"The extension allows you to customize how an undefined character should be "
+"represented within a braille table. To do so, go to the braille table "
+"settings. You can choose between the following representations:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:52
+msgid ""
+"You can also combine this option with the “describe the character if "
+"possible” setting."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:54
+msgid "Notes:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:56
+msgid ""
+"To distinguish the undefined set of characters while maximizing space, the "
+"best combination is the usage of the HUC8 representation without checking "
+"the “describe character if possible” option."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:57
+#, python-brace-format
+msgid "To learn more about the HUC representation, see {url}"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:58
+msgid ""
+"Keep in mind that definitions in tables and those in your table dictionaries "
+"take precedence over character descriptions, which also take precedence over "
+"the chosen representation for undefined characters."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:61
+msgid "Getting Current Character Info"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:63
+msgid ""
+"This feature allows you to obtain various information regarding the "
+"character under the cursor using the current input braille table, such as:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:65
+msgid ""
+"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
+"values; A description of the character if possible; - The Unicode Braille "
+"representation and the Braille dot pattern."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:67
+msgid ""
+"Pressing the defined gesture associated to this function once shows you the "
+"information in a flash message and a double-press displays the same "
+"information in a virtual NVDA buffer."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:69
+msgid ""
+"On supported displays the defined gesture is ⡉+space. No system gestures are "
+"defined by default."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:71
+#, python-brace-format
+msgid ""
+"For example, for the '{chosenChar}' character, we will get the following "
+"information:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:74
+msgid "Advanced Braille Input"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:76
+msgid ""
+"This feature allows you to enter any character from its HUC8 representation "
+"or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to "
+"develop abbreviations. To use this function, enter the advanced input mode "
+"and then enter the desired pattern. Default gestures: NVDA+Windows+i or ⡊"
+"+space (on supported displays). Press the same gesture to exit this mode. "
+"Alternatively, an option allows you to automatically exit this mode after "
+"entering a single pattern. "
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:80
+msgid "Specify the basis as follows"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
+msgid "⠭ or ⠓"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
+msgid "for a hexadecimal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:83
+msgid "for a decimal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:84
+msgid "for an octal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:87
+msgid ""
+"Enter the value of the character according to the previously selected basis."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:88
+msgid "Press Space to validate."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:91
+msgid ""
+"For abbreviations, you must first add them in the dialog box - Advanced mode "
+"dictionaries -. Then, you just have to enter your abbreviation and press "
+"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:93
+msgid "Here are some examples of sequences to be entered for given characters:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:97
+msgid "Note: the HUC6 input is currently not supported."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:100
+msgid "One-hand mode"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:102
+msgid ""
+"This feature allows you to compose a cell in several steps. This can be "
+"activated in the general settings of the extension's preferences or on the "
+"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
+"Three input methods are available."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:103
+msgid "Method #1: fill a cell in 2 stages on both sides"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:105
+msgid ""
+"With this method, type the left side dots, then the right side dots. If one "
+"side is empty, type the dots correspondig to the opposite side twice, or "
+"type the dots corresponding to the non-empty side in 2 steps."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:106
+#: addon/globalPlugins/brailleExtender/addonDoc.py:115
+msgid "For example:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:108
+msgid "For ⠛: press dots 1-2 then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:109
+msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:110
+msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:112
+msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:114
+msgid ""
+"Using this method, you can compose a cell with one hand, regardless of which "
+"side of the Braille keyboard you choose. The first step allows you to enter "
+"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
+"An empty cell will be obtained by pressing the space key twice."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:117
+msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
+msgstr ""
-#: addon/globalPlugins/brailleExtender/addonDoc.py:51
+#: addon/globalPlugins/brailleExtender/addonDoc.py:118
+msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:119
+msgid "For ⠘: press space then 1-2, or space then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:121
+msgid ""
+"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
+"validate the character)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:126
+msgid "Dots 1-2, then dots 4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:127
+msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:128
+msgid "Dot 1, then dots 2-4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:129
+msgid "Dots 1-2-4, then dot 5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:130
+msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:131
+msgid "Etc."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:150
+msgid "Documentation"
+msgstr "Справка"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:160
+msgid "Driver loaded"
+msgstr "Драйвер перезагружен"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:161
+msgid "Profile"
+msgstr "Профиль"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:175
msgid "Simple keys"
msgstr "Простые сочетания клавиш"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:53
+#: addon/globalPlugins/brailleExtender/addonDoc.py:177
msgid "Usual shortcuts"
msgstr "стандартные сочитания клавиш"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:55
+#: addon/globalPlugins/brailleExtender/addonDoc.py:179
msgid "Standard NVDA commands"
msgstr "Стандартные команды NVDA"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:57
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/addonDoc.py:182
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Modifier keys"
msgstr "Модификаторы"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:59
+#: addon/globalPlugins/brailleExtender/addonDoc.py:185
msgid "Quick navigation keys"
msgstr "Клавиши быстрой навигации"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:61
+#: addon/globalPlugins/brailleExtender/addonDoc.py:189
msgid "Rotor feature"
msgstr "Функция ротора"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:63
+#: addon/globalPlugins/brailleExtender/addonDoc.py:197
msgid "Gadget commands"
msgstr "специальные команды дополнения"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:65
+#: addon/globalPlugins/brailleExtender/addonDoc.py:210
msgid "Shortcuts defined outside add-on"
msgstr "Сочетания клавиш назначенные вне дополнения"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:85
+#: addon/globalPlugins/brailleExtender/addonDoc.py:238
msgid "Keyboard configurations provided"
msgstr "установленные профили клавиатуры брайлевского ввода"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:87
+#: addon/globalPlugins/brailleExtender/addonDoc.py:241
msgid "Keyboard configurations are"
msgstr "доступны следующие профили конфигурации брайлевской клавиатуры:"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:93
+#: addon/globalPlugins/brailleExtender/addonDoc.py:250
msgid "Warning:"
msgstr "предупреждение"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:94
+#: addon/globalPlugins/brailleExtender/addonDoc.py:252
msgid "BrailleExtender has no gesture map yet for your braille display."
msgstr "У Braille extender ещё нет жестов для вашего брайдевского дисплея."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:95
+#: addon/globalPlugins/brailleExtender/addonDoc.py:255
msgid ""
"However, you can still assign your own gestures in the \"Input Gestures\" "
"dialog (under Preferences menu)."
@@ -847,172 +1152,338 @@ msgstr ""
"однако вы можете самостоятельно назначить сочетания горячих клавиш для "
"большинства функций Braille Extender в настройках жестов ввода NVDA."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:97
+#: addon/globalPlugins/brailleExtender/addonDoc.py:259
msgid "Add-on gestures on the system keyboard"
msgstr "Жесты дополнения на системной клавиатуре"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:118
+#: addon/globalPlugins/brailleExtender/addonDoc.py:282
msgid "Arabic"
msgstr "Арабский"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:119
+#: addon/globalPlugins/brailleExtender/addonDoc.py:283
msgid "Croatian"
msgstr "хорватский"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:120
+#: addon/globalPlugins/brailleExtender/addonDoc.py:284
msgid "Danish"
msgstr "Датский"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:121
+#: addon/globalPlugins/brailleExtender/addonDoc.py:285
+msgid "English and French"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:286
msgid "German"
msgstr "немецкий"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:122
+#: addon/globalPlugins/brailleExtender/addonDoc.py:287
msgid "Hebrew"
msgstr "Иврит"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:123
+#: addon/globalPlugins/brailleExtender/addonDoc.py:288
msgid "Persian"
msgstr "персидский"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:124
+#: addon/globalPlugins/brailleExtender/addonDoc.py:289
msgid "Polish"
msgstr "Польский"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:125
+#: addon/globalPlugins/brailleExtender/addonDoc.py:290
msgid "Russian"
msgstr "русский"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:127
+#: addon/globalPlugins/brailleExtender/addonDoc.py:293
msgid "Copyrights and acknowledgements"
msgstr "Авторские права и благодарность"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:129
+#: addon/globalPlugins/brailleExtender/addonDoc.py:299
msgid "and other contributors"
msgstr "и другие сотрудники"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:133
+#: addon/globalPlugins/brailleExtender/addonDoc.py:303
msgid "Translators"
msgstr "переводчики"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:139
+#: addon/globalPlugins/brailleExtender/addonDoc.py:313
msgid "Code contributions and other"
msgstr "Внесение в код и другие"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:139
+#: addon/globalPlugins/brailleExtender/addonDoc.py:315
msgid "Additional third party copyrighted code is included:"
msgstr ""
"содержит Дополнительные фрагменты кода от третьих лиц, защищенные авторским "
"правом. "
-#: addon/globalPlugins/brailleExtender/addonDoc.py:142
+#: addon/globalPlugins/brailleExtender/addonDoc.py:321
msgid "Thanks also to"
msgstr "спасибо также"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:144
+#: addon/globalPlugins/brailleExtender/addonDoc.py:323
msgid "And thank you very much for all your feedback and comments."
msgstr ""
"а Также, спасибо всем вам за ваши коментарии пересланные по электронной "
"почте."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:146
+#: addon/globalPlugins/brailleExtender/addonDoc.py:327
#, python-format
msgid "%s's documentation"
msgstr "помощь для %s"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:162
+#: addon/globalPlugins/brailleExtender/addonDoc.py:346
#, python-format
msgid "Emulates pressing %s on the system keyboard"
msgstr "эмулирует нажатие %s на системной клавиатуре."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:169
+#: addon/globalPlugins/brailleExtender/addonDoc.py:357
msgid "description currently unavailable for this shortcut"
msgstr "описание функции данного сочитания клавиш пока недоступно."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:187
+#: addon/globalPlugins/brailleExtender/addonDoc.py:377
msgid "caps lock"
msgstr "caps lock"
-#: addon/globalPlugins/brailleExtender/configBE.py:40
-#: addon/globalPlugins/brailleExtender/configBE.py:47
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:105
+msgid "all tables"
+msgstr "Все таблицы"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:116
+msgid "Advanced input mode dictionary"
+msgstr "Словарь расширенного ввода"
+
+#. Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
+#. Translators: The label for the combo box of dictionary entries in table dictionary dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:123
+#: addon/globalPlugins/brailleExtender/dictionaries.py:132
+msgid "Dictionary &entries"
+msgstr "Словарные &статьи"
+
+#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:131
+msgid "Abbreviation"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:132
+msgid "Replace by"
+msgstr "Заменить с"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:133
+msgid "Input table"
+msgstr "Таблица ввода"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
+#. Translators: The label for a button in table dictionaries dialog to add new entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:139
+#: addon/globalPlugins/brailleExtender/dictionaries.py:149
+msgid "&Add"
+msgstr "&Добавить"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
+#. Translators: The label for a button in table dictionaries dialog to edit existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:145
+#: addon/globalPlugins/brailleExtender/dictionaries.py:155
+msgid "&Edit"
+msgstr "&Редактировать"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
+#. Translators: The label for a button in table dictionaries dialog to remove existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:151
+#: addon/globalPlugins/brailleExtender/dictionaries.py:161
+msgid "Re&move"
+msgstr "&Удалить"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:159
+msgid "&Open the dictionary file in an editor"
+msgstr "&Открыть файл словаря в текстовом редакторе"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
+#. Translators: The label for a button in table dictionaries dialog to reload dictionary.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:164
+#: addon/globalPlugins/brailleExtender/dictionaries.py:174
+msgid "&Reload the dictionary"
+msgstr "&Перезагрузить словарь"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:177
+#: addon/globalPlugins/brailleExtender/dictionaries.py:218
+msgid "Add Dictionary Entry"
+msgstr "Добавить словарь"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:221
+msgid "File doesn't exist yet"
+msgstr ""
+
+#. Translators: This is the label for the edit dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:242
+#: addon/globalPlugins/brailleExtender/dictionaries.py:290
+msgid "Edit Dictionary Entry"
+msgstr "Редактировать словарную статью"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:247
+msgid "&Abreviation"
+msgstr "&Сокращение"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:252
+msgid "&Replace by"
+msgstr "&Заменить с"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:276
+msgid "Advanced input mode"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:284
+msgid "E&xit the advanced input mode after typing one pattern"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:291
+msgid "Escape sign for Unicode values"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:54
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:248
+msgid "Use braille table behavior"
+msgstr "Использовать поведение брайлевской таблицы"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:55
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:249
+msgid "Dots 1-8 (⣿)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:250
+msgid "Dots 1-6 (⠿)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:251
+msgid "Empty cell (⠀)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:58
+msgid "Other dot pattern (e.g.: 6-123456)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:59
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:253
+msgid "Question mark (depending output table)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:60
+msgid "Other sign/pattern (e.g.: \\, ??)"
+msgstr ""
+
#: addon/globalPlugins/brailleExtender/configBE.py:61
-#: addon/globalPlugins/brailleExtender/settings.py:421
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:255
+msgid "Hexadecimal, Liblouis style"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:256
+msgid "Hexadecimal, HUC8"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:257
+msgid "Hexadecimal, HUC6"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:70
+#: addon/globalPlugins/brailleExtender/configBE.py:77
+#: addon/globalPlugins/brailleExtender/configBE.py:91
+#: addon/globalPlugins/brailleExtender/settings.py:426
msgid "none"
msgstr "Ничего"
-#: addon/globalPlugins/brailleExtender/configBE.py:41
+#: addon/globalPlugins/brailleExtender/configBE.py:71
msgid "braille only"
msgstr "Только брайль"
-#: addon/globalPlugins/brailleExtender/configBE.py:42
+#: addon/globalPlugins/brailleExtender/configBE.py:72
msgid "speech only"
msgstr "Только речь"
-#: addon/globalPlugins/brailleExtender/configBE.py:43
-#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon/globalPlugins/brailleExtender/configBE.py:73
+#: addon/globalPlugins/brailleExtender/configBE.py:94
msgid "both"
msgstr "брайль и речь"
-#: addon/globalPlugins/brailleExtender/configBE.py:48
+#: addon/globalPlugins/brailleExtender/configBE.py:78
msgid "dots 7 and 8"
msgstr "точки 7 и 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:49
+#: addon/globalPlugins/brailleExtender/configBE.py:79
msgid "dot 7"
msgstr "точка 7"
-#: addon/globalPlugins/brailleExtender/configBE.py:50
+#: addon/globalPlugins/brailleExtender/configBE.py:80
msgid "dot 8"
msgstr "точка 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon/globalPlugins/brailleExtender/configBE.py:86
msgid "stable"
msgstr "стабильный"
-#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon/globalPlugins/brailleExtender/configBE.py:87
msgid "development"
msgstr "для разработчиков"
-#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon/globalPlugins/brailleExtender/configBE.py:92
msgid "focus mode"
msgstr "Режим фокуса"
-#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon/globalPlugins/brailleExtender/configBE.py:93
msgid "review mode"
msgstr "Режим просмотра"
-#: addon/globalPlugins/brailleExtender/configBE.py:92
+#: addon/globalPlugins/brailleExtender/configBE.py:102
+msgid "Fill a cell in two stages on both sides"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:103
+msgid "Fill a cell in two stages on one side (space = empty side)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:104
+msgid ""
+"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
+"character)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:131
msgid "last known"
msgstr "Последний известный"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:29
+#: addon/globalPlugins/brailleExtender/dictionaries.py:30
msgid "Sign"
msgstr "Знак"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:31
+#: addon/globalPlugins/brailleExtender/dictionaries.py:32
msgid "Math"
msgstr "Математика"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:33
+#: addon/globalPlugins/brailleExtender/dictionaries.py:34
msgid "Replace"
msgstr "Замена"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:41
+#: addon/globalPlugins/brailleExtender/dictionaries.py:42
msgid "Both (input and output)"
msgstr "Ввод и вывод одновременно"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:42
+#: addon/globalPlugins/brailleExtender/dictionaries.py:43
msgid "Backward (input only)"
msgstr "назад, только ввод"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:43
+#: addon/globalPlugins/brailleExtender/dictionaries.py:44
msgid "Forward (output only)"
msgstr "вперёд, только вывод"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:110
+#: addon/globalPlugins/brailleExtender/dictionaries.py:111
#, python-format
msgid ""
"One or more errors are present in dictionaries tables. Concerned "
@@ -1021,121 +1492,87 @@ msgstr ""
"Одна или больше одной ошибки присутствуют в словарных таблицах. Спорные "
"таблицы: %s. Как последствие, эти словари не будут загружены."
-#. Translators: The label for the combo box of dictionary entries in speech dictionary dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:131
-msgid "Dictionary &entries"
-msgstr "Словарные &статьи"
-
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:134
+#: addon/globalPlugins/brailleExtender/dictionaries.py:135
msgid "Comment"
msgstr "комментарий"
#. Translators: The label for a column in dictionary entries list used to identify original character.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:136
+#: addon/globalPlugins/brailleExtender/dictionaries.py:137
msgid "Pattern"
msgstr "Образец"
#. Translators: The label for a column in dictionary entries list and in a list of symbols from symbol pronunciation dialog used to identify replacement for a pattern or a symbol
-#: addon/globalPlugins/brailleExtender/dictionaries.py:138
+#: addon/globalPlugins/brailleExtender/dictionaries.py:139
msgid "Representation"
msgstr "отображение"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:140
+#: addon/globalPlugins/brailleExtender/dictionaries.py:141
msgid "Opcode"
msgstr "Оператор"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:142
+#: addon/globalPlugins/brailleExtender/dictionaries.py:143
msgid "Direction"
msgstr "смер"
-#. Translators: The label for a button in speech dictionaries dialog to add new entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:148
-msgid "&Add"
-msgstr "&Добавить"
-
-#. Translators: The label for a button in speech dictionaries dialog to edit existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:154
-msgid "&Edit"
-msgstr "&Редактировать"
-
-#. Translators: The label for a button in speech dictionaries dialog to remove existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:160
-msgid "Re&move"
-msgstr "&Удалить"
-
-#. Translators: The label for a button in speech dictionaries dialog to open dictionary file in an editor.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:168
+#. Translators: The label for a button in table dictionaries dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/dictionaries.py:169
msgid "&Open the current dictionary file in an editor"
msgstr "&Отрыть актуалный файл словаря в редакторе"
-#. Translators: The label for a button in speech dictionaries dialog to reload dictionary.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:173
-msgid "&Reload the dictionary"
-msgstr "&Перезагрузить словарь"
-
-#: addon/globalPlugins/brailleExtender/dictionaries.py:216
-msgid "Add Dictionary Entry"
-msgstr "Добавить словарь"
-
-#. Translators: This is the label for the edit dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:288
-msgid "Edit Dictionary Entry"
-msgstr "Редактировать словарную статью"
-
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:294
+#: addon/globalPlugins/brailleExtender/dictionaries.py:296
msgid "Dictionary"
msgstr "Словарь"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Global"
msgstr "Глобальный"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Table"
msgstr "таблица"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Temporary"
msgstr "временный"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:302
+#: addon/globalPlugins/brailleExtender/dictionaries.py:304
msgid "See &entries"
msgstr "&Посмотреть статьи"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:307
+#: addon/globalPlugins/brailleExtender/dictionaries.py:309
msgid "&Text pattern/sign"
msgstr "&Образец текста/знак"
#. Translators: This is a label for an edit field in add dictionary entry dialog and in punctuation/symbol pronunciation dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:312
+#: addon/globalPlugins/brailleExtender/dictionaries.py:314
msgid "&Braille representation"
msgstr "&Брайлевское отображение"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:316
+#: addon/globalPlugins/brailleExtender/dictionaries.py:318
msgid "&Comment"
msgstr "&Комментарий"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:320
+#: addon/globalPlugins/brailleExtender/dictionaries.py:322
msgid "&Opcode"
msgstr "&Оператор"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:325
+#: addon/globalPlugins/brailleExtender/dictionaries.py:327
msgid "&Direction"
msgstr "&Смер"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:366
+#: addon/globalPlugins/brailleExtender/dictionaries.py:368
msgid "Text pattern/sign field is empty."
msgstr "Поле Образца текста/знак - пустое."
-#: addon/globalPlugins/brailleExtender/dictionaries.py:373
+#: addon/globalPlugins/brailleExtender/dictionaries.py:375
#, python-format
msgid ""
"Invalid value for 'text pattern/sign' field. You must specify a character "
@@ -1144,7 +1581,7 @@ msgstr ""
"Неправильный внос для поля 'образец текста/знак'. Надо определить знак с "
"оператором. Напр: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:377
+#: addon/globalPlugins/brailleExtender/dictionaries.py:379
#, python-format
msgid ""
"'Braille representation' field is empty, you must specify something with "
@@ -1153,7 +1590,7 @@ msgstr ""
"Поле 'представление брайля' пусто, Надо что-нибудь определить с этим "
"оператором. Напр: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:381
+#: addon/globalPlugins/brailleExtender/dictionaries.py:383
#, python-format
msgid ""
"Invalid value for 'braille representation' field. You must enter dot "
@@ -1162,191 +1599,208 @@ msgstr ""
"неправильный внос для поля 'отображение брайля'. Тут надо вписывать точки. "
"напр.: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:32
+#. Translators: Reported when translation didn't succeed due to unsupported input.
+#: addon/globalPlugins/brailleExtender/patchs.py:376
+msgid "Unsupported input"
+msgstr "Неподдержанный ввод"
+
+#: addon/globalPlugins/brailleExtender/patchs.py:435
+msgid "Unsupported input method"
+msgstr "Метод ввода не поддерживается"
+
+#: addon/globalPlugins/brailleExtender/settings.py:34
msgid "The feature implementation is in progress. Thanks for your patience."
msgstr ""
"Имплементация этой фукции продлится некоторое время. Спасибо з терпение."
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:38
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:40
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "General"
msgstr "Общее"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:45
+#: addon/globalPlugins/brailleExtender/settings.py:47
msgid "Check for &updates automatically"
msgstr "Проверять наличие &обновлений автоматически"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:49
+#: addon/globalPlugins/brailleExtender/settings.py:51
msgid "Add-on update channel"
msgstr "Канал обновлений"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:56
+#: addon/globalPlugins/brailleExtender/settings.py:58
msgid "Say current line while scrolling in"
msgstr "Произнести актуальную строку при прокрутке в режиме"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:60
+#: addon/globalPlugins/brailleExtender/settings.py:62
msgid "Speech interrupt when scrolling on same line"
msgstr "Прервать речь, когда прокрутка находится в той же самой строке"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:64
+#: addon/globalPlugins/brailleExtender/settings.py:66
msgid "Speech interrupt for unknown gestures"
msgstr "Прервать речь при выполнении неизвестного жеста"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:68
+#: addon/globalPlugins/brailleExtender/settings.py:70
msgid "Announce the character while moving with routing buttons"
msgstr ""
"озвучивать по символам во время навигации с помощью клавиш маршрутизации "
"курсора."
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:72
+#: addon/globalPlugins/brailleExtender/settings.py:74
msgid "Use cursor keys to route cursor in review mode"
msgstr "Использовать клавиши стрелок для перемещения фокуса в режиме просмотра"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:76
+#: addon/globalPlugins/brailleExtender/settings.py:78
msgid "Display time and date infinitely"
msgstr "Всегда показывать дату и время"
-#: addon/globalPlugins/brailleExtender/settings.py:78
+#: addon/globalPlugins/brailleExtender/settings.py:80
msgid "Automatic review mode for apps with terminal"
msgstr "автоматически переходить в режим просмотра в терминальных приложениях"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:82
+#: addon/globalPlugins/brailleExtender/settings.py:84
msgid "Feedback for volume change in"
msgstr "оповещать об изменении громкости в"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:90
+#: addon/globalPlugins/brailleExtender/settings.py:92
msgid "Feedback for modifier keys in"
msgstr "объявлять модификаторы"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:96
+#: addon/globalPlugins/brailleExtender/settings.py:98
msgid "Play beeps for modifier keys"
msgstr "проигрывать звуковой сигнал после нажатия кнопок НВДА"
-#: addon/globalPlugins/brailleExtender/settings.py:101
+#: addon/globalPlugins/brailleExtender/settings.py:103
msgid "Right margin on cells"
msgstr " отступление клеток по правому краю"
-#: addon/globalPlugins/brailleExtender/settings.py:101
-#: addon/globalPlugins/brailleExtender/settings.py:113
-#: addon/globalPlugins/brailleExtender/settings.py:356
+#: addon/globalPlugins/brailleExtender/settings.py:103
+#: addon/globalPlugins/brailleExtender/settings.py:115
+#: addon/globalPlugins/brailleExtender/settings.py:366
msgid "for the currrent braille display"
msgstr "для актуального брайлевского дисплея"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:105
+#: addon/globalPlugins/brailleExtender/settings.py:107
msgid "Braille keyboard configuration"
msgstr "Настройки брайлевской клавиатуры"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:109
+#: addon/globalPlugins/brailleExtender/settings.py:111
msgid "Reverse forward scroll and back scroll buttons"
msgstr "заменить левую и правую кнопки прокрутки"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:113
+#: addon/globalPlugins/brailleExtender/settings.py:115
msgid "Autoscroll delay (ms)"
msgstr "Задержка автопрокрутки в милисекундах"
-#: addon/globalPlugins/brailleExtender/settings.py:114
+#: addon/globalPlugins/brailleExtender/settings.py:116
msgid "First braille display preferred"
msgstr "Первый предпочитаемый брайлевский дисплей"
-#: addon/globalPlugins/brailleExtender/settings.py:116
+#: addon/globalPlugins/brailleExtender/settings.py:118
msgid "Second braille display preferred"
msgstr "Второй предпочитаемый брайлевский дисплей"
+#: addon/globalPlugins/brailleExtender/settings.py:120
+msgid "One-handed mode"
+msgstr "Режим одной руки"
+
+#: addon/globalPlugins/brailleExtender/settings.py:124
+msgid "One hand mode method"
+msgstr "Метод режима одной руки"
+
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:149
+#: addon/globalPlugins/brailleExtender/settings.py:159
msgid "Text attributes"
msgstr "Форматирование текста"
-#: addon/globalPlugins/brailleExtender/settings.py:153
-#: addon/globalPlugins/brailleExtender/settings.py:200
+#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon/globalPlugins/brailleExtender/settings.py:210
msgid "Enable this feature"
msgstr "Включить эту функцию"
-#: addon/globalPlugins/brailleExtender/settings.py:155
+#: addon/globalPlugins/brailleExtender/settings.py:165
msgid "Show spelling errors with"
msgstr "Показывать орфографические ошибки с помощью"
-#: addon/globalPlugins/brailleExtender/settings.py:157
+#: addon/globalPlugins/brailleExtender/settings.py:167
msgid "Show bold with"
msgstr "Показывать жирный шрифт с помощью"
-#: addon/globalPlugins/brailleExtender/settings.py:159
+#: addon/globalPlugins/brailleExtender/settings.py:169
msgid "Show italic with"
msgstr "Показывать курсив с помощью"
-#: addon/globalPlugins/brailleExtender/settings.py:161
+#: addon/globalPlugins/brailleExtender/settings.py:171
msgid "Show underline with"
msgstr "Показывать подчёркивание с помощью"
-#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon/globalPlugins/brailleExtender/settings.py:173
msgid "Show strikethrough with"
msgstr "показывать зачеркнутые буквы с помощью"
-#: addon/globalPlugins/brailleExtender/settings.py:165
+#: addon/globalPlugins/brailleExtender/settings.py:175
msgid "Show subscript with"
msgstr "Показывать подстрочные буквы с помощью"
-#: addon/globalPlugins/brailleExtender/settings.py:167
+#: addon/globalPlugins/brailleExtender/settings.py:177
msgid "Show superscript with"
msgstr "Показывать надстрочные буквы с помощью"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:193
+#: addon/globalPlugins/brailleExtender/settings.py:203
msgid "Role labels"
msgstr "Сокращения элементов"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Role category"
msgstr "Категория элемента"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Landmark"
msgstr "область"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Positive state"
msgstr "положительное состояние"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Negative state"
msgstr "Отрицательное состояние"
-#: addon/globalPlugins/brailleExtender/settings.py:206
+#: addon/globalPlugins/brailleExtender/settings.py:216
msgid "Role"
msgstr "тип элемента"
-#: addon/globalPlugins/brailleExtender/settings.py:208
+#: addon/globalPlugins/brailleExtender/settings.py:218
msgid "Actual or new label"
msgstr "текущая или новая метка"
-#: addon/globalPlugins/brailleExtender/settings.py:212
+#: addon/globalPlugins/brailleExtender/settings.py:222
msgid "&Reset this role label"
msgstr "вернуть сокращение для этого элемента к настройкам поумолчанию"
-#: addon/globalPlugins/brailleExtender/settings.py:214
+#: addon/globalPlugins/brailleExtender/settings.py:224
msgid "Reset all role labels"
msgstr "вернуть все метки к настройкам поумолчанию."
-#: addon/globalPlugins/brailleExtender/settings.py:279
+#: addon/globalPlugins/brailleExtender/settings.py:289
msgid "You have no customized label."
msgstr "у вас нет пользовательских меток."
-#: addon/globalPlugins/brailleExtender/settings.py:282
+#: addon/globalPlugins/brailleExtender/settings.py:292
#, python-format
msgid ""
"Do you want really reset all labels? Currently, you have %d customized "
@@ -1355,99 +1809,94 @@ msgstr ""
"вы действительно хотите вернуть все метки к настройкам поумолчанию? в данный "
"момент у вас установлено %d пользовательских меток."
-#: addon/globalPlugins/brailleExtender/settings.py:283
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon/globalPlugins/brailleExtender/settings.py:293
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Confirmation"
msgstr "подтверждение"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:325
+#: addon/globalPlugins/brailleExtender/settings.py:335
msgid "Braille tables"
msgstr "Брайлевские таблицы"
-#: addon/globalPlugins/brailleExtender/settings.py:330
+#: addon/globalPlugins/brailleExtender/settings.py:340
msgid "Use the current input table"
msgstr "Использовать актуальную таблицу ввода"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "Prefered braille tables"
msgstr "Предпочитаемые брайлевские таблицы"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "press F1 for help"
msgstr "Для помощи, нажмите ф1"
-#: addon/globalPlugins/brailleExtender/settings.py:343
+#: addon/globalPlugins/brailleExtender/settings.py:353
msgid "Input braille table for keyboard shortcut keys"
msgstr "таблица брайлевского ввода для сочитаний горячих клавиш."
-#: addon/globalPlugins/brailleExtender/settings.py:345
+#: addon/globalPlugins/brailleExtender/settings.py:355
msgid "None"
msgstr "Ничего"
-#: addon/globalPlugins/brailleExtender/settings.py:348
+#: addon/globalPlugins/brailleExtender/settings.py:358
msgid "Secondary output table to use"
msgstr "Вторичная брайлевская таблица для исьпользования"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:352
-msgid "Display tab signs as spaces"
-msgstr "Показывать знаки табуляции как пробелы"
+#: addon/globalPlugins/brailleExtender/settings.py:362
+msgid "Display &tab signs as spaces"
+msgstr "Показывать знаки табуляции как пробел&ы"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:356
-msgid "Number of space for a tab sign"
-msgstr "Число пробелов для одного знака табуляции"
+#: addon/globalPlugins/brailleExtender/settings.py:366
+msgid "Number of &space for a tab sign"
+msgstr "Число &пробелов для одного знака табуляции"
-#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:358
-msgid "Prevent undefined characters with Hexadecimal Unicode value"
-msgstr "Запрещение показывания юникод номеров при неопределённых знаках"
+#: addon/globalPlugins/brailleExtender/settings.py:367
+msgid "Alternative and &custom braille tables"
+msgstr "Альтернативные и &пользовательские брайлевские таблицы"
-#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:361
+#: addon/globalPlugins/brailleExtender/settings.py:387
msgid ""
-"Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+"NVDA must be restarted for some new options to take effect. Do you want "
+"restart now?"
msgstr ""
-"Показывать неопределённые знаки как например: 0 для пустой клетки, 12345678, "
-"6-123456)"
-
-#: addon/globalPlugins/brailleExtender/settings.py:363
-msgid "Alternative and &custom braille tables"
-msgstr "Альтернативные и &пользовательские брайлевские таблицы"
+"Чтобы некоторые новые опции вступили в силу, NVDA будет перезагружен. Хотите "
+"перезагрузить её сейчас?"
-#: addon/globalPlugins/brailleExtender/settings.py:420
+#: addon/globalPlugins/brailleExtender/settings.py:425
msgid "input and output"
msgstr "Ввод и вывод"
-#: addon/globalPlugins/brailleExtender/settings.py:422
+#: addon/globalPlugins/brailleExtender/settings.py:427
msgid "input only"
msgstr "Только ввод"
-#: addon/globalPlugins/brailleExtender/settings.py:423
+#: addon/globalPlugins/brailleExtender/settings.py:428
msgid "output only"
msgstr "Только вывод"
-#: addon/globalPlugins/brailleExtender/settings.py:454
+#: addon/globalPlugins/brailleExtender/settings.py:459
#, python-format
msgid "Table name: %s"
msgstr "Имя таблицы: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:455
+#: addon/globalPlugins/brailleExtender/settings.py:460
#, python-format
msgid "File name: %s"
msgstr "Имя файла: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:456
+#: addon/globalPlugins/brailleExtender/settings.py:461
#, python-format
msgid "In switches: %s"
msgstr "В роторах: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:457
+#: addon/globalPlugins/brailleExtender/settings.py:462
msgid "About this table"
msgstr "Об этой таблице"
-#: addon/globalPlugins/brailleExtender/settings.py:460
+#: addon/globalPlugins/brailleExtender/settings.py:465
msgid ""
"In this combo box, all tables are present. Press space bar, left or right "
"arrow keys to include (or not) the selected table in switches"
@@ -1457,7 +1906,7 @@ msgstr ""
"предпочетаемую таблицу в список таблиц ввода и вывода для быстрого "
"переключения между ними."
-#: addon/globalPlugins/brailleExtender/settings.py:461
+#: addon/globalPlugins/brailleExtender/settings.py:466
msgid ""
"You can also press 'comma' key to get the file name of the selected table "
"and 'semicolon' key to view miscellaneous infos on the selected table"
@@ -1465,126 +1914,126 @@ msgstr ""
"вы также можете нажать запятую, чтобы узнать имя файла выбранной таблицы или "
"многоточее, чтобы получить дополнительную информацию о таблице."
-#: addon/globalPlugins/brailleExtender/settings.py:462
+#: addon/globalPlugins/brailleExtender/settings.py:467
msgid "Contextual help"
msgstr "Контекстная помощь"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:478
+#: addon/globalPlugins/brailleExtender/settings.py:483
msgid "Custom braille tables"
msgstr "Модифицированные брайлевские таблицы"
-#: addon/globalPlugins/brailleExtender/settings.py:488
+#: addon/globalPlugins/brailleExtender/settings.py:493
msgid "Use a custom table as input table"
msgstr "Использовать модифицированную таблицу для ввода"
-#: addon/globalPlugins/brailleExtender/settings.py:489
+#: addon/globalPlugins/brailleExtender/settings.py:494
msgid "Use a custom table as output table"
msgstr "Использовать модифицированную таблицу как таблицу ввода"
-#: addon/globalPlugins/brailleExtender/settings.py:490
+#: addon/globalPlugins/brailleExtender/settings.py:495
msgid "&Add a braille table"
msgstr "&Добавить брайлевскую таблицу"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:514
+#: addon/globalPlugins/brailleExtender/settings.py:519
msgid "Add a braille table"
msgstr "добавление брайлевской таблицы"
-#: addon/globalPlugins/brailleExtender/settings.py:520
+#: addon/globalPlugins/brailleExtender/settings.py:525
msgid "Display name"
msgstr "Имя дисплея"
-#: addon/globalPlugins/brailleExtender/settings.py:521
+#: addon/globalPlugins/brailleExtender/settings.py:526
msgid "Description"
msgstr "Описание"
-#: addon/globalPlugins/brailleExtender/settings.py:522
+#: addon/globalPlugins/brailleExtender/settings.py:527
msgid "Path"
msgstr "путь"
-#: addon/globalPlugins/brailleExtender/settings.py:523
-#: addon/globalPlugins/brailleExtender/settings.py:594
+#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:599
msgid "&Browse"
msgstr "обзор"
-#: addon/globalPlugins/brailleExtender/settings.py:526
+#: addon/globalPlugins/brailleExtender/settings.py:531
msgid "Contracted (grade 2) braille table"
msgstr "Брайлевская таблица 2-ой ступени (краткопись)"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Available for"
msgstr "Доступны для"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input and output"
msgstr "Ввод и вывод"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input only"
msgstr "Только ввод"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Output only"
msgstr "Только вывод"
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Choose a table file"
msgstr "Выберьте файл брайлевской таблицы"
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Liblouis table files"
msgstr "Файлы таблиц Либлуис"
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Please specify a display name."
msgstr "пожалуйста, уточните модель брайлевского дисплея."
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Invalid display name"
msgstr "Неправильое имя брайлевского дисплея"
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon/globalPlugins/brailleExtender/settings.py:555
#, python-format
msgid "The specified path is not valid (%s)."
msgstr "Определённый путь неправильный (%s)."
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon/globalPlugins/brailleExtender/settings.py:555
msgid "Invalid path"
msgstr "Неправильный путь"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:578
+#: addon/globalPlugins/brailleExtender/settings.py:583
msgid "Quick launches"
msgstr "Быстрый запуск"
-#: addon/globalPlugins/brailleExtender/settings.py:589
+#: addon/globalPlugins/brailleExtender/settings.py:594
msgid "&Gestures"
msgstr "&Жесты"
-#: addon/globalPlugins/brailleExtender/settings.py:592
+#: addon/globalPlugins/brailleExtender/settings.py:597
msgid "Location (file path, URL or command)"
msgstr "Местоположение (путь к файлу, URL или жест)"
-#: addon/globalPlugins/brailleExtender/settings.py:595
+#: addon/globalPlugins/brailleExtender/settings.py:600
msgid "&Remove this gesture"
msgstr "удалить этот жест"
-#: addon/globalPlugins/brailleExtender/settings.py:596
+#: addon/globalPlugins/brailleExtender/settings.py:601
msgid "&Add a quick launch"
msgstr "добавить клавишу для быстрого запуска"
-#: addon/globalPlugins/brailleExtender/settings.py:625
+#: addon/globalPlugins/brailleExtender/settings.py:630
msgid "Unable to associate this gesture. Please enter another, now"
msgstr ""
"невозможно ассоциировать данный жест. пожалуйста, введите другой жест сейчас."
-#: addon/globalPlugins/brailleExtender/settings.py:630
+#: addon/globalPlugins/brailleExtender/settings.py:635
msgid "Out of capture"
msgstr "Вне жеста"
-#: addon/globalPlugins/brailleExtender/settings.py:632
+#: addon/globalPlugins/brailleExtender/settings.py:637
#, python-brace-format
msgid ""
"Please enter a gesture from your {NAME_BRAILLE_DISPLAY} braille display. "
@@ -1593,21 +2042,21 @@ msgstr ""
"Пожалуйста, введите жест с ващего брайлевского дисплея "
"{NAME_BRAILLE_DISPLAY}. Для отмены, пожалуйста, нажмите пробел."
-#: addon/globalPlugins/brailleExtender/settings.py:640
+#: addon/globalPlugins/brailleExtender/settings.py:645
#, python-format
msgid "OK. The gesture captured is %s"
msgstr "OK. жест назначен на клавиши %s"
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Are you sure to want to delete this shorcut?"
msgstr "вы действительно хотите удалить данное сочитание горячих клавиш?"
-#: addon/globalPlugins/brailleExtender/settings.py:666
+#: addon/globalPlugins/brailleExtender/settings.py:671
#, python-brace-format
msgid "{BRAILLEGESTURE} removed"
msgstr "{BRAILLEGESTURE} удален"
-#: addon/globalPlugins/brailleExtender/settings.py:677
+#: addon/globalPlugins/brailleExtender/settings.py:682
msgid ""
"Please enter the desired gesture for the new quick launch. Press \"space bar"
"\" to cancel"
@@ -1615,107 +2064,154 @@ msgstr ""
"Пожалуйста, введите жалаемый вами жест для данной функции. нажмите \"пробел"
"\" для отменения"
-#: addon/globalPlugins/brailleExtender/settings.py:680
+#: addon/globalPlugins/brailleExtender/settings.py:685
msgid "Don't add a quick launch"
msgstr "Ек добавлять быстрый запуск"
-#: addon/globalPlugins/brailleExtender/settings.py:706
+#: addon/globalPlugins/brailleExtender/settings.py:711
#, python-brace-format
msgid "Choose a file for {0}"
msgstr "Выберьте фал для {0}"
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Please create or select a quick launch first"
msgstr ""
"Пожалуйста, вам надо сначала создать или выбрать команду быстрого запуска"
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Error"
msgstr "Ошибка"
-#: addon/globalPlugins/brailleExtender/settings.py:723
+#: addon/globalPlugins/brailleExtender/settings.py:728
msgid "Profiles editor"
msgstr "редактор профилей"
-#: addon/globalPlugins/brailleExtender/settings.py:734
+#: addon/globalPlugins/brailleExtender/settings.py:739
msgid "You must have a braille display to editing a profile"
msgstr "Чтобы редактировать профиль, вам нужен брайлевский дисплей"
-#: addon/globalPlugins/brailleExtender/settings.py:738
+#: addon/globalPlugins/brailleExtender/settings.py:743
msgid ""
"Profiles directory is not present or accessible. Unable to edit profiles"
msgstr ""
"папка профилей отсутствует или недоступна. невозможно редактировать профили."
-#: addon/globalPlugins/brailleExtender/settings.py:744
+#: addon/globalPlugins/brailleExtender/settings.py:749
msgid "Profile to edit"
msgstr "Профиль для редактирования"
-#: addon/globalPlugins/brailleExtender/settings.py:750
+#: addon/globalPlugins/brailleExtender/settings.py:755
msgid "Gestures category"
msgstr "Категория жестов"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Single keys"
msgstr "ординарные клавиши"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Practical shortcuts"
msgstr "Полезные клавишы"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "NVDA commands"
msgstr "Команды NVDA"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Addon features"
msgstr "Функции дополнения"
-#: addon/globalPlugins/brailleExtender/settings.py:755
+#: addon/globalPlugins/brailleExtender/settings.py:760
msgid "Gestures list"
msgstr "Список жестов"
-#: addon/globalPlugins/brailleExtender/settings.py:764
+#: addon/globalPlugins/brailleExtender/settings.py:769
msgid "Add gesture"
msgstr "Добавить жест"
-#: addon/globalPlugins/brailleExtender/settings.py:766
+#: addon/globalPlugins/brailleExtender/settings.py:771
msgid "Remove this gesture"
msgstr "Удалить этот жест"
-#: addon/globalPlugins/brailleExtender/settings.py:769
+#: addon/globalPlugins/brailleExtender/settings.py:774
msgid "Assign a braille gesture"
msgstr "назначте брайлевский жест"
-#: addon/globalPlugins/brailleExtender/settings.py:776
+#: addon/globalPlugins/brailleExtender/settings.py:781
msgid "Remove this profile"
msgstr "Удалить этот профиль"
-#: addon/globalPlugins/brailleExtender/settings.py:779
+#: addon/globalPlugins/brailleExtender/settings.py:784
msgid "Add a profile"
msgstr "Добавить профиль"
-#: addon/globalPlugins/brailleExtender/settings.py:785
+#: addon/globalPlugins/brailleExtender/settings.py:790
msgid "Name for the new profile"
msgstr "Имя нового профиля"
-#: addon/globalPlugins/brailleExtender/settings.py:791
+#: addon/globalPlugins/brailleExtender/settings.py:796
msgid "Create"
msgstr "Создать"
-#: addon/globalPlugins/brailleExtender/settings.py:854
+#: addon/globalPlugins/brailleExtender/settings.py:859
msgid "Unable to load this profile. Malformed or inaccessible file"
msgstr "невозможно загрузить данный профиль. файл поврежден или недоступен."
-#: addon/globalPlugins/brailleExtender/settings.py:873
+#: addon/globalPlugins/brailleExtender/settings.py:878
msgid "Undefined"
msgstr "Неопределено"
#. Translators: title of add-on parameters dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:902
+#: addon/globalPlugins/brailleExtender/settings.py:909
msgid "Settings"
msgstr "Настройки"
+#. Translators: label of a dialog.
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:244
+msgid "Representation &method"
+msgstr "&Метод отображения"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:252
+#, python-brace-format
+msgid "Other dot pattern (e.g.: {dotPatternSample})"
+msgstr "Другая комбинация точек (напр: {dotPatternSample})"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:254
+#, python-brace-format
+msgid "Other sign/pattern (e.g.: {signPatternSample})"
+msgstr "Другой знак или комбинация точек (например.: {signPatternSample})"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:272
+msgid "Specify another pattern"
+msgstr "пожалуйста, определите другие точки"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:276
+msgid "Describe undefined characters if possible"
+msgstr "Описывать неопределенные знаки, если возможно"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:284
+msgid "Also describe extended characters (e.g.: country flags)"
+msgstr "Такле описывает расширенные знаки (такие как.: флаги государств)"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:291
+msgid "Start tag"
+msgstr "Начальная разметка"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:296
+msgid "End tag"
+msgstr "Окончательная разметка"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:307
+msgid "Language"
+msgstr "Язык"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:310
+msgid "Use the current output table"
+msgstr "Использовать актуальную таблицу вывода"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:323
+msgid "Braille table"
+msgstr "Брайлевская таблица"
+
#: addon/globalPlugins/brailleExtender/updateCheck.py:61
#, python-format
msgid "New version available, version %s. Do you want to download it now?"
@@ -1747,69 +2243,69 @@ msgstr "Диалоговое окно обновления уже открыто
msgid "{addonName}'s update"
msgstr "Обновление {addonName}"
-#: addon/globalPlugins/brailleExtender/utils.py:189
+#: addon/globalPlugins/brailleExtender/utils.py:194
msgid "Reload successful"
msgstr "Перезагрузка успешна"
-#: addon/globalPlugins/brailleExtender/utils.py:192
+#: addon/globalPlugins/brailleExtender/utils.py:197
msgid "Reload failed"
msgstr "Перезагрузка неуспешна"
-#: addon/globalPlugins/brailleExtender/utils.py:197
-#: addon/globalPlugins/brailleExtender/utils.py:207
+#: addon/globalPlugins/brailleExtender/utils.py:203
+#: addon/globalPlugins/brailleExtender/utils.py:218
msgid "Not a character"
msgstr "не является знаком"
-#: addon/globalPlugins/brailleExtender/utils.py:201
-msgid "unknown"
-msgstr "Неизвестный"
+#: addon/globalPlugins/brailleExtender/utils.py:208
+msgid "N/A"
+msgstr "недоступно"
-#: addon/globalPlugins/brailleExtender/utils.py:330
+#: addon/globalPlugins/brailleExtender/utils.py:312
msgid "Available combinations"
msgstr "Доступные сочетания"
-#: addon/globalPlugins/brailleExtender/utils.py:332
+#: addon/globalPlugins/brailleExtender/utils.py:314
msgid "One combination available"
msgstr "Одно сочетание доступно"
-#: addon/globalPlugins/brailleExtender/utils.py:349
+#: addon/globalPlugins/brailleExtender/utils.py:325
msgid "space"
msgstr "пробел"
-#: addon/globalPlugins/brailleExtender/utils.py:350
+#: addon/globalPlugins/brailleExtender/utils.py:326
msgid "left SHIFT"
msgstr "Левый шифт"
-#: addon/globalPlugins/brailleExtender/utils.py:351
+#: addon/globalPlugins/brailleExtender/utils.py:327
msgid "right SHIFT"
msgstr "правый ШИФТ"
-#: addon/globalPlugins/brailleExtender/utils.py:352
+#: addon/globalPlugins/brailleExtender/utils.py:328
msgid "left selector"
msgstr "Левое выбирание"
-#: addon/globalPlugins/brailleExtender/utils.py:353
+#: addon/globalPlugins/brailleExtender/utils.py:329
msgid "right selector"
msgstr "Правое выбирание"
-#: addon/globalPlugins/brailleExtender/utils.py:354
+#: addon/globalPlugins/brailleExtender/utils.py:330
msgid "dot"
msgstr "точка"
-#: addon/globalPlugins/brailleExtender/utils.py:369
+#: addon/globalPlugins/brailleExtender/utils.py:345
#, python-brace-format
msgid "{gesture} on {brailleDisplay}"
msgstr "{gesture} на {brailleDisplay}"
-#: addon/globalPlugins/brailleExtender/utils.py:446
+#: addon/globalPlugins/brailleExtender/utils.py:422
msgid "No text"
msgstr "Нет текста"
-#: addon/globalPlugins/brailleExtender/utils.py:455
+#: addon/globalPlugins/brailleExtender/utils.py:431
msgid "Not text"
msgstr "вне текста"
-#: addon/globalPlugins/brailleExtender/utils.py:475
+#: addon/globalPlugins/brailleExtender/utils.py:451
msgid "No text selected"
msgstr "Нет выделенного текста"
@@ -1928,6 +2424,27 @@ msgid "actions and quick navigation through a rotor"
msgstr ""
"выполнение некоторых действий и функций быстрой навигации посредством ротора."
+#~ msgid "Braille &dictionaries"
+#~ msgstr "Брайлевские &словари"
+
+#~ msgid "%s braille display"
+#~ msgstr "Брайлевский дисплей %s"
+
+#~ msgid "profile loaded: %s"
+#~ msgstr "профиль загружен: %s"
+
+#~ msgid "Prevent undefined characters with Hexadecimal Unicode value"
+#~ msgstr "Запрещение показывания юникод номеров при неопределённых знаках"
+
+#~ msgid ""
+#~ "Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+#~ msgstr ""
+#~ "Показывать неопределённые знаки как например: 0 для пустой клетки, "
+#~ "12345678, 6-123456)"
+
+#~ msgid "unknown"
+#~ msgstr "Неизвестный"
+
#~ msgid ""
#~ "In virtual documents (HTML/PDF/…) you can navigate element type by "
#~ "element type using keyboard. These navigation keys should work with your "
@@ -1963,9 +2480,6 @@ msgstr ""
#~ msgid "Braille tables configuration"
#~ msgstr "Настройки брайлевских таблиц"
-#~ msgid "Text attributes configuration"
-#~ msgstr "Настройки форматирования текста"
-
#~ msgid "Role &labels"
#~ msgstr "&Сокращения элементов"
@@ -2015,9 +2529,6 @@ msgstr ""
#~ msgid "Enable Attribra"
#~ msgstr "включить отображение атребутов текста"
-#~ msgid "braille tables"
-#~ msgstr "Брайлевские таблицы"
-
#~ msgid "Unable to save or download update file. Opening your browser"
#~ msgstr "Невозможно скачать файл обновления. будет открыт веббраузер"
@@ -2083,9 +2594,6 @@ msgstr ""
#~ msgid "Improvement concerning"
#~ msgstr "улучшение"
-#~ msgid "profiles"
-#~ msgstr "профили"
-
#~ msgid ""
#~ "Profiles are now reloaded automatically if braille display changes during "
#~ "execution"
From 0afbba8ed052c08b930a94f1d1e8cdb319978fd7 Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Thu, 16 Apr 2020 15:14:24 +0200
Subject: [PATCH 64/87] second russian translation. translated near all things.
documentation left
---
addon/locale/ru/LC_MESSAGES/nvda.po | 74 +++++++++++++++++------------
1 file changed, 43 insertions(+), 31 deletions(-)
diff --git a/addon/locale/ru/LC_MESSAGES/nvda.po b/addon/locale/ru/LC_MESSAGES/nvda.po
index 9bc7c2fc..3941f112 100644
--- a/addon/locale/ru/LC_MESSAGES/nvda.po
+++ b/addon/locale/ru/LC_MESSAGES/nvda.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: BrailleExtender dev-18.08.04-105046\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
"POT-Creation-Date: 2020-04-15 09:24+0200\n"
-"PO-Revision-Date: 2020-04-16 14:36+0100\n"
+"PO-Revision-Date: 2020-04-16 15:13+0100\n"
"Last-Translator: Zvonimir \n"
"Language-Team: \n"
"Language: ru_RU\n"
@@ -396,7 +396,7 @@ msgstr "Выключено"
#: addon/globalPlugins/brailleExtender/__init__.py:571
#, python-format
msgid "One hand mode %s"
-msgstr ""
+msgstr "Режим одной руки %s"
#: addon/globalPlugins/brailleExtender/__init__.py:572
msgid "Enable/disable one hand mode feature"
@@ -524,7 +524,7 @@ msgstr ""
#: addon/globalPlugins/brailleExtender/__init__.py:663
#, python-format
msgid "Advanced braille input mode %s"
-msgstr ""
+msgstr "Режим расширенного брайлевского ввода %s"
#: addon/globalPlugins/brailleExtender/__init__.py:664
msgid "Enable/disable the advanced input mode"
@@ -533,11 +533,11 @@ msgstr "Включить или выключить режим расширенн
#: addon/globalPlugins/brailleExtender/__init__.py:669
#, python-format
msgid "Description of undefined characters %s"
-msgstr ""
+msgstr "Описание неопределённых знаков %s"
#: addon/globalPlugins/brailleExtender/__init__.py:671
msgid "Enable/disable description of undefined characters"
-msgstr ""
+msgstr "Включить или выключить описание неопределённых знаков"
#: addon/globalPlugins/brailleExtender/__init__.py:675
msgid "Get the cursor position of text"
@@ -825,25 +825,25 @@ msgstr "Braille Extender"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
msgid "HUC8"
-msgstr ""
+msgstr "HUC8"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:64
#: addon/globalPlugins/brailleExtender/undefinedChars.py:258
msgid "Hexadecimal"
-msgstr ""
+msgstr "шестнадцатиричный"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:65
#: addon/globalPlugins/brailleExtender/undefinedChars.py:259
msgid "Decimal"
-msgstr ""
+msgstr "Десятиричный"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:66
#: addon/globalPlugins/brailleExtender/undefinedChars.py:260
msgid "Octal"
-msgstr ""
+msgstr "Восмиричный"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:67
@@ -855,7 +855,7 @@ msgstr "Двоичная"
#: addon/globalPlugins/brailleExtender/addonDoc.py:46
#: addon/globalPlugins/brailleExtender/undefinedChars.py:239
msgid "Representation of undefined characters"
-msgstr ""
+msgstr "Режим отображения неопределённых знаков"
#: addon/globalPlugins/brailleExtender/addonDoc.py:48
msgid ""
@@ -863,16 +863,19 @@ msgid ""
"represented within a braille table. To do so, go to the braille table "
"settings. You can choose between the following representations:"
msgstr ""
+"Дополнение даёт вам возможность настройки отображения неопределённых знаков "
+"внутри брайлевской таблицы. Чтобы настроить этот режим, зайдите в настройки "
+"брайлевских таблиц. Возможен выбор следующих отображений:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:52
msgid ""
"You can also combine this option with the “describe the character if "
"possible” setting."
-msgstr ""
+msgstr "Эту опцию возможно сочетать с опцией “описывать знаки если возможно”."
#: addon/globalPlugins/brailleExtender/addonDoc.py:54
msgid "Notes:"
-msgstr ""
+msgstr "Примечания:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:56
msgid ""
@@ -880,11 +883,14 @@ msgid ""
"best combination is the usage of the HUC8 representation without checking "
"the “describe character if possible” option."
msgstr ""
+"Чтобы различать неопределённые знаки при увеличении места на брайлевском "
+"дисплее, самая лучшая комбинация это использование HUC8 отображения без "
+"включенной опции “Описать неопределённые знаки если возможно”."
#: addon/globalPlugins/brailleExtender/addonDoc.py:57
#, python-brace-format
msgid "To learn more about the HUC representation, see {url}"
-msgstr ""
+msgstr "Чтобы узнать больше об отображении HUC, посмотрите {url}"
#: addon/globalPlugins/brailleExtender/addonDoc.py:58
msgid ""
@@ -892,10 +898,13 @@ msgid ""
"take precedence over character descriptions, which also take precedence over "
"the chosen representation for undefined characters."
msgstr ""
+"Имейте в виду, что определения в ваших таблицах или словарях таблиц имеют "
+"приоритет над описаниями знаков, которые тоже имеют приоритет над выбранными "
+"отображениями неопределённых знаков."
#: addon/globalPlugins/brailleExtender/addonDoc.py:61
msgid "Getting Current Character Info"
-msgstr ""
+msgstr "получение информации об актуальном знаке"
#: addon/globalPlugins/brailleExtender/addonDoc.py:63
msgid ""
@@ -1081,7 +1090,7 @@ msgstr ""
#: addon/globalPlugins/brailleExtender/addonDoc.py:131
msgid "Etc."
-msgstr ""
+msgstr "Итд."
#: addon/globalPlugins/brailleExtender/addonDoc.py:150
msgid "Documentation"
@@ -1170,7 +1179,7 @@ msgstr "Датский"
#: addon/globalPlugins/brailleExtender/addonDoc.py:285
msgid "English and French"
-msgstr ""
+msgstr "Английский и французский"
#: addon/globalPlugins/brailleExtender/addonDoc.py:286
msgid "German"
@@ -1261,7 +1270,7 @@ msgstr "Словарные &статьи"
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:131
msgid "Abbreviation"
-msgstr ""
+msgstr "Сокращение"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:132
msgid "Replace by"
@@ -1311,7 +1320,7 @@ msgstr "Добавить словарь"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:221
msgid "File doesn't exist yet"
-msgstr ""
+msgstr "Файл ещё не существует"
#. Translators: This is the label for the edit dictionary entry dialog.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:242
@@ -1332,15 +1341,15 @@ msgstr "&Заменить с"
#. Translators: title of a dialog.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:276
msgid "Advanced input mode"
-msgstr ""
+msgstr "Режим расширенного ввода"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:284
msgid "E&xit the advanced input mode after typing one pattern"
-msgstr ""
+msgstr "&Выйти из разсширенного режима ввода после набора одной комбинации"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:291
msgid "Escape sign for Unicode values"
-msgstr ""
+msgstr "Знак ескейп для значений юникод"
#: addon/globalPlugins/brailleExtender/configBE.py:54
#: addon/globalPlugins/brailleExtender/undefinedChars.py:248
@@ -1350,45 +1359,45 @@ msgstr "Использовать поведение брайлевской та
#: addon/globalPlugins/brailleExtender/configBE.py:55
#: addon/globalPlugins/brailleExtender/undefinedChars.py:249
msgid "Dots 1-8 (⣿)"
-msgstr ""
+msgstr "Точки 1-8 (⣿)"
#: addon/globalPlugins/brailleExtender/configBE.py:56
#: addon/globalPlugins/brailleExtender/undefinedChars.py:250
msgid "Dots 1-6 (⠿)"
-msgstr ""
+msgstr "Точки 1-6 (⠿)"
#: addon/globalPlugins/brailleExtender/configBE.py:57
#: addon/globalPlugins/brailleExtender/undefinedChars.py:251
msgid "Empty cell (⠀)"
-msgstr ""
+msgstr "Пустая клетка (⠀)"
#: addon/globalPlugins/brailleExtender/configBE.py:58
msgid "Other dot pattern (e.g.: 6-123456)"
-msgstr ""
+msgstr "Другая комбинация точек (например.: 6-123456)"
#: addon/globalPlugins/brailleExtender/configBE.py:59
#: addon/globalPlugins/brailleExtender/undefinedChars.py:253
msgid "Question mark (depending output table)"
-msgstr ""
+msgstr "Вопросительный знак (зависит от таблицы вывода)"
#: addon/globalPlugins/brailleExtender/configBE.py:60
msgid "Other sign/pattern (e.g.: \\, ??)"
-msgstr ""
+msgstr "другой знак или комбинация точек (например.: \\, ??)"
#: addon/globalPlugins/brailleExtender/configBE.py:61
#: addon/globalPlugins/brailleExtender/undefinedChars.py:255
msgid "Hexadecimal, Liblouis style"
-msgstr ""
+msgstr "Шестнадцатиричный, Стиль Liblouis"
#: addon/globalPlugins/brailleExtender/configBE.py:62
#: addon/globalPlugins/brailleExtender/undefinedChars.py:256
msgid "Hexadecimal, HUC8"
-msgstr ""
+msgstr "Шестнадцатиричный, HUC8"
#: addon/globalPlugins/brailleExtender/configBE.py:63
#: addon/globalPlugins/brailleExtender/undefinedChars.py:257
msgid "Hexadecimal, HUC6"
-msgstr ""
+msgstr "Шестнадцатиричный, HUC6"
#: addon/globalPlugins/brailleExtender/configBE.py:70
#: addon/globalPlugins/brailleExtender/configBE.py:77
@@ -1440,17 +1449,20 @@ msgstr "Режим просмотра"
#: addon/globalPlugins/brailleExtender/configBE.py:102
msgid "Fill a cell in two stages on both sides"
-msgstr ""
+msgstr "Заполнять клетку в двух шагах с обеих сторон"
#: addon/globalPlugins/brailleExtender/configBE.py:103
msgid "Fill a cell in two stages on one side (space = empty side)"
msgstr ""
+"Заполнять клетку в двух шагах на одной стороне (пробел = пустая клетка)"
#: addon/globalPlugins/brailleExtender/configBE.py:104
msgid ""
"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
"character)"
msgstr ""
+"Заполнять клетку точку в точку (каждая из точек является переключателем, "
+"нажмите пробел, чтобы проверить знак)"
#: addon/globalPlugins/brailleExtender/configBE.py:131
msgid "last known"
From 1f3d5f247aba36782061f56a6fe464bb5ef046fe Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Fri, 17 Apr 2020 22:14:32 +0200
Subject: [PATCH 65/87] one more updates, then the correcion goes on
---
addon/locale/pl/LC_MESSAGES/nvda.po | 1494 ++++++++++++++++++---------
addon/locale/ru/LC_MESSAGES/nvda.po | 47 +-
2 files changed, 1044 insertions(+), 497 deletions(-)
diff --git a/addon/locale/pl/LC_MESSAGES/nvda.po b/addon/locale/pl/LC_MESSAGES/nvda.po
index b80383d3..7a848bb4 100644
--- a/addon/locale/pl/LC_MESSAGES/nvda.po
+++ b/addon/locale/pl/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-03-19 09:08+0100\n"
-"PO-Revision-Date: 2020-03-19 09:11+0100\n"
+"POT-Creation-Date: 2020-04-15 09:24+0200\n"
+"PO-Revision-Date: 2020-04-17 13:26+0100\n"
"Last-Translator: zvonimir stanecic \n"
"Language-Team: \n"
"Language: pl\n"
@@ -17,175 +17,176 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
-#: addon/globalPlugins/brailleExtender/__init__.py:61
+#: addon/globalPlugins/brailleExtender/__init__.py:64
msgid "Default"
msgstr "domyślnie"
-#: addon/globalPlugins/brailleExtender/__init__.py:62
+#: addon/globalPlugins/brailleExtender/__init__.py:65
msgid "Moving in the text"
msgstr "Przemieszczanie po tekście"
-#: addon/globalPlugins/brailleExtender/__init__.py:63
+#: addon/globalPlugins/brailleExtender/__init__.py:66
msgid "Text selection"
msgstr "zaznaczanie tekstu"
-#: addon/globalPlugins/brailleExtender/__init__.py:64
+#: addon/globalPlugins/brailleExtender/__init__.py:67
msgid "Objects"
msgstr "Obiekty"
-#: addon/globalPlugins/brailleExtender/__init__.py:65
+#: addon/globalPlugins/brailleExtender/__init__.py:68
msgid "Review"
msgstr "Przegląd"
-#: addon/globalPlugins/brailleExtender/__init__.py:66
+#: addon/globalPlugins/brailleExtender/__init__.py:69
msgid "Links"
msgstr "Linki"
-#: addon/globalPlugins/brailleExtender/__init__.py:67
+#: addon/globalPlugins/brailleExtender/__init__.py:70
msgid "Unvisited links"
msgstr "Linki nieodwiedzone"
-#: addon/globalPlugins/brailleExtender/__init__.py:68
+#: addon/globalPlugins/brailleExtender/__init__.py:71
msgid "Visited links"
msgstr "Linki odwiedzone"
-#: addon/globalPlugins/brailleExtender/__init__.py:69
+#: addon/globalPlugins/brailleExtender/__init__.py:72
msgid "Landmarks"
msgstr "Punkty orientacyjne"
-#: addon/globalPlugins/brailleExtender/__init__.py:70
+#: addon/globalPlugins/brailleExtender/__init__.py:73
msgid "Headings"
msgstr "Nagłówki"
-#: addon/globalPlugins/brailleExtender/__init__.py:71
+#: addon/globalPlugins/brailleExtender/__init__.py:74
msgid "Headings at level 1"
msgstr "Nagłówki pierwszego poziomu"
-#: addon/globalPlugins/brailleExtender/__init__.py:72
+#: addon/globalPlugins/brailleExtender/__init__.py:75
msgid "Headings at level 2"
msgstr "Nagłówki drugiego poziomu"
-#: addon/globalPlugins/brailleExtender/__init__.py:73
+#: addon/globalPlugins/brailleExtender/__init__.py:76
msgid "Headings at level 3"
msgstr "Nagłówki trzeciego poziomu"
-#: addon/globalPlugins/brailleExtender/__init__.py:74
+#: addon/globalPlugins/brailleExtender/__init__.py:77
msgid "Headings at level 4"
msgstr "Nagłówki czwartego poziomu"
-#: addon/globalPlugins/brailleExtender/__init__.py:75
+#: addon/globalPlugins/brailleExtender/__init__.py:78
msgid "Headings at level 5"
msgstr "Nagłówki piątego poziomu"
-#: addon/globalPlugins/brailleExtender/__init__.py:76
+#: addon/globalPlugins/brailleExtender/__init__.py:79
msgid "Headings at level 6"
msgstr "Nagłówki szóstego poziomu"
-#: addon/globalPlugins/brailleExtender/__init__.py:77
+#: addon/globalPlugins/brailleExtender/__init__.py:80
msgid "Lists"
msgstr "Listy"
-#: addon/globalPlugins/brailleExtender/__init__.py:78
+#: addon/globalPlugins/brailleExtender/__init__.py:81
msgid "List items"
msgstr "elementy listy"
-#: addon/globalPlugins/brailleExtender/__init__.py:79
+#: addon/globalPlugins/brailleExtender/__init__.py:82
msgid "Graphics"
msgstr "grafiki"
-#: addon/globalPlugins/brailleExtender/__init__.py:80
+#: addon/globalPlugins/brailleExtender/__init__.py:83
msgid "Block quotes"
msgstr "cytaty"
-#: addon/globalPlugins/brailleExtender/__init__.py:81
+#: addon/globalPlugins/brailleExtender/__init__.py:84
msgid "Buttons"
msgstr "Przyciski"
-#: addon/globalPlugins/brailleExtender/__init__.py:82
+#: addon/globalPlugins/brailleExtender/__init__.py:85
msgid "Form fields"
msgstr "formularze"
-#: addon/globalPlugins/brailleExtender/__init__.py:83
+#: addon/globalPlugins/brailleExtender/__init__.py:86
msgid "Edit fields"
msgstr "pola edycyjne"
-#: addon/globalPlugins/brailleExtender/__init__.py:84
+#: addon/globalPlugins/brailleExtender/__init__.py:87
msgid "Radio buttons"
msgstr "Przyciski opcji"
-#: addon/globalPlugins/brailleExtender/__init__.py:85
+#: addon/globalPlugins/brailleExtender/__init__.py:88
msgid "Combo boxes"
msgstr "Listy rozwijane"
-#: addon/globalPlugins/brailleExtender/__init__.py:86
+#: addon/globalPlugins/brailleExtender/__init__.py:89
msgid "Check boxes"
msgstr "Pola wyboru"
-#: addon/globalPlugins/brailleExtender/__init__.py:87
+#: addon/globalPlugins/brailleExtender/__init__.py:90
msgid "Not link blocks"
msgstr "tekst poza blokiem linków"
-#: addon/globalPlugins/brailleExtender/__init__.py:88
+#: addon/globalPlugins/brailleExtender/__init__.py:91
msgid "Frames"
msgstr "ramki"
-#: addon/globalPlugins/brailleExtender/__init__.py:89
+#: addon/globalPlugins/brailleExtender/__init__.py:92
msgid "Separators"
msgstr "separatory"
-#: addon/globalPlugins/brailleExtender/__init__.py:90
+#: addon/globalPlugins/brailleExtender/__init__.py:93
msgid "Embedded objects"
msgstr "Obiekty zagnieżdżone"
-#: addon/globalPlugins/brailleExtender/__init__.py:91
+#: addon/globalPlugins/brailleExtender/__init__.py:94
msgid "Annotations"
msgstr "Adnotacje"
-#: addon/globalPlugins/brailleExtender/__init__.py:92
+#: addon/globalPlugins/brailleExtender/__init__.py:95
msgid "Spelling errors"
msgstr "błędy pisowni"
-#: addon/globalPlugins/brailleExtender/__init__.py:93
+#: addon/globalPlugins/brailleExtender/__init__.py:96
msgid "Tables"
msgstr "Tabele"
-#: addon/globalPlugins/brailleExtender/__init__.py:94
+#: addon/globalPlugins/brailleExtender/__init__.py:97
msgid "Move in table"
msgstr "Przemieszczanie po tabelach"
-#: addon/globalPlugins/brailleExtender/__init__.py:100
+#: addon/globalPlugins/brailleExtender/__init__.py:103
msgid "If pressed twice, presents the information in browse mode"
msgstr "Po dwukrotnym naciśnięciu, pokazuje informację w trybie przeglądu"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Docu&mentation"
msgstr "&Pomoc"
-#: addon/globalPlugins/brailleExtender/__init__.py:252
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Opens the addon's documentation."
msgstr "Otwiera pomoc dodatku"
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "&Settings"
msgstr "&Ustawienia"
-#: addon/globalPlugins/brailleExtender/__init__.py:258
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "Opens the addons' settings."
msgstr "Otwiera ustawienia dodatku."
-#: addon/globalPlugins/brailleExtender/__init__.py:265
-msgid "Braille &dictionaries"
-msgstr "&Słowniki brajlowskie"
+#: addon/globalPlugins/brailleExtender/__init__.py:270
+#, fuzzy
+msgid "Table &dictionaries"
+msgstr "Słownik tablicy brajlowskiej"
-#: addon/globalPlugins/brailleExtender/__init__.py:265
+#: addon/globalPlugins/brailleExtender/__init__.py:270
msgid "'Braille dictionaries' menu"
msgstr "Meni 'słowniki brajlowskie'"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid "&Global dictionary"
msgstr "&Słownik ogólny"
-#: addon/globalPlugins/brailleExtender/__init__.py:266
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid ""
"A dialog where you can set global dictionary by adding dictionary entries to "
"the list."
@@ -193,11 +194,11 @@ msgstr ""
"Okno dialogowe, w którym można utworzyć słownik globalny dodając wspisy "
"słownikowe do listy."
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid "&Table dictionary"
msgstr "Słownik &tablicy brajlowskiej"
-#: addon/globalPlugins/brailleExtender/__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid ""
"A dialog where you can set table-specific dictionary by adding dictionary "
"entries to the list."
@@ -205,11 +206,11 @@ msgstr ""
"Okno dialogowe, w którym można utworzyć określony dla tablicy brajlowskiej "
"słownik dodając do listy wpisy słownikowe."
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid "Te&mporary dictionary"
msgstr "słownik tym&czasowy"
-#: addon/globalPlugins/brailleExtender/__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid ""
"A dialog where you can set temporary dictionary by adding dictionary entries "
"to the list."
@@ -217,119 +218,130 @@ msgstr ""
"Okno dialogowe, w którym można utworzyć tymczasowy słownik dodając wpisy "
"słownikowe do listy."
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+#, fuzzy
+msgid "Advanced &input mode dictionary"
+msgstr "Dodaj wpis do słownika brajlowskiego"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+#, fuzzy
+msgid "Advanced input mode configuration"
+msgstr "Konfiguracja prezentacji formatowania dokumentu"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "&Quick launches"
msgstr "&Szybkie uruchamianie"
-#: addon/globalPlugins/brailleExtender/__init__.py:273
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "Quick launches configuration"
msgstr "Konfiguracja szybkiego uruchamiania"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "&Profile editor"
msgstr "Edytor &profili"
-#: addon/globalPlugins/brailleExtender/__init__.py:279
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "Profile editor"
msgstr "Edytor profili"
-#: addon/globalPlugins/brailleExtender/__init__.py:285
+#: addon/globalPlugins/brailleExtender/__init__.py:296
msgid "Overview of the current input braille table"
msgstr "przegląd aktualnej tablicy brajlowskiej wprowadzania"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload add-on"
msgstr "Wczytaj dodatek ponownie"
-#: addon/globalPlugins/brailleExtender/__init__.py:287
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload this add-on."
msgstr "Wczytuje dodatek ponownie."
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "&Check for update"
msgstr "&Sprawdź aktualizację"
-#: addon/globalPlugins/brailleExtender/__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "Checks if update is available"
msgstr "Sprawdza dostępność nowej wersji"
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "&Website"
msgstr "St&rona dodatku..."
-#: addon/globalPlugins/brailleExtender/__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "Open addon's website."
msgstr "Otwiera stronę www tego dodatku."
-#: addon/globalPlugins/brailleExtender/__init__.py:293
+#: addon/globalPlugins/brailleExtender/__init__.py:304
msgid "&Braille Extender"
msgstr "&Braille Extender"
-#: addon/globalPlugins/brailleExtender/__init__.py:297
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:319
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Global dictionary"
msgstr "słownik ogólny"
-#: addon/globalPlugins/brailleExtender/__init__.py:302
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:324
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Table dictionary"
msgstr "Słownik tablicy brajlowskiej"
-#: addon/globalPlugins/brailleExtender/__init__.py:306
-#: addon/globalPlugins/brailleExtender/dictionaries.py:342
+#: addon/globalPlugins/brailleExtender/__init__.py:328
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Temporary dictionary"
msgstr "słownik tymczasowy"
-#: addon/globalPlugins/brailleExtender/__init__.py:416
+#: addon/globalPlugins/brailleExtender/__init__.py:438
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
msgid "Character"
msgstr "Znak"
-#: addon/globalPlugins/brailleExtender/__init__.py:417
+#: addon/globalPlugins/brailleExtender/__init__.py:439
msgid "Word"
msgstr "słowo"
-#: addon/globalPlugins/brailleExtender/__init__.py:418
+#: addon/globalPlugins/brailleExtender/__init__.py:440
msgid "Line"
msgstr "Wiersz"
-#: addon/globalPlugins/brailleExtender/__init__.py:419
+#: addon/globalPlugins/brailleExtender/__init__.py:441
msgid "Paragraph"
msgstr "Akapit"
-#: addon/globalPlugins/brailleExtender/__init__.py:420
+#: addon/globalPlugins/brailleExtender/__init__.py:442
msgid "Page"
msgstr "strona"
-#: addon/globalPlugins/brailleExtender/__init__.py:421
+#: addon/globalPlugins/brailleExtender/__init__.py:443
msgid "Document"
msgstr "Dokument"
-#: addon/globalPlugins/brailleExtender/__init__.py:457
+#: addon/globalPlugins/brailleExtender/__init__.py:479
msgid "Not available here"
msgstr "Niedostępne tutaj"
-#: addon/globalPlugins/brailleExtender/__init__.py:475
#: addon/globalPlugins/brailleExtender/__init__.py:497
+#: addon/globalPlugins/brailleExtender/__init__.py:519
msgid "Not supported here or browse mode not enabled"
msgstr "Nie wspierane tutaj lub nie włączony tryb przeglądu"
-#: addon/globalPlugins/brailleExtender/__init__.py:477
+#: addon/globalPlugins/brailleExtender/__init__.py:499
msgid "Select previous rotor setting"
msgstr "Wybierz poprzednie ustawienie rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:478
+#: addon/globalPlugins/brailleExtender/__init__.py:500
msgid "Select next rotor setting"
msgstr "wybierz następne ustawienie rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:526
+#: addon/globalPlugins/brailleExtender/__init__.py:548
msgid "Move to previous item depending rotor setting"
msgstr "przenosi do poprzedniego zależnego ustawienia rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:527
+#: addon/globalPlugins/brailleExtender/__init__.py:549
msgid "Move to next item depending rotor setting"
msgstr "Przenosi do następnego zależnego ustawienia rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:535
+#: addon/globalPlugins/brailleExtender/__init__.py:557
msgid ""
"Varies depending on rotor setting. Eg: in object mode, it's similar to NVDA"
"+enter"
@@ -337,100 +349,116 @@ msgstr ""
"Zależy od ustawienia rotora. Np. w trybie obiektowym, jest to podobne do "
"skrótu NVDA+Enter"
-#: addon/globalPlugins/brailleExtender/__init__.py:538
+#: addon/globalPlugins/brailleExtender/__init__.py:560
msgid "Move to previous item using rotor setting"
msgstr "Przenosi do poprzedniego elementu przy użyciu rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:539
+#: addon/globalPlugins/brailleExtender/__init__.py:561
msgid "Move to next item using rotor setting"
msgstr "Przenosi do następnego elementu przy użyciu rotora"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
+#: addon/globalPlugins/brailleExtender/__init__.py:565
#, python-format
msgid "Braille keyboard %s"
msgstr "Klawiatura brajlowska %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "locked"
msgstr "zablokowane"
-#: addon/globalPlugins/brailleExtender/__init__.py:543
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "unlocked"
msgstr "odblokowane"
-#: addon/globalPlugins/brailleExtender/__init__.py:544
+#: addon/globalPlugins/brailleExtender/__init__.py:566
msgid "Lock/unlock braille keyboard"
msgstr "Odblokuj / zablokuj klawiaturę brajlowską"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#, python-format
-msgid "Dots 7 and 8: %s"
-msgstr "punkty 7 i 8: %s"
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
+msgid "enabled"
+msgstr "włączone"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
msgid "disabled"
msgstr "wyłączone"
-#: addon/globalPlugins/brailleExtender/__init__.py:548
-#: addon/globalPlugins/brailleExtender/__init__.py:555
-#: addon/globalPlugins/brailleExtender/__init__.py:566
-msgid "enabled"
-msgstr "włączone"
+#: addon/globalPlugins/brailleExtender/__init__.py:571
+#, python-format
+msgid "One hand mode %s"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:572
+#, fuzzy
+msgid "Enable/disable one hand mode feature"
+msgstr "włącza lub wyłącza tryb formatowanego brajla amerykańskiego"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#, python-format
+msgid "Dots 7 and 8: %s"
+msgstr "punkty 7 i 8: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:550
+#: addon/globalPlugins/brailleExtender/__init__.py:578
msgid "Hide/show dots 7 and 8"
msgstr "Pokaż/ukryj punkty 7 i 8"
-#: addon/globalPlugins/brailleExtender/__init__.py:555
+#: addon/globalPlugins/brailleExtender/__init__.py:583
#, python-format
msgid "BRF mode: %s"
msgstr "Tryb formatowanego brajla amerykańskiego: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:556
+#: addon/globalPlugins/brailleExtender/__init__.py:584
msgid "Enable/disable BRF mode"
msgstr "włącza lub wyłącza tryb formatowanego brajla amerykańskiego"
-#: addon/globalPlugins/brailleExtender/__init__.py:560
+#: addon/globalPlugins/brailleExtender/__init__.py:588
#, python-format
msgid "Modifier keys %s"
msgstr "Modyfikatory %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:561
+#: addon/globalPlugins/brailleExtender/__init__.py:589
msgid "Lock/unlock modifiers keys"
msgstr "Odblokowuje/blokuje modyfikatory oraz klawiaturę"
-#: addon/globalPlugins/brailleExtender/__init__.py:567
+#: addon/globalPlugins/brailleExtender/__init__.py:595
msgid "Enable/disable Attribra"
msgstr "włącza/wyłącza attribrę"
-#: addon/globalPlugins/brailleExtender/__init__.py:577
+#: addon/globalPlugins/brailleExtender/__init__.py:605
msgid "Quick access to the \"say current line while scrolling in\" option"
msgstr ""
"Szybki dostęp do opcji \"wypowiadaj aktualny wiersz przy przemieszczaniu się"
"\""
-#: addon/globalPlugins/brailleExtender/__init__.py:582
+#: addon/globalPlugins/brailleExtender/__init__.py:610
msgid "Speech on"
msgstr "mowa włączona"
-#: addon/globalPlugins/brailleExtender/__init__.py:585
+#: addon/globalPlugins/brailleExtender/__init__.py:613
msgid "Speech off"
msgstr "Mowa wyłączona"
-#: addon/globalPlugins/brailleExtender/__init__.py:587
+#: addon/globalPlugins/brailleExtender/__init__.py:615
msgid "Toggle speech on or off"
msgstr "Włącza lub wyłącza mowe"
-#: addon/globalPlugins/brailleExtender/__init__.py:595
+#: addon/globalPlugins/brailleExtender/__init__.py:623
msgid "No extra info for this element"
msgstr "Nie ma dodatkowej informacji dla tego elementu"
#. Translators: Input help mode message for report extra infos command.
-#: addon/globalPlugins/brailleExtender/__init__.py:599
+#: addon/globalPlugins/brailleExtender/__init__.py:627
msgid ""
"Reports some extra infos for the current element. For example, the URL on a "
"link"
@@ -438,34 +466,34 @@ msgstr ""
"Pokazuje informacje dodatkowe dla tego elementu. Na przykład adres URL dla "
"linku"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid " Input table"
msgstr " tablica wprowadzania"
-#: addon/globalPlugins/brailleExtender/__init__.py:604
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid "Output table"
msgstr "Tablica wyjścia"
-#: addon/globalPlugins/brailleExtender/__init__.py:606
+#: addon/globalPlugins/brailleExtender/__init__.py:634
#, python-format
msgid "Table overview (%s)"
msgstr "Informacje o tablicy brajlowskiej (%s)"
-#: addon/globalPlugins/brailleExtender/__init__.py:607
+#: addon/globalPlugins/brailleExtender/__init__.py:635
msgid "Display an overview of current input braille table"
msgstr "Wyświetla przegląd aktualnej tablicy brajlowskiej"
-#: addon/globalPlugins/brailleExtender/__init__.py:612
-#: addon/globalPlugins/brailleExtender/__init__.py:620
-#: addon/globalPlugins/brailleExtender/__init__.py:627
+#: addon/globalPlugins/brailleExtender/__init__.py:640
+#: addon/globalPlugins/brailleExtender/__init__.py:648
+#: addon/globalPlugins/brailleExtender/__init__.py:655
msgid "No text selection"
msgstr "Brak zaznaczenia tekstu"
-#: addon/globalPlugins/brailleExtender/__init__.py:613
+#: addon/globalPlugins/brailleExtender/__init__.py:641
msgid "Unicode Braille conversion"
msgstr "Konwersja do brajla unikodowego"
-#: addon/globalPlugins/brailleExtender/__init__.py:614
+#: addon/globalPlugins/brailleExtender/__init__.py:642
msgid ""
"Convert the text selection in unicode braille and display it in a browseable "
"message"
@@ -473,11 +501,11 @@ msgstr ""
"przekształca zaznaczenie tekstu do brajla unikodowego i wyświetla "
"zaznaczenie w wirtualizowanym oknie"
-#: addon/globalPlugins/brailleExtender/__init__.py:621
+#: addon/globalPlugins/brailleExtender/__init__.py:649
msgid "Braille Unicode to cell descriptions"
msgstr "Brajl unikodowy do opisu znaków"
-#: addon/globalPlugins/brailleExtender/__init__.py:622
+#: addon/globalPlugins/brailleExtender/__init__.py:650
msgid ""
"Convert text selection in braille cell descriptions and display it in a "
"browseable message"
@@ -485,11 +513,11 @@ msgstr ""
"Przekształca zaznaczenie tekstu do opisów komórek brajlowskich i wyświetla "
"zaznaczenie w wirtualizowanym oknie"
-#: addon/globalPlugins/brailleExtender/__init__.py:629
+#: addon/globalPlugins/brailleExtender/__init__.py:657
msgid "Cell descriptions to braille Unicode"
msgstr "Opis brajlowskich komórek do brajla unikodowego"
-#: addon/globalPlugins/brailleExtender/__init__.py:630
+#: addon/globalPlugins/brailleExtender/__init__.py:658
msgid ""
"Braille cell description to Unicode Braille. E.g.: in a edit field type "
"'125-24-0-1-123-123'. Then select this text and execute this command"
@@ -498,85 +526,104 @@ msgstr ""
"edycji wpisz '125-24-0-1-123-123'. a następnie zaznacz ten tekst i naciśnij "
"ten skrót klawiszowy"
-#: addon/globalPlugins/brailleExtender/__init__.py:634
+#: addon/globalPlugins/brailleExtender/__init__.py:663
+#, python-format
+msgid "Advanced braille input mode %s"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:664
+#, fuzzy
+msgid "Enable/disable the advanced input mode"
+msgstr "włącza lub wyłącza tryb formatowanego brajla amerykańskiego"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:669
+#, python-format
+msgid "Description of undefined characters %s"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:671
+msgid "Enable/disable description of undefined characters"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/__init__.py:675
msgid "Get the cursor position of text"
msgstr "pokazuje aktualną pozycję kursora w tekście"
-#: addon/globalPlugins/brailleExtender/__init__.py:660
+#: addon/globalPlugins/brailleExtender/__init__.py:701
msgid "Hour and date with autorefresh"
msgstr "Data i godzina z automatycznym odświeżaniem"
-#: addon/globalPlugins/brailleExtender/__init__.py:673
+#: addon/globalPlugins/brailleExtender/__init__.py:714
msgid "Autoscroll stopped"
msgstr "Czytanie automatyczne zatrzymane"
-#: addon/globalPlugins/brailleExtender/__init__.py:680
+#: addon/globalPlugins/brailleExtender/__init__.py:721
msgid "Unable to start autoscroll. More info in NVDA log"
msgstr ""
"Nie można uruchomić automatycznego czytania. więcej informacji znajduje się "
"w dzienniku NVDA."
-#: addon/globalPlugins/brailleExtender/__init__.py:685
+#: addon/globalPlugins/brailleExtender/__init__.py:726
msgid "Enable/disable autoscroll"
msgstr "włącza lub wyłącza czytanie automatyczne"
-#: addon/globalPlugins/brailleExtender/__init__.py:700
+#: addon/globalPlugins/brailleExtender/__init__.py:741
msgid "Increase the master volume"
msgstr "Zwiększa głośność główną"
-#: addon/globalPlugins/brailleExtender/__init__.py:717
+#: addon/globalPlugins/brailleExtender/__init__.py:758
msgid "Decrease the master volume"
msgstr "Zmniejsza głośność główną"
-#: addon/globalPlugins/brailleExtender/__init__.py:723
+#: addon/globalPlugins/brailleExtender/__init__.py:764
msgid "Muted sound"
msgstr "Dźwięk wyciszony"
-#: addon/globalPlugins/brailleExtender/__init__.py:725
+#: addon/globalPlugins/brailleExtender/__init__.py:766
#, python-format
msgid "Unmuted sound (%3d%%)"
msgstr "wyciszenie wyłączone (%3d%%)"
-#: addon/globalPlugins/brailleExtender/__init__.py:731
+#: addon/globalPlugins/brailleExtender/__init__.py:772
msgid "Mute or unmute sound"
msgstr "Wycisz lub nie wyciszaj dźwięku"
-#: addon/globalPlugins/brailleExtender/__init__.py:736
+#: addon/globalPlugins/brailleExtender/__init__.py:777
#, python-format
msgid "Show the %s documentation"
msgstr "Pokazuje pomoc dla %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:774
+#: addon/globalPlugins/brailleExtender/__init__.py:815
msgid "No such file or directory"
msgstr "Niema takiego pliku lub katalogu"
-#: addon/globalPlugins/brailleExtender/__init__.py:776
+#: addon/globalPlugins/brailleExtender/__init__.py:817
msgid "Opens a custom program/file. Go to settings to define them"
msgstr ""
"Otwiera dostosowany program/plik. Proszę wejść do ustawień, aby zdefiniować"
-#: addon/globalPlugins/brailleExtender/__init__.py:783
+#: addon/globalPlugins/brailleExtender/__init__.py:824
#, python-format
msgid "Check for %s updates, and starts the download if there is one"
msgstr ""
"Sprawdza, czy jest dostępna nowa wersja %s ,i rozpoczyna pobieranie, jeśli "
"ją znajdzie."
-#: addon/globalPlugins/brailleExtender/__init__.py:813
+#: addon/globalPlugins/brailleExtender/__init__.py:854
msgid "Increase autoscroll delay"
msgstr "zwiększa oczekiwanie na automatyczne czytanie"
-#: addon/globalPlugins/brailleExtender/__init__.py:814
+#: addon/globalPlugins/brailleExtender/__init__.py:855
msgid "Decrease autoscroll delay"
msgstr "zmniejsza oczekiwanie na automatyczne czytanie"
-#: addon/globalPlugins/brailleExtender/__init__.py:818
-#: addon/globalPlugins/brailleExtender/__init__.py:836
+#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:877
msgid "Please use NVDA 2017.3 minimum for this feature"
msgstr "Proszę używać minimum NVDA 2017.3 dla tej funkcji"
-#: addon/globalPlugins/brailleExtender/__init__.py:820
-#: addon/globalPlugins/brailleExtender/__init__.py:838
+#: addon/globalPlugins/brailleExtender/__init__.py:861
+#: addon/globalPlugins/brailleExtender/__init__.py:879
msgid ""
"You must choose at least two tables for this feature. Please fill in the "
"settings"
@@ -584,49 +631,49 @@ msgstr ""
"Dla tej funkcji należy wybrać chociaż dwie tablice brajlowskie. Proszę "
"uzupełnić ustawienia!"
-#: addon/globalPlugins/brailleExtender/__init__.py:827
+#: addon/globalPlugins/brailleExtender/__init__.py:868
#, python-format
msgid "Input: %s"
msgstr "Wprowadzanie: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:831
+#: addon/globalPlugins/brailleExtender/__init__.py:872
msgid "Switch between his favorite input braille tables"
msgstr "Przełącza pomiędzy ulubionymi tablicami wprowadzania"
-#: addon/globalPlugins/brailleExtender/__init__.py:847
+#: addon/globalPlugins/brailleExtender/__init__.py:888
#, python-format
msgid "Output: %s"
msgstr "wyjście: %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:850
+#: addon/globalPlugins/brailleExtender/__init__.py:891
msgid "Switch between his favorite output braille tables"
msgstr "przełącza pomiędzy ulubionymi tablicami wyjścia"
-#: addon/globalPlugins/brailleExtender/__init__.py:856
+#: addon/globalPlugins/brailleExtender/__init__.py:897
#, python-brace-format
msgid "I⣿O:{I}"
msgstr "I⣿O:{I}"
-#: addon/globalPlugins/brailleExtender/__init__.py:857
+#: addon/globalPlugins/brailleExtender/__init__.py:898
#, python-brace-format
msgid "Input and output: {I}."
msgstr "Wprowadzanie i wyjście: {I}."
-#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:900
#, python-brace-format
msgid "I:{I} ⣿ O: {O}"
msgstr "I:{I} ⣿ O: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:860
+#: addon/globalPlugins/brailleExtender/__init__.py:901
#, python-brace-format
msgid "Input: {I}; Output: {O}"
msgstr "Wprowadzanie: {I}; Wyjście: {O}"
-#: addon/globalPlugins/brailleExtender/__init__.py:864
+#: addon/globalPlugins/brailleExtender/__init__.py:905
msgid "Announce the current input and output braille tables"
msgstr "Wymawia aktualną tablicę wprowadzania i wyjścia"
-#: addon/globalPlugins/brailleExtender/__init__.py:869
+#: addon/globalPlugins/brailleExtender/__init__.py:910
msgid ""
"Gives the Unicode value of the character where the cursor is located and the "
"decimal, binary and octal equivalent."
@@ -634,7 +681,7 @@ msgstr ""
"Pokazuje wartość unikodową znaku, na którym znajduje się kursor, a także "
"decymalny, oktalny i binarny odpowiednik."
-#: addon/globalPlugins/brailleExtender/__init__.py:877
+#: addon/globalPlugins/brailleExtender/__init__.py:918
msgid ""
"Show the output speech for selected text in braille. Useful for emojis for "
"example"
@@ -642,111 +689,111 @@ msgstr ""
"Wyświetlaj tekst wyjściowy (pochodzący od syntezatora mowy) Użyteczne dla "
"emoji"
-#: addon/globalPlugins/brailleExtender/__init__.py:881
+#: addon/globalPlugins/brailleExtender/__init__.py:922
msgid "No shortcut performed from a braille display"
msgstr "Brak skrótu klawiatury brajlowskiej"
-#: addon/globalPlugins/brailleExtender/__init__.py:885
+#: addon/globalPlugins/brailleExtender/__init__.py:926
msgid "Repeat the last shortcut performed from a braille display"
msgstr "Powtórz ostatni skrót klawiatury brajlowskiej"
-#: addon/globalPlugins/brailleExtender/__init__.py:899
+#: addon/globalPlugins/brailleExtender/__init__.py:940
#, python-format
msgid "%s reloaded"
msgstr "%s ponownie wczytany"
-#: addon/globalPlugins/brailleExtender/__init__.py:911
+#: addon/globalPlugins/brailleExtender/__init__.py:952
#, python-format
msgid "Reload %s"
msgstr "Ponownie wczytuje %s"
-#: addon/globalPlugins/brailleExtender/__init__.py:914
+#: addon/globalPlugins/brailleExtender/__init__.py:955
msgid "Reload the first braille display defined in settings"
msgstr "Wczytuję pierwszy ustawiony monitor brajlowski "
-#: addon/globalPlugins/brailleExtender/__init__.py:917
+#: addon/globalPlugins/brailleExtender/__init__.py:958
msgid "Reload the second braille display defined in settings"
msgstr "Wczytuje drugi ustawiony monitor brajlowski"
-#: addon/globalPlugins/brailleExtender/__init__.py:923
+#: addon/globalPlugins/brailleExtender/__init__.py:964
msgid "No braille display specified. No reload to do"
msgstr ""
"Brak określonego monitora brajlowskiego. Nie można niczego ponownie wczytać."
-#: addon/globalPlugins/brailleExtender/__init__.py:960
+#: addon/globalPlugins/brailleExtender/__init__.py:1001
msgid "WIN"
msgstr "WIN"
-#: addon/globalPlugins/brailleExtender/__init__.py:961
+#: addon/globalPlugins/brailleExtender/__init__.py:1002
msgid "CTRL"
msgstr "CTRL"
-#: addon/globalPlugins/brailleExtender/__init__.py:962
+#: addon/globalPlugins/brailleExtender/__init__.py:1003
msgid "SHIFT"
msgstr "SHIFT"
-#: addon/globalPlugins/brailleExtender/__init__.py:963
+#: addon/globalPlugins/brailleExtender/__init__.py:1004
msgid "ALT"
msgstr "ALT"
-#: addon/globalPlugins/brailleExtender/__init__.py:1065
+#: addon/globalPlugins/brailleExtender/__init__.py:1106
msgid "Keyboard shortcut cancelled"
msgstr "Anulowano skrót klawiszowy"
#. /* docstrings for modifier keys */
-#: addon/globalPlugins/brailleExtender/__init__.py:1073
+#: addon/globalPlugins/brailleExtender/__init__.py:1114
msgid "Emulate pressing down "
msgstr "Emuluje wciśnięcie strzałki w dół "
-#: addon/globalPlugins/brailleExtender/__init__.py:1074
+#: addon/globalPlugins/brailleExtender/__init__.py:1115
msgid " on the system keyboard"
msgstr " na klawiaturze systemowej"
-#: addon/globalPlugins/brailleExtender/__init__.py:1130
+#: addon/globalPlugins/brailleExtender/__init__.py:1171
msgid "Current braille view saved"
msgstr "Aktualny brajlowski przegląd zapisany"
-#: addon/globalPlugins/brailleExtender/__init__.py:1133
+#: addon/globalPlugins/brailleExtender/__init__.py:1174
msgid "Buffer cleaned"
msgstr "bufor wyczyszczony"
-#: addon/globalPlugins/brailleExtender/__init__.py:1134
+#: addon/globalPlugins/brailleExtender/__init__.py:1175
msgid "Save the current braille view. Press twice quickly to clean the buffer"
msgstr ""
"Zapisuje aktualny brajlowski przegląd. Proszę nacisnąć dwa razy, aby "
"wyczyszczyć bufor"
-#: addon/globalPlugins/brailleExtender/__init__.py:1139
+#: addon/globalPlugins/brailleExtender/__init__.py:1180
msgid "View saved"
msgstr "Przegląd zapisany"
-#: addon/globalPlugins/brailleExtender/__init__.py:1140
+#: addon/globalPlugins/brailleExtender/__init__.py:1181
msgid "Buffer empty"
msgstr "bufor jest pusty"
-#: addon/globalPlugins/brailleExtender/__init__.py:1141
+#: addon/globalPlugins/brailleExtender/__init__.py:1182
msgid "Show the saved braille view through a flash message"
msgstr "Pokazuje zapisany przegląd brajlu za pomocą wiadomości błyskawicznej"
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Pause"
msgstr "Wstrzymaj"
-#: addon/globalPlugins/brailleExtender/__init__.py:1175
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Resume"
msgstr "Wznów"
-#: addon/globalPlugins/brailleExtender/__init__.py:1217
-#: addon/globalPlugins/brailleExtender/__init__.py:1224
+#: addon/globalPlugins/brailleExtender/__init__.py:1258
+#: addon/globalPlugins/brailleExtender/__init__.py:1265
#, python-format
msgid "Auto test type %d"
msgstr "Typ testu automatycznego %d"
-#: addon/globalPlugins/brailleExtender/__init__.py:1234
+#: addon/globalPlugins/brailleExtender/__init__.py:1275
msgid "Auto test stopped"
msgstr "Testowanie automatyczne zatrzymane"
-#: addon/globalPlugins/brailleExtender/__init__.py:1244
+#: addon/globalPlugins/brailleExtender/__init__.py:1285
msgid ""
"Auto test started. Use the up and down arrow keys to change speed. Use the "
"left and right arrow keys to change test type. Use space key to pause or "
@@ -756,92 +803,359 @@ msgstr ""
"zmienić szybkość lub strzałek lewo prawo, aby zmienić typ testu. Użyj "
"spacji, aby zatrzymać lub wznowić test. Użyj klawisza escape, aby wyjść"
-#: addon/globalPlugins/brailleExtender/__init__.py:1246
+#: addon/globalPlugins/brailleExtender/__init__.py:1287
msgid "Auto test"
msgstr "Testowanie automatyczne"
-#: addon/globalPlugins/brailleExtender/__init__.py:1251
+#: addon/globalPlugins/brailleExtender/__init__.py:1292
msgid "Add dictionary entry or see a dictionary"
msgstr "Dodaj wpis do słownika lub zobacz słownik"
-#: addon/globalPlugins/brailleExtender/__init__.py:1252
+#: addon/globalPlugins/brailleExtender/__init__.py:1293
msgid "Add a entry in braille dictionary"
msgstr "Dodaj wpis do słownika brajlowskiego"
#. Add-on summary, usually the user visible name of the addon.
#. Translators: Summary for this add-on to be shown on installation and add-on information.
-#: addon/globalPlugins/brailleExtender/__init__.py:1299
-#: addon/globalPlugins/brailleExtender/dictionaries.py:111
-#: addon/globalPlugins/brailleExtender/dictionaries.py:367
-#: addon/globalPlugins/brailleExtender/dictionaries.py:374
-#: addon/globalPlugins/brailleExtender/dictionaries.py:378
-#: addon/globalPlugins/brailleExtender/dictionaries.py:382
-#: addon/globalPlugins/brailleExtender/settings.py:33 buildVars.py:24
+#: addon/globalPlugins/brailleExtender/__init__.py:1344
+#: addon/globalPlugins/brailleExtender/dictionaries.py:112
+#: addon/globalPlugins/brailleExtender/dictionaries.py:369
+#: addon/globalPlugins/brailleExtender/dictionaries.py:376
+#: addon/globalPlugins/brailleExtender/dictionaries.py:380
+#: addon/globalPlugins/brailleExtender/dictionaries.py:384
+#: addon/globalPlugins/brailleExtender/settings.py:35
+#: addon/globalPlugins/brailleExtender/settings.py:388 buildVars.py:24
msgid "Braille Extender"
msgstr "Braille Extender"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:33
-#, python-format
-msgid "%s braille display"
-msgstr "Monitor brajlowski %s"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+msgid "HUC8"
+msgstr ""
-#: addon/globalPlugins/brailleExtender/addonDoc.py:34
-#, python-format
-msgid "profile loaded: %s"
-msgstr "Profil wczytany: %s"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:258
+msgid "Hexadecimal"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:65
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:259
+msgid "Decimal"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:66
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:260
+msgid "Octal"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:67
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:261
+#, fuzzy
+msgid "Binary"
+msgstr "Słownik"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/addonDoc.py:46
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:239
+msgid "Representation of undefined characters"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:48
+msgid ""
+"The extension allows you to customize how an undefined character should be "
+"represented within a braille table. To do so, go to the braille table "
+"settings. You can choose between the following representations:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:52
+msgid ""
+"You can also combine this option with the “describe the character if "
+"possible” setting."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:54
+msgid "Notes:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:56
+msgid ""
+"To distinguish the undefined set of characters while maximizing space, the "
+"best combination is the usage of the HUC8 representation without checking "
+"the “describe character if possible” option."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:57
+#, python-brace-format
+msgid "To learn more about the HUC representation, see {url}"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:58
+msgid ""
+"Keep in mind that definitions in tables and those in your table dictionaries "
+"take precedence over character descriptions, which also take precedence over "
+"the chosen representation for undefined characters."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:61
+msgid "Getting Current Character Info"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:63
+msgid ""
+"This feature allows you to obtain various information regarding the "
+"character under the cursor using the current input braille table, such as:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:65
+msgid ""
+"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
+"values; A description of the character if possible; - The Unicode Braille "
+"representation and the Braille dot pattern."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:67
+msgid ""
+"Pressing the defined gesture associated to this function once shows you the "
+"information in a flash message and a double-press displays the same "
+"information in a virtual NVDA buffer."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:69
+msgid ""
+"On supported displays the defined gesture is ⡉+space. No system gestures are "
+"defined by default."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:71
+#, python-brace-format
+msgid ""
+"For example, for the '{chosenChar}' character, we will get the following "
+"information:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:74
+#, fuzzy
+msgid "Advanced Braille Input"
+msgstr "reguły zaawansowane"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:76
+msgid ""
+"This feature allows you to enter any character from its HUC8 representation "
+"or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to "
+"develop abbreviations. To use this function, enter the advanced input mode "
+"and then enter the desired pattern. Default gestures: NVDA+Windows+i or ⡊"
+"+space (on supported displays). Press the same gesture to exit this mode. "
+"Alternatively, an option allows you to automatically exit this mode after "
+"entering a single pattern. "
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:80
+msgid "Specify the basis as follows"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
+msgid "⠭ or ⠓"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
+msgid "for a hexadecimal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:83
+msgid "for a decimal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:84
+msgid "for an octal value"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:87
+msgid ""
+"Enter the value of the character according to the previously selected basis."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:88
+msgid "Press Space to validate."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:91
+msgid ""
+"For abbreviations, you must first add them in the dialog box - Advanced mode "
+"dictionaries -. Then, you just have to enter your abbreviation and press "
+"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:93
+msgid "Here are some examples of sequences to be entered for given characters:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:97
+msgid "Note: the HUC6 input is currently not supported."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:100
+msgid "One-hand mode"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:102
+msgid ""
+"This feature allows you to compose a cell in several steps. This can be "
+"activated in the general settings of the extension's preferences or on the "
+"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
+"Three input methods are available."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:103
+msgid "Method #1: fill a cell in 2 stages on both sides"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:105
+msgid ""
+"With this method, type the left side dots, then the right side dots. If one "
+"side is empty, type the dots correspondig to the opposite side twice, or "
+"type the dots corresponding to the non-empty side in 2 steps."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:106
+#: addon/globalPlugins/brailleExtender/addonDoc.py:115
+msgid "For example:"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:108
+msgid "For ⠛: press dots 1-2 then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:109
+msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:110
+msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:112
+msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:114
+msgid ""
+"Using this method, you can compose a cell with one hand, regardless of which "
+"side of the Braille keyboard you choose. The first step allows you to enter "
+"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
+"An empty cell will be obtained by pressing the space key twice."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:117
+msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:118
+msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:119
+msgid "For ⠘: press space then 1-2, or space then dots 4-5."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:121
+msgid ""
+"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
+"validate the character)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:126
+msgid "Dots 1-2, then dots 4-5, then space."
+msgstr ""
-#: addon/globalPlugins/brailleExtender/addonDoc.py:51
+#: addon/globalPlugins/brailleExtender/addonDoc.py:127
+msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:128
+msgid "Dot 1, then dots 2-4-5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:129
+msgid "Dots 1-2-4, then dot 5, then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:130
+msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:131
+msgid "Etc."
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:150
+#, fuzzy
+msgid "Documentation"
+msgstr "&Pomoc"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:160
+#, fuzzy
+msgid "Driver loaded"
+msgstr "%s ponownie wczytany"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:161
+msgid "Profile"
+msgstr "Profil"
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:175
msgid "Simple keys"
msgstr "Klawisze podstawowe"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:53
+#: addon/globalPlugins/brailleExtender/addonDoc.py:177
msgid "Usual shortcuts"
msgstr "Klawisze zwyczajne"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:55
+#: addon/globalPlugins/brailleExtender/addonDoc.py:179
msgid "Standard NVDA commands"
msgstr "Standardowe skróty NVDA"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:57
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/addonDoc.py:182
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Modifier keys"
msgstr "modyfikatory"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:59
+#: addon/globalPlugins/brailleExtender/addonDoc.py:185
msgid "Quick navigation keys"
msgstr "polecenia szybkiej nawigacji"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:61
+#: addon/globalPlugins/brailleExtender/addonDoc.py:189
msgid "Rotor feature"
msgstr "Funkcje rotora"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:63
+#: addon/globalPlugins/brailleExtender/addonDoc.py:197
msgid "Gadget commands"
msgstr "Polecenia gadżetowe"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:65
+#: addon/globalPlugins/brailleExtender/addonDoc.py:210
msgid "Shortcuts defined outside add-on"
msgstr "Skróty zdefiniowane poza dodatkiem"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:85
+#: addon/globalPlugins/brailleExtender/addonDoc.py:238
msgid "Keyboard configurations provided"
msgstr "domyślne konfiguracje klawiatury"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:87
+#: addon/globalPlugins/brailleExtender/addonDoc.py:241
msgid "Keyboard configurations are"
msgstr "Konfiguracje klawiatury to"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:93
+#: addon/globalPlugins/brailleExtender/addonDoc.py:250
msgid "Warning:"
msgstr "Uwaga:"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:94
+#: addon/globalPlugins/brailleExtender/addonDoc.py:252
msgid "BrailleExtender has no gesture map yet for your braille display."
msgstr ""
"Braille extender jeszcze nie ma mapy gestów do twojego monitora "
"brajlowskiego."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:95
+#: addon/globalPlugins/brailleExtender/addonDoc.py:255
msgid ""
"However, you can still assign your own gestures in the \"Input Gestures\" "
"dialog (under Preferences menu)."
@@ -849,169 +1163,344 @@ msgstr ""
"można jednak przydzielić swoje własne gesty w \"dialogu zdarzeń wejścia\" w "
"\"ustawieniach\" NVDA."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:97
+#: addon/globalPlugins/brailleExtender/addonDoc.py:259
msgid "Add-on gestures on the system keyboard"
msgstr "Polecenia dodatku na klawiaturze systemowej"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:118
+#: addon/globalPlugins/brailleExtender/addonDoc.py:282
msgid "Arabic"
msgstr "arabski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:119
+#: addon/globalPlugins/brailleExtender/addonDoc.py:283
msgid "Croatian"
msgstr "Chorwacki"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:120
+#: addon/globalPlugins/brailleExtender/addonDoc.py:284
msgid "Danish"
msgstr "Duński"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:121
+#: addon/globalPlugins/brailleExtender/addonDoc.py:285
+msgid "English and French"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/addonDoc.py:286
msgid "German"
msgstr "niemiecki"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:122
+#: addon/globalPlugins/brailleExtender/addonDoc.py:287
msgid "Hebrew"
msgstr "hebrajski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:123
+#: addon/globalPlugins/brailleExtender/addonDoc.py:288
msgid "Persian"
msgstr "perski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:124
+#: addon/globalPlugins/brailleExtender/addonDoc.py:289
msgid "Polish"
msgstr "Polski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:125
+#: addon/globalPlugins/brailleExtender/addonDoc.py:290
msgid "Russian"
msgstr "rosyjski"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:127
+#: addon/globalPlugins/brailleExtender/addonDoc.py:293
msgid "Copyrights and acknowledgements"
msgstr "Prawa autorskie i podziękowania"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:129
+#: addon/globalPlugins/brailleExtender/addonDoc.py:299
msgid "and other contributors"
msgstr "i inni współtwórcy"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:133
+#: addon/globalPlugins/brailleExtender/addonDoc.py:303
msgid "Translators"
msgstr "tłumacze"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:139
+#: addon/globalPlugins/brailleExtender/addonDoc.py:313
msgid "Code contributions and other"
msgstr "wkład do kodu i inne"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:139
+#: addon/globalPlugins/brailleExtender/addonDoc.py:315
msgid "Additional third party copyrighted code is included:"
msgstr ""
"Dołączony został dodatkowy kod trzeciej strony, chroniony prawem autorskim:"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:142
+#: addon/globalPlugins/brailleExtender/addonDoc.py:321
msgid "Thanks also to"
msgstr "dziękuję również"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:144
+#: addon/globalPlugins/brailleExtender/addonDoc.py:323
msgid "And thank you very much for all your feedback and comments."
msgstr "I dziękuję państwu za informacje zwrotne i e-maile."
-#: addon/globalPlugins/brailleExtender/addonDoc.py:146
+#: addon/globalPlugins/brailleExtender/addonDoc.py:327
#, python-format
msgid "%s's documentation"
msgstr "Pomoc dla %sa"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:162
+#: addon/globalPlugins/brailleExtender/addonDoc.py:346
#, python-format
msgid "Emulates pressing %s on the system keyboard"
msgstr "emuluje wciśnięcie %s na klawiaturze systemowej"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:169
+#: addon/globalPlugins/brailleExtender/addonDoc.py:357
msgid "description currently unavailable for this shortcut"
msgstr "Opis tego skrótu jest tymczasowo niedostępny"
-#: addon/globalPlugins/brailleExtender/addonDoc.py:187
+#: addon/globalPlugins/brailleExtender/addonDoc.py:377
msgid "caps lock"
msgstr "caps lock"
-#: addon/globalPlugins/brailleExtender/configBE.py:40
-#: addon/globalPlugins/brailleExtender/configBE.py:47
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:105
+#, fuzzy
+msgid "all tables"
+msgstr "Tablice brajlowskie"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:116
+#, fuzzy
+msgid "Advanced input mode dictionary"
+msgstr "Dodaj wpis do słownika brajlowskiego"
+
+#. Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
+#. Translators: The label for the combo box of dictionary entries in table dictionary dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:123
+#: addon/globalPlugins/brailleExtender/dictionaries.py:132
+msgid "Dictionary &entries"
+msgstr "&Wpisy słownika"
+
+#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:131
+msgid "Abbreviation"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:132
+#, fuzzy
+msgid "Replace by"
+msgstr "Zamiana"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:133
+#, fuzzy
+msgid "Input table"
+msgstr " tablica wprowadzania"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
+#. Translators: The label for a button in table dictionaries dialog to add new entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:139
+#: addon/globalPlugins/brailleExtender/dictionaries.py:149
+msgid "&Add"
+msgstr "&Dodaj"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
+#. Translators: The label for a button in table dictionaries dialog to edit existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:145
+#: addon/globalPlugins/brailleExtender/dictionaries.py:155
+msgid "&Edit"
+msgstr "&Edytuj"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
+#. Translators: The label for a button in table dictionaries dialog to remove existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:151
+#: addon/globalPlugins/brailleExtender/dictionaries.py:161
+msgid "Re&move"
+msgstr "&Usuń"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:159
+#, fuzzy
+msgid "&Open the dictionary file in an editor"
+msgstr "&Otwórz plik słownika w edytorze tekstowym"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
+#. Translators: The label for a button in table dictionaries dialog to reload dictionary.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:164
+#: addon/globalPlugins/brailleExtender/dictionaries.py:174
+msgid "&Reload the dictionary"
+msgstr "&Wczytaj słownik"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:177
+#: addon/globalPlugins/brailleExtender/dictionaries.py:218
+msgid "Add Dictionary Entry"
+msgstr "Dodaj wpis do słownika"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:221
+msgid "File doesn't exist yet"
+msgstr ""
+
+#. Translators: This is the label for the edit dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:242
+#: addon/globalPlugins/brailleExtender/dictionaries.py:290
+msgid "Edit Dictionary Entry"
+msgstr "Edytuj wpis słownikowy"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:247
+#, fuzzy
+msgid "&Abreviation"
+msgstr "&Kierunek"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:252
+#, fuzzy
+msgid "&Replace by"
+msgstr "Zamiana"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:276
+#, fuzzy
+msgid "Advanced input mode"
+msgstr "reguły zaawansowane"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:284
+msgid "E&xit the advanced input mode after typing one pattern"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:291
+msgid "Escape sign for Unicode values"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:54
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:248
+#, fuzzy
+msgid "Use braille table behavior"
+msgstr "tablice brajlowskie"
+
+#: addon/globalPlugins/brailleExtender/configBE.py:55
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:249
+msgid "Dots 1-8 (⣿)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:250
+msgid "Dots 1-6 (⠿)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:251
+msgid "Empty cell (⠀)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:58
+msgid "Other dot pattern (e.g.: 6-123456)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:59
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:253
+msgid "Question mark (depending output table)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:60
+msgid "Other sign/pattern (e.g.: \\, ??)"
+msgstr ""
+
#: addon/globalPlugins/brailleExtender/configBE.py:61
-#: addon/globalPlugins/brailleExtender/settings.py:421
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:255
+msgid "Hexadecimal, Liblouis style"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:256
+msgid "Hexadecimal, HUC8"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:257
+msgid "Hexadecimal, HUC6"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:70
+#: addon/globalPlugins/brailleExtender/configBE.py:77
+#: addon/globalPlugins/brailleExtender/configBE.py:91
+#: addon/globalPlugins/brailleExtender/settings.py:426
msgid "none"
msgstr "Brak"
-#: addon/globalPlugins/brailleExtender/configBE.py:41
+#: addon/globalPlugins/brailleExtender/configBE.py:71
msgid "braille only"
msgstr "tylko brajlem"
-#: addon/globalPlugins/brailleExtender/configBE.py:42
+#: addon/globalPlugins/brailleExtender/configBE.py:72
msgid "speech only"
msgstr "tylko mową"
-#: addon/globalPlugins/brailleExtender/configBE.py:43
-#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon/globalPlugins/brailleExtender/configBE.py:73
+#: addon/globalPlugins/brailleExtender/configBE.py:94
msgid "both"
msgstr "Brajlem i mową"
-#: addon/globalPlugins/brailleExtender/configBE.py:48
+#: addon/globalPlugins/brailleExtender/configBE.py:78
msgid "dots 7 and 8"
msgstr "punkty 7 i 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:49
+#: addon/globalPlugins/brailleExtender/configBE.py:79
msgid "dot 7"
msgstr "punkt 7"
-#: addon/globalPlugins/brailleExtender/configBE.py:50
+#: addon/globalPlugins/brailleExtender/configBE.py:80
msgid "dot 8"
msgstr "punkt 8"
-#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon/globalPlugins/brailleExtender/configBE.py:86
msgid "stable"
msgstr "stabilny"
-#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon/globalPlugins/brailleExtender/configBE.py:87
msgid "development"
msgstr "Rozwojowy pierścień"
-#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon/globalPlugins/brailleExtender/configBE.py:92
msgid "focus mode"
msgstr "Tryb punktu uwagi"
-#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon/globalPlugins/brailleExtender/configBE.py:93
msgid "review mode"
msgstr "Tryb przeglądu"
-#: addon/globalPlugins/brailleExtender/configBE.py:92
+#: addon/globalPlugins/brailleExtender/configBE.py:102
+msgid "Fill a cell in two stages on both sides"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:103
+msgid "Fill a cell in two stages on one side (space = empty side)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:104
+msgid ""
+"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
+"character)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:131
msgid "last known"
msgstr "ostatni połączony"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:29
+#: addon/globalPlugins/brailleExtender/dictionaries.py:30
msgid "Sign"
msgstr "Znak"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:31
+#: addon/globalPlugins/brailleExtender/dictionaries.py:32
msgid "Math"
msgstr "Matematyka"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:33
+#: addon/globalPlugins/brailleExtender/dictionaries.py:34
msgid "Replace"
msgstr "Zamiana"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:41
+#: addon/globalPlugins/brailleExtender/dictionaries.py:42
msgid "Both (input and output)"
msgstr "Wprowadzanie i wyjście"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:42
+#: addon/globalPlugins/brailleExtender/dictionaries.py:43
msgid "Backward (input only)"
msgstr "Wprowadzanie"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:43
+#: addon/globalPlugins/brailleExtender/dictionaries.py:44
msgid "Forward (output only)"
msgstr "tylko wyjście"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:110
+#: addon/globalPlugins/brailleExtender/dictionaries.py:111
#, python-format
msgid ""
"One or more errors are present in dictionaries tables. Concerned "
@@ -1020,121 +1509,87 @@ msgstr ""
"Jeden lub więcej błędów napotkano w słownikach tablicach. słowniki, o "
"których mowa: %s. W takim skutku, te tablice nie będą wczytane."
-#. Translators: The label for the combo box of dictionary entries in speech dictionary dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:131
-msgid "Dictionary &entries"
-msgstr "&Wpisy słownika"
-
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:134
+#: addon/globalPlugins/brailleExtender/dictionaries.py:135
msgid "Comment"
msgstr "Komentarz"
#. Translators: The label for a column in dictionary entries list used to identify original character.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:136
+#: addon/globalPlugins/brailleExtender/dictionaries.py:137
msgid "Pattern"
msgstr "wzorzec"
#. Translators: The label for a column in dictionary entries list and in a list of symbols from symbol pronunciation dialog used to identify replacement for a pattern or a symbol
-#: addon/globalPlugins/brailleExtender/dictionaries.py:138
+#: addon/globalPlugins/brailleExtender/dictionaries.py:139
msgid "Representation"
msgstr "Wyświetlanie"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:140
+#: addon/globalPlugins/brailleExtender/dictionaries.py:141
msgid "Opcode"
msgstr "kod operatora"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon/globalPlugins/brailleExtender/dictionaries.py:142
+#: addon/globalPlugins/brailleExtender/dictionaries.py:143
msgid "Direction"
msgstr "Kierunek"
-#. Translators: The label for a button in speech dictionaries dialog to add new entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:148
-msgid "&Add"
-msgstr "&Dodaj"
-
-#. Translators: The label for a button in speech dictionaries dialog to edit existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:154
-msgid "&Edit"
-msgstr "&Edytuj"
-
-#. Translators: The label for a button in speech dictionaries dialog to remove existing entries.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:160
-msgid "Re&move"
-msgstr "&Usuń"
-
-#. Translators: The label for a button in speech dictionaries dialog to open dictionary file in an editor.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:168
+#. Translators: The label for a button in table dictionaries dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/dictionaries.py:169
msgid "&Open the current dictionary file in an editor"
msgstr "&Otwórz plik słownika w edytorze tekstowym"
-#. Translators: The label for a button in speech dictionaries dialog to reload dictionary.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:173
-msgid "&Reload the dictionary"
-msgstr "&Wczytaj słownik"
-
-#: addon/globalPlugins/brailleExtender/dictionaries.py:216
-msgid "Add Dictionary Entry"
-msgstr "Dodaj wpis do słownika"
-
-#. Translators: This is the label for the edit dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:288
-msgid "Edit Dictionary Entry"
-msgstr "Edytuj wpis słownikowy"
-
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:294
+#: addon/globalPlugins/brailleExtender/dictionaries.py:296
msgid "Dictionary"
msgstr "Słownik"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Global"
msgstr "Ogólny"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Table"
msgstr "tablica"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:296
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Temporary"
msgstr "tymczasowy"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:302
+#: addon/globalPlugins/brailleExtender/dictionaries.py:304
msgid "See &entries"
msgstr "Zobacz &Wpisy"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:307
+#: addon/globalPlugins/brailleExtender/dictionaries.py:309
msgid "&Text pattern/sign"
msgstr "&wzorzec tekstu/znak"
#. Translators: This is a label for an edit field in add dictionary entry dialog and in punctuation/symbol pronunciation dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:312
+#: addon/globalPlugins/brailleExtender/dictionaries.py:314
msgid "&Braille representation"
msgstr "&Wyświetlanie brajla"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:316
+#: addon/globalPlugins/brailleExtender/dictionaries.py:318
msgid "&Comment"
msgstr "&Komentarz"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:320
+#: addon/globalPlugins/brailleExtender/dictionaries.py:322
msgid "&Opcode"
msgstr "&kod operatora"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon/globalPlugins/brailleExtender/dictionaries.py:325
+#: addon/globalPlugins/brailleExtender/dictionaries.py:327
msgid "&Direction"
msgstr "&Kierunek"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:366
+#: addon/globalPlugins/brailleExtender/dictionaries.py:368
msgid "Text pattern/sign field is empty."
msgstr "Pole tekst/wzorzec jest puste."
-#: addon/globalPlugins/brailleExtender/dictionaries.py:373
+#: addon/globalPlugins/brailleExtender/dictionaries.py:375
#, python-format
msgid ""
"Invalid value for 'text pattern/sign' field. You must specify a character "
@@ -1143,7 +1598,7 @@ msgstr ""
"Niepoprawna wartość dla pola 'wzorzec tekstu/znak'. Trzeba określić znak z "
"tym operatorem kodu. NP: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:377
+#: addon/globalPlugins/brailleExtender/dictionaries.py:379
#, python-format
msgid ""
"'Braille representation' field is empty, you must specify something with "
@@ -1152,7 +1607,7 @@ msgstr ""
"Pole 'wyświetlanie znaku' jest puste, coś musi być określone, gdy ten "
"operator kodu jest wybrany. NP: %s"
-#: addon/globalPlugins/brailleExtender/dictionaries.py:381
+#: addon/globalPlugins/brailleExtender/dictionaries.py:383
#, python-format
msgid ""
"Invalid value for 'braille representation' field. You must enter dot "
@@ -1161,191 +1616,208 @@ msgstr ""
"Nieprawidłowa wartość dla pola 'wyświetlanie znaku'. Musisz napisać wzorce "
"punktów z tym operatorem. NP: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:32
+#. Translators: Reported when translation didn't succeed due to unsupported input.
+#: addon/globalPlugins/brailleExtender/patchs.py:376
+msgid "Unsupported input"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/patchs.py:435
+msgid "Unsupported input method"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/settings.py:34
msgid "The feature implementation is in progress. Thanks for your patience."
msgstr "Implementacja tej funkcji jeszcze trwa. Dziękujemy za cierpliwość."
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:38
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:40
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "General"
msgstr "Ogólne"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:45
+#: addon/globalPlugins/brailleExtender/settings.py:47
msgid "Check for &updates automatically"
msgstr "Automatycznie sprawdzaj, czy jest nowa wersja"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:49
+#: addon/globalPlugins/brailleExtender/settings.py:51
msgid "Add-on update channel"
msgstr "Kanał aktualizacji dodatku"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:56
+#: addon/globalPlugins/brailleExtender/settings.py:58
msgid "Say current line while scrolling in"
msgstr "Wypowiadaj aktualny wiersz przy przemieszczaniu się w"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:60
+#: addon/globalPlugins/brailleExtender/settings.py:62
msgid "Speech interrupt when scrolling on same line"
msgstr "Przerwij mowę przy przemieszczaniu się w tym samym wierszu"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:64
+#: addon/globalPlugins/brailleExtender/settings.py:66
msgid "Speech interrupt for unknown gestures"
msgstr "Przerywanie mowy dla nieznanych klawiszy"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:68
+#: addon/globalPlugins/brailleExtender/settings.py:70
msgid "Announce the character while moving with routing buttons"
msgstr ""
"Wypowiada znak podczas przemieszczania się za pomocą przycisków routingó"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:72
+#: addon/globalPlugins/brailleExtender/settings.py:74
msgid "Use cursor keys to route cursor in review mode"
msgstr ""
"Aby przemieszczać się do konkretnego znaku w trybie przeglądu, użyj klawiszy "
"strzałek "
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:76
+#: addon/globalPlugins/brailleExtender/settings.py:78
msgid "Display time and date infinitely"
msgstr "Wyświetlaj datę i czas w nieskończoność"
-#: addon/globalPlugins/brailleExtender/settings.py:78
+#: addon/globalPlugins/brailleExtender/settings.py:80
msgid "Automatic review mode for apps with terminal"
msgstr "Automatyczny tryb przeglądania dla aplikacji konsolowych"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:82
+#: addon/globalPlugins/brailleExtender/settings.py:84
msgid "Feedback for volume change in"
msgstr "Informacja zwrotna dla zmiany głośności w"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:90
+#: addon/globalPlugins/brailleExtender/settings.py:92
msgid "Feedback for modifier keys in"
msgstr "Informacja zwrotna dla modyfikatorów w"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:96
+#: addon/globalPlugins/brailleExtender/settings.py:98
msgid "Play beeps for modifier keys"
msgstr "Odtwarzaj sygnały dźwiękowe dla modyfikatorów"
-#: addon/globalPlugins/brailleExtender/settings.py:101
+#: addon/globalPlugins/brailleExtender/settings.py:103
msgid "Right margin on cells"
msgstr "Prawy margines na komórkach brajlowskich"
-#: addon/globalPlugins/brailleExtender/settings.py:101
-#: addon/globalPlugins/brailleExtender/settings.py:113
-#: addon/globalPlugins/brailleExtender/settings.py:356
+#: addon/globalPlugins/brailleExtender/settings.py:103
+#: addon/globalPlugins/brailleExtender/settings.py:115
+#: addon/globalPlugins/brailleExtender/settings.py:366
msgid "for the currrent braille display"
msgstr "dla aktualnego monitora brajlowskiego"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:105
+#: addon/globalPlugins/brailleExtender/settings.py:107
msgid "Braille keyboard configuration"
msgstr "Konfiguracja klawiatury brajlowskiej"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:109
+#: addon/globalPlugins/brailleExtender/settings.py:111
msgid "Reverse forward scroll and back scroll buttons"
msgstr "Zamień przyciski czytania"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:113
+#: addon/globalPlugins/brailleExtender/settings.py:115
msgid "Autoscroll delay (ms)"
msgstr "czekanie na automatyczne czytanie w milisekundach"
-#: addon/globalPlugins/brailleExtender/settings.py:114
+#: addon/globalPlugins/brailleExtender/settings.py:116
msgid "First braille display preferred"
msgstr "Pierwszy preferowany monitor brajlowski"
-#: addon/globalPlugins/brailleExtender/settings.py:116
+#: addon/globalPlugins/brailleExtender/settings.py:118
msgid "Second braille display preferred"
msgstr "Drugi preferowany monitor brajlowski"
+#: addon/globalPlugins/brailleExtender/settings.py:120
+msgid "One-handed mode"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/settings.py:124
+msgid "One hand mode method"
+msgstr ""
+
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:149
+#: addon/globalPlugins/brailleExtender/settings.py:159
msgid "Text attributes"
msgstr "Właściwości formatowania tekstu"
-#: addon/globalPlugins/brailleExtender/settings.py:153
-#: addon/globalPlugins/brailleExtender/settings.py:200
+#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon/globalPlugins/brailleExtender/settings.py:210
msgid "Enable this feature"
msgstr "Włącz tę funkcję"
-#: addon/globalPlugins/brailleExtender/settings.py:155
+#: addon/globalPlugins/brailleExtender/settings.py:165
msgid "Show spelling errors with"
msgstr "Pokazuj błędy pisowni za pomocą"
-#: addon/globalPlugins/brailleExtender/settings.py:157
+#: addon/globalPlugins/brailleExtender/settings.py:167
msgid "Show bold with"
msgstr "Pokazuj pogrubiony tekst za pomocą"
-#: addon/globalPlugins/brailleExtender/settings.py:159
+#: addon/globalPlugins/brailleExtender/settings.py:169
msgid "Show italic with"
msgstr "Pokazuj kursywę za pomocą"
-#: addon/globalPlugins/brailleExtender/settings.py:161
+#: addon/globalPlugins/brailleExtender/settings.py:171
msgid "Show underline with"
msgstr "Pokazuj podkreślenie za pomocą"
-#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon/globalPlugins/brailleExtender/settings.py:173
msgid "Show strikethrough with"
msgstr "Pokazuj przekreślenie za pomocą"
-#: addon/globalPlugins/brailleExtender/settings.py:165
+#: addon/globalPlugins/brailleExtender/settings.py:175
msgid "Show subscript with"
msgstr "Pokazuj indeks dolny za pomocą"
-#: addon/globalPlugins/brailleExtender/settings.py:167
+#: addon/globalPlugins/brailleExtender/settings.py:177
msgid "Show superscript with"
msgstr "Pokazuj indeks górny za pomocą"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:193
+#: addon/globalPlugins/brailleExtender/settings.py:203
msgid "Role labels"
msgstr "Oznaczenia kontrolek"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Role category"
msgstr "Kategoria kontrolki"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Landmark"
msgstr "Punkt orientacyjny"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Positive state"
msgstr "Stan pozytywny"
-#: addon/globalPlugins/brailleExtender/settings.py:202
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Negative state"
msgstr "Stan negatywny"
-#: addon/globalPlugins/brailleExtender/settings.py:206
+#: addon/globalPlugins/brailleExtender/settings.py:216
msgid "Role"
msgstr "Kontrolka"
-#: addon/globalPlugins/brailleExtender/settings.py:208
+#: addon/globalPlugins/brailleExtender/settings.py:218
msgid "Actual or new label"
msgstr "Aktualne lub nowe oznaczenie"
-#: addon/globalPlugins/brailleExtender/settings.py:212
+#: addon/globalPlugins/brailleExtender/settings.py:222
msgid "&Reset this role label"
msgstr "&Zresetuj to spersonalizowane oznaczenie"
-#: addon/globalPlugins/brailleExtender/settings.py:214
+#: addon/globalPlugins/brailleExtender/settings.py:224
msgid "Reset all role labels"
msgstr "Zresetuj wszystkie spersonalizowane oznaczenia"
-#: addon/globalPlugins/brailleExtender/settings.py:279
+#: addon/globalPlugins/brailleExtender/settings.py:289
msgid "You have no customized label."
msgstr "Nie masz spersonalizowanego oznaczenia."
-#: addon/globalPlugins/brailleExtender/settings.py:282
+#: addon/globalPlugins/brailleExtender/settings.py:292
#, python-format
msgid ""
"Do you want really reset all labels? Currently, you have %d customized "
@@ -1354,101 +1826,94 @@ msgstr ""
"Czy na pewno chcesz zresetować wszystkie oznaczenia? aktualnie masz %d "
"spersonalizowanych oznaczeń."
-#: addon/globalPlugins/brailleExtender/settings.py:283
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon/globalPlugins/brailleExtender/settings.py:293
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Confirmation"
msgstr "potwierdzenie"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:325
+#: addon/globalPlugins/brailleExtender/settings.py:335
msgid "Braille tables"
msgstr "Tablice brajlowskie"
-#: addon/globalPlugins/brailleExtender/settings.py:330
+#: addon/globalPlugins/brailleExtender/settings.py:340
msgid "Use the current input table"
msgstr "Używaj aktualnej tablicy wprowadzania"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "Prefered braille tables"
msgstr "Ulubione &tablice brajlowskie"
-#: addon/globalPlugins/brailleExtender/settings.py:339
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "press F1 for help"
msgstr "Naciśnij F1 dla pomocy"
-#: addon/globalPlugins/brailleExtender/settings.py:343
+#: addon/globalPlugins/brailleExtender/settings.py:353
msgid "Input braille table for keyboard shortcut keys"
msgstr "Tablica wprowadzania dla skrótów klawiszowych"
-#: addon/globalPlugins/brailleExtender/settings.py:345
+#: addon/globalPlugins/brailleExtender/settings.py:355
msgid "None"
msgstr "Brak"
-#: addon/globalPlugins/brailleExtender/settings.py:348
+#: addon/globalPlugins/brailleExtender/settings.py:358
msgid "Secondary output table to use"
msgstr "Wtórna tablica wyjścia do użycia"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:352
-msgid "Display tab signs as spaces"
+#: addon/globalPlugins/brailleExtender/settings.py:362
+#, fuzzy
+msgid "Display &tab signs as spaces"
msgstr "Wyświetl znaki tabulacji jako spacje"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:356
-msgid "Number of space for a tab sign"
+#: addon/globalPlugins/brailleExtender/settings.py:366
+#, fuzzy
+msgid "Number of &space for a tab sign"
msgstr "Liczba odstępów dla znaku tabulacji"
-#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:358
-msgid "Prevent undefined characters with Hexadecimal Unicode value"
-msgstr ""
-"Zapobieganie wyświetlaniu znaków niezdefiniowanych jako wartości "
-"heksadecymalnych"
+#: addon/globalPlugins/brailleExtender/settings.py:367
+msgid "Alternative and &custom braille tables"
+msgstr "Alternatywne i &tablice brajlowskie użytkownika"
-#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:361
+#: addon/globalPlugins/brailleExtender/settings.py:387
msgid ""
-"Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+"NVDA must be restarted for some new options to take effect. Do you want "
+"restart now?"
msgstr ""
-"Wyświetlaj znaki niezdefiniowane jako np: 0 pusta komórka, 12345678, "
-"6-123456)"
-#: addon/globalPlugins/brailleExtender/settings.py:363
-msgid "Alternative and &custom braille tables"
-msgstr "Alternatywne i &tablice brajlowskie użytkownika"
-
-#: addon/globalPlugins/brailleExtender/settings.py:420
+#: addon/globalPlugins/brailleExtender/settings.py:425
msgid "input and output"
msgstr "Wprowadzanie i wyjście"
-#: addon/globalPlugins/brailleExtender/settings.py:422
+#: addon/globalPlugins/brailleExtender/settings.py:427
msgid "input only"
msgstr "tylko wprowadzanie"
-#: addon/globalPlugins/brailleExtender/settings.py:423
+#: addon/globalPlugins/brailleExtender/settings.py:428
msgid "output only"
msgstr "Tylko wyjście"
-#: addon/globalPlugins/brailleExtender/settings.py:454
+#: addon/globalPlugins/brailleExtender/settings.py:459
#, python-format
msgid "Table name: %s"
msgstr "nazwa tablicy: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:455
+#: addon/globalPlugins/brailleExtender/settings.py:460
#, python-format
msgid "File name: %s"
msgstr "Nazwa pliku: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:456
+#: addon/globalPlugins/brailleExtender/settings.py:461
#, python-format
msgid "In switches: %s"
msgstr "w rotorach: %s"
-#: addon/globalPlugins/brailleExtender/settings.py:457
+#: addon/globalPlugins/brailleExtender/settings.py:462
msgid "About this table"
msgstr "O tej tablicy"
-#: addon/globalPlugins/brailleExtender/settings.py:460
+#: addon/globalPlugins/brailleExtender/settings.py:465
msgid ""
"In this combo box, all tables are present. Press space bar, left or right "
"arrow keys to include (or not) the selected table in switches"
@@ -1457,7 +1922,7 @@ msgstr ""
"spację, a następnie strzałkę w lewo lub w prawo, aby usunąć wybraną tablice "
"brajlowską lub dodać ją do rotorów"
-#: addon/globalPlugins/brailleExtender/settings.py:461
+#: addon/globalPlugins/brailleExtender/settings.py:466
msgid ""
"You can also press 'comma' key to get the file name of the selected table "
"and 'semicolon' key to view miscellaneous infos on the selected table"
@@ -1466,125 +1931,125 @@ msgstr ""
"brajlowskiej i klawisz 'średnik' aby uzyskać rozmaite informacje dotyczące "
"wybranej tablicy brajlowskiej"
-#: addon/globalPlugins/brailleExtender/settings.py:462
+#: addon/globalPlugins/brailleExtender/settings.py:467
msgid "Contextual help"
msgstr "Pomoc kontekstowa"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:478
+#: addon/globalPlugins/brailleExtender/settings.py:483
msgid "Custom braille tables"
msgstr "tablice brajlowskie użytkownika"
-#: addon/globalPlugins/brailleExtender/settings.py:488
+#: addon/globalPlugins/brailleExtender/settings.py:493
msgid "Use a custom table as input table"
msgstr "Używaj tablicy użytkownika jako tablicę wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:489
+#: addon/globalPlugins/brailleExtender/settings.py:494
msgid "Use a custom table as output table"
msgstr "Używać tablicy użytkownika jako tablicę wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:490
+#: addon/globalPlugins/brailleExtender/settings.py:495
msgid "&Add a braille table"
msgstr "&Dodaj tablicę brajlowską"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:514
+#: addon/globalPlugins/brailleExtender/settings.py:519
msgid "Add a braille table"
msgstr "Dodawanie tablicy brajlowskiej"
-#: addon/globalPlugins/brailleExtender/settings.py:520
+#: addon/globalPlugins/brailleExtender/settings.py:525
msgid "Display name"
msgstr "Nazwa wyświetlana"
-#: addon/globalPlugins/brailleExtender/settings.py:521
+#: addon/globalPlugins/brailleExtender/settings.py:526
msgid "Description"
msgstr "Opis"
-#: addon/globalPlugins/brailleExtender/settings.py:522
+#: addon/globalPlugins/brailleExtender/settings.py:527
msgid "Path"
msgstr "Scieżka"
-#: addon/globalPlugins/brailleExtender/settings.py:523
-#: addon/globalPlugins/brailleExtender/settings.py:594
+#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:599
msgid "&Browse"
msgstr "&Przeglądaj"
-#: addon/globalPlugins/brailleExtender/settings.py:526
+#: addon/globalPlugins/brailleExtender/settings.py:531
msgid "Contracted (grade 2) braille table"
msgstr "tablica brajlowska skrótów"
#. Translators: label of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Available for"
msgstr "Dostępne dla"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input and output"
msgstr "Wprowadzanie i wyjście"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input only"
msgstr "Tylko wprowadzanie"
-#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Output only"
msgstr "Tylko wyjście"
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Choose a table file"
msgstr "Proszę wybrać tablicę "
-#: addon/globalPlugins/brailleExtender/settings.py:534
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Liblouis table files"
msgstr "Pliki tablic liblouis"
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Please specify a display name."
msgstr "Proszę wprowadzić nazwę wyswietlaną."
-#: addon/globalPlugins/brailleExtender/settings.py:546
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Invalid display name"
msgstr "Nieprawidłowa nazwa wyświetlana"
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon/globalPlugins/brailleExtender/settings.py:555
#, python-format
msgid "The specified path is not valid (%s)."
msgstr "Określona ścieżka jest nieprawidłowa (%s)."
-#: addon/globalPlugins/brailleExtender/settings.py:550
+#: addon/globalPlugins/brailleExtender/settings.py:555
msgid "Invalid path"
msgstr "Nieprawidłowa ścieżka"
#. Translators: title of a dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:578
+#: addon/globalPlugins/brailleExtender/settings.py:583
msgid "Quick launches"
msgstr "Szybkie uruchamianie"
-#: addon/globalPlugins/brailleExtender/settings.py:589
+#: addon/globalPlugins/brailleExtender/settings.py:594
msgid "&Gestures"
msgstr "&Zdarzenia wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:592
+#: addon/globalPlugins/brailleExtender/settings.py:597
msgid "Location (file path, URL or command)"
msgstr "Lokalizacja(ścieżka do pliku, URL lub komenda)"
-#: addon/globalPlugins/brailleExtender/settings.py:595
+#: addon/globalPlugins/brailleExtender/settings.py:600
msgid "&Remove this gesture"
msgstr "&Usuń to zdarzenie wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:596
+#: addon/globalPlugins/brailleExtender/settings.py:601
msgid "&Add a quick launch"
msgstr "&Dodaj zdarzenie wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:625
+#: addon/globalPlugins/brailleExtender/settings.py:630
msgid "Unable to associate this gesture. Please enter another, now"
msgstr "Nie można skojarzyć zdarzenia wejścia. Proszę wpisać inne"
-#: addon/globalPlugins/brailleExtender/settings.py:630
+#: addon/globalPlugins/brailleExtender/settings.py:635
msgid "Out of capture"
msgstr "Poza przechwytem"
-#: addon/globalPlugins/brailleExtender/settings.py:632
+#: addon/globalPlugins/brailleExtender/settings.py:637
#, python-brace-format
msgid ""
"Please enter a gesture from your {NAME_BRAILLE_DISPLAY} braille display. "
@@ -1593,21 +2058,21 @@ msgstr ""
"Proszę państwa wprowadzić zdarzenie wejścia z państwa linijki brajlowskiej "
"{NAME_BRAILLE_DISPLAY}. Aby anulować, trzeba nacisnąć spację."
-#: addon/globalPlugins/brailleExtender/settings.py:640
+#: addon/globalPlugins/brailleExtender/settings.py:645
#, python-format
msgid "OK. The gesture captured is %s"
msgstr "OK. Przechwycone zdarzenie wejścia to %s"
-#: addon/globalPlugins/brailleExtender/settings.py:657
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Are you sure to want to delete this shorcut?"
msgstr "Czy na pewno chcesz usunąć ten skrót?"
-#: addon/globalPlugins/brailleExtender/settings.py:666
+#: addon/globalPlugins/brailleExtender/settings.py:671
#, python-brace-format
msgid "{BRAILLEGESTURE} removed"
msgstr "{BRAILLEGESTURE} usunięto"
-#: addon/globalPlugins/brailleExtender/settings.py:677
+#: addon/globalPlugins/brailleExtender/settings.py:682
msgid ""
"Please enter the desired gesture for the new quick launch. Press \"space bar"
"\" to cancel"
@@ -1615,107 +2080,157 @@ msgstr ""
"Proszę wprowadzić chciane zdarzenie wejścia z klawiatury. Proszę nacisnąć "
"\"spację\" aby anulować"
-#: addon/globalPlugins/brailleExtender/settings.py:680
+#: addon/globalPlugins/brailleExtender/settings.py:685
msgid "Don't add a quick launch"
msgstr "Nie dodawaj zdarzenie wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:706
+#: addon/globalPlugins/brailleExtender/settings.py:711
#, python-brace-format
msgid "Choose a file for {0}"
msgstr "Proszę wybrać plik dla {0}"
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Please create or select a quick launch first"
msgstr "Najpierw wybierz, lub utwórz zdarzenie wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:719
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Error"
msgstr "Błąd"
-#: addon/globalPlugins/brailleExtender/settings.py:723
+#: addon/globalPlugins/brailleExtender/settings.py:728
msgid "Profiles editor"
msgstr "Edytor profili"
-#: addon/globalPlugins/brailleExtender/settings.py:734
+#: addon/globalPlugins/brailleExtender/settings.py:739
msgid "You must have a braille display to editing a profile"
msgstr "do edytowania profilu niezbędne jest posiadanie linijki brajlowskiej"
-#: addon/globalPlugins/brailleExtender/settings.py:738
+#: addon/globalPlugins/brailleExtender/settings.py:743
msgid ""
"Profiles directory is not present or accessible. Unable to edit profiles"
msgstr ""
"Katalog Profiles nie jest widoczny, lub jest on niedostępny. Nie można "
"edytować profili"
-#: addon/globalPlugins/brailleExtender/settings.py:744
+#: addon/globalPlugins/brailleExtender/settings.py:749
msgid "Profile to edit"
msgstr "Profil do edycji"
-#: addon/globalPlugins/brailleExtender/settings.py:750
+#: addon/globalPlugins/brailleExtender/settings.py:755
msgid "Gestures category"
msgstr "Kategoria zdarzeń wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Single keys"
msgstr "Pojedyńcze skróty"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Practical shortcuts"
msgstr "Skróty praktyczne"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "NVDA commands"
msgstr "Polecenia NVDA"
-#: addon/globalPlugins/brailleExtender/settings.py:751
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Addon features"
msgstr "Funkcje dodatku"
-#: addon/globalPlugins/brailleExtender/settings.py:755
+#: addon/globalPlugins/brailleExtender/settings.py:760
msgid "Gestures list"
msgstr "Spis zdarzeń wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:764
+#: addon/globalPlugins/brailleExtender/settings.py:769
msgid "Add gesture"
msgstr "dodaj zdarzenie wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:766
+#: addon/globalPlugins/brailleExtender/settings.py:771
msgid "Remove this gesture"
msgstr "Usuń to zdarzenie wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:769
+#: addon/globalPlugins/brailleExtender/settings.py:774
msgid "Assign a braille gesture"
msgstr "Przydziel brajlowskie zdarzenie wejścia"
-#: addon/globalPlugins/brailleExtender/settings.py:776
+#: addon/globalPlugins/brailleExtender/settings.py:781
msgid "Remove this profile"
msgstr "usuń profil"
-#: addon/globalPlugins/brailleExtender/settings.py:779
+#: addon/globalPlugins/brailleExtender/settings.py:784
msgid "Add a profile"
msgstr "dodaj profil"
-#: addon/globalPlugins/brailleExtender/settings.py:785
+#: addon/globalPlugins/brailleExtender/settings.py:790
msgid "Name for the new profile"
msgstr "Nazwa nowego profilu"
-#: addon/globalPlugins/brailleExtender/settings.py:791
+#: addon/globalPlugins/brailleExtender/settings.py:796
msgid "Create"
msgstr "Utwórz"
-#: addon/globalPlugins/brailleExtender/settings.py:854
+#: addon/globalPlugins/brailleExtender/settings.py:859
msgid "Unable to load this profile. Malformed or inaccessible file"
msgstr "Nie można załadować tego profilu. Uszkodzony lub niedostępny plik"
-#: addon/globalPlugins/brailleExtender/settings.py:873
+#: addon/globalPlugins/brailleExtender/settings.py:878
msgid "Undefined"
msgstr "Nieokreślone"
#. Translators: title of add-on parameters dialog.
-#: addon/globalPlugins/brailleExtender/settings.py:902
+#: addon/globalPlugins/brailleExtender/settings.py:909
msgid "Settings"
msgstr "Ustawienia"
+#. Translators: label of a dialog.
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:244
+#, fuzzy
+msgid "Representation &method"
+msgstr "Wyświetlanie"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:252
+#, python-brace-format
+msgid "Other dot pattern (e.g.: {dotPatternSample})"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:254
+#, python-brace-format
+msgid "Other sign/pattern (e.g.: {signPatternSample})"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:272
+msgid "Specify another pattern"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:276
+msgid "Describe undefined characters if possible"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:284
+msgid "Also describe extended characters (e.g.: country flags)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:291
+msgid "Start tag"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:296
+msgid "End tag"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:307
+msgid "Language"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:310
+#, fuzzy
+msgid "Use the current output table"
+msgstr "Używaj aktualnej tablicy wprowadzania"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:323
+#, fuzzy
+msgid "Braille table"
+msgstr "Tablice brajlowskie"
+
#: addon/globalPlugins/brailleExtender/updateCheck.py:61
#, python-format
msgid "New version available, version %s. Do you want to download it now?"
@@ -1746,69 +2261,69 @@ msgstr "Okno dialogowe aktualizacji jest już uruchomione!"
msgid "{addonName}'s update"
msgstr "Aktualizacja {addonName}-a"
-#: addon/globalPlugins/brailleExtender/utils.py:189
+#: addon/globalPlugins/brailleExtender/utils.py:194
msgid "Reload successful"
msgstr "Ponowne wczytywanie powiodło się"
-#: addon/globalPlugins/brailleExtender/utils.py:192
+#: addon/globalPlugins/brailleExtender/utils.py:197
msgid "Reload failed"
msgstr "ponowne wczytywanie nie powiodło się"
-#: addon/globalPlugins/brailleExtender/utils.py:197
-#: addon/globalPlugins/brailleExtender/utils.py:207
+#: addon/globalPlugins/brailleExtender/utils.py:203
+#: addon/globalPlugins/brailleExtender/utils.py:218
msgid "Not a character"
msgstr "nie jest znakiem"
-#: addon/globalPlugins/brailleExtender/utils.py:201
-msgid "unknown"
-msgstr "Nieznane"
+#: addon/globalPlugins/brailleExtender/utils.py:208
+msgid "N/A"
+msgstr ""
-#: addon/globalPlugins/brailleExtender/utils.py:330
+#: addon/globalPlugins/brailleExtender/utils.py:312
msgid "Available combinations"
msgstr "dostępne skróty"
-#: addon/globalPlugins/brailleExtender/utils.py:332
+#: addon/globalPlugins/brailleExtender/utils.py:314
msgid "One combination available"
msgstr "Jeden dostępny skrót"
-#: addon/globalPlugins/brailleExtender/utils.py:349
+#: addon/globalPlugins/brailleExtender/utils.py:325
msgid "space"
msgstr "spacja"
-#: addon/globalPlugins/brailleExtender/utils.py:350
+#: addon/globalPlugins/brailleExtender/utils.py:326
msgid "left SHIFT"
msgstr "lewy SHIFT"
-#: addon/globalPlugins/brailleExtender/utils.py:351
+#: addon/globalPlugins/brailleExtender/utils.py:327
msgid "right SHIFT"
msgstr "PRAWY SHIFT"
-#: addon/globalPlugins/brailleExtender/utils.py:352
+#: addon/globalPlugins/brailleExtender/utils.py:328
msgid "left selector"
msgstr "Lewe zaznaczanie"
-#: addon/globalPlugins/brailleExtender/utils.py:353
+#: addon/globalPlugins/brailleExtender/utils.py:329
msgid "right selector"
msgstr "Prawe zaznaczanie"
-#: addon/globalPlugins/brailleExtender/utils.py:354
+#: addon/globalPlugins/brailleExtender/utils.py:330
msgid "dot"
msgstr "punkt"
-#: addon/globalPlugins/brailleExtender/utils.py:369
+#: addon/globalPlugins/brailleExtender/utils.py:345
#, python-brace-format
msgid "{gesture} on {brailleDisplay}"
msgstr "{gesture} na {brailleDisplay}"
-#: addon/globalPlugins/brailleExtender/utils.py:446
+#: addon/globalPlugins/brailleExtender/utils.py:422
msgid "No text"
msgstr "Brak tekstu"
-#: addon/globalPlugins/brailleExtender/utils.py:455
+#: addon/globalPlugins/brailleExtender/utils.py:431
msgid "Not text"
msgstr "Nie jest tekstem"
-#: addon/globalPlugins/brailleExtender/utils.py:475
+#: addon/globalPlugins/brailleExtender/utils.py:451
msgid "No text selected"
msgstr "Brak zaznaczonego tekstu"
@@ -1929,6 +2444,29 @@ msgstr ""
msgid "actions and quick navigation through a rotor"
msgstr "akcje i szybka nawigacja za pomocą rotora"
+#~ msgid "Braille &dictionaries"
+#~ msgstr "&Słowniki brajlowskie"
+
+#~ msgid "%s braille display"
+#~ msgstr "Monitor brajlowski %s"
+
+#~ msgid "profile loaded: %s"
+#~ msgstr "Profil wczytany: %s"
+
+#~ msgid "Prevent undefined characters with Hexadecimal Unicode value"
+#~ msgstr ""
+#~ "Zapobieganie wyświetlaniu znaków niezdefiniowanych jako wartości "
+#~ "heksadecymalnych"
+
+#~ msgid ""
+#~ "Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+#~ msgstr ""
+#~ "Wyświetlaj znaki niezdefiniowane jako np: 0 pusta komórka, 12345678, "
+#~ "6-123456)"
+
+#~ msgid "unknown"
+#~ msgstr "Nieznane"
+
#~ msgid ""
#~ "In virtual documents (HTML/PDF/…) you can navigate element type by "
#~ "element type using keyboard. These navigation keys should work with your "
@@ -1962,9 +2500,6 @@ msgstr "akcje i szybka nawigacja za pomocą rotora"
#~ msgid "Braille tables configuration"
#~ msgstr "Konfiguracja tablic brajlowskich"
-#~ msgid "Text attributes configuration"
-#~ msgstr "Konfiguracja prezentacji formatowania dokumentu"
-
#~ msgid "Role &labels"
#~ msgstr "&Oznaczenia kontrolek"
@@ -2006,9 +2541,6 @@ msgstr "akcje i szybka nawigacja za pomocą rotora"
#~ msgid "Enable Attribra"
#~ msgstr "włącz attribrę"
-#~ msgid "braille tables"
-#~ msgstr "tablice brajlowskie"
-
#~ msgid ""
#~ "You can find some ideas of features for BrailleExtender that might be "
#~ "implemented here"
@@ -2268,9 +2800,6 @@ msgstr "akcje i szybka nawigacja za pomocą rotora"
#~ msgid "Category"
#~ msgstr "kategoria"
-#~ msgid "Profile"
-#~ msgstr "Profil"
-
#~ msgid "Bold"
#~ msgstr "Pogrubienie"
@@ -2323,9 +2852,6 @@ msgstr "akcje i szybka nawigacja za pomocą rotora"
#~ msgid "Feature Not Implemented Yet"
#~ msgstr "Jeszczę niezaimplementowana funkcja"
-#~ msgid "Advanced rules"
-#~ msgstr "reguły zaawansowane"
-
#~ msgid "&Edit this rule"
#~ msgstr "&Edytuj regułę"
diff --git a/addon/locale/ru/LC_MESSAGES/nvda.po b/addon/locale/ru/LC_MESSAGES/nvda.po
index 3941f112..c4c9788b 100644
--- a/addon/locale/ru/LC_MESSAGES/nvda.po
+++ b/addon/locale/ru/LC_MESSAGES/nvda.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: BrailleExtender dev-18.08.04-105046\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
"POT-Creation-Date: 2020-04-15 09:24+0200\n"
-"PO-Revision-Date: 2020-04-16 15:13+0100\n"
+"PO-Revision-Date: 2020-04-17 22:14+0100\n"
"Last-Translator: Zvonimir \n"
"Language-Team: \n"
"Language: ru_RU\n"
@@ -911,6 +911,8 @@ msgid ""
"This feature allows you to obtain various information regarding the "
"character under the cursor using the current input braille table, such as:"
msgstr ""
+"Эта функция позволяет вам получить информацию о знаке под курсором используя "
+"актуальную брайлевскую таблицу, такую как:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:65
msgid ""
@@ -918,6 +920,9 @@ msgid ""
"values; A description of the character if possible; - The Unicode Braille "
"representation and the Braille dot pattern."
msgstr ""
+"Изображения HUC8 и HUC6; шестнадцатиричное, десятиричное, восмиричное или "
+"двоичное значения; и если возможно, описание знака; - отображение в "
+"брайлевском юникоде и комбинация точек."
#: addon/globalPlugins/brailleExtender/addonDoc.py:67
msgid ""
@@ -925,23 +930,28 @@ msgid ""
"information in a flash message and a double-press displays the same "
"information in a virtual NVDA buffer."
msgstr ""
+"Нажимая однажды клавишную комбинацию связанную с этой функцией,показывается "
+"информация в скором сообщении а нажатие дважды показывает Показывает ту-же "
+"самую информацию в виртуальном окне NVDA."
#: addon/globalPlugins/brailleExtender/addonDoc.py:69
msgid ""
"On supported displays the defined gesture is ⡉+space. No system gestures are "
"defined by default."
msgstr ""
+"На поддержанных брайлевских дисплеях жест по умолчанию - ⡉+пробел. По "
+"умолчанию нет клавишной комбинации в системе."
#: addon/globalPlugins/brailleExtender/addonDoc.py:71
#, python-brace-format
msgid ""
"For example, for the '{chosenChar}' character, we will get the following "
"information:"
-msgstr ""
+msgstr "Например, для '{chosenChar}' знака, получаем следующую информацию:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:74
msgid "Advanced Braille Input"
-msgstr ""
+msgstr "Расширенный брайлевский ввод"
#: addon/globalPlugins/brailleExtender/addonDoc.py:76
msgid ""
@@ -953,35 +963,42 @@ msgid ""
"Alternatively, an option allows you to automatically exit this mode after "
"entering a single pattern. "
msgstr ""
+"Эта функция даёт вам возможность написания знаков в отображении HUC8 или в "
+"их сестнадцатиричных, десятеричных, восмиричных, или двоичных. Даже у вас "
+"есть возможность развития сокращений. Чтобы пользоватся этим функционалом, "
+"включите расширенный ввод и напишите желанный вами знак. Жесты по умолчанию: "
+"NVDA+Windows+i или ⡊+space (на поддержанных дисплеях. Нажмите тот же самый "
+"жест, чтобы выйти. Алтернативно, существует опция, которая даёт вам "
+"возможность выйти из этого режима. "
#: addon/globalPlugins/brailleExtender/addonDoc.py:80
msgid "Specify the basis as follows"
-msgstr ""
+msgstr "Определите базу как следует"
#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "⠭ or ⠓"
-msgstr ""
+msgstr "⠭ или ⠓"
#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "for a hexadecimal value"
-msgstr ""
+msgstr "для шестнадцатиричного значения"
#: addon/globalPlugins/brailleExtender/addonDoc.py:83
msgid "for a decimal value"
-msgstr ""
+msgstr "Для десятиричного значения"
#: addon/globalPlugins/brailleExtender/addonDoc.py:84
msgid "for an octal value"
-msgstr ""
+msgstr "Для восмиричного значения"
#: addon/globalPlugins/brailleExtender/addonDoc.py:87
msgid ""
"Enter the value of the character according to the previously selected basis."
-msgstr ""
+msgstr "Начните писать знак в соответствии с выбранной базой."
#: addon/globalPlugins/brailleExtender/addonDoc.py:88
msgid "Press Space to validate."
-msgstr ""
+msgstr "Чтобы проверить, нажмите пробел."
#: addon/globalPlugins/brailleExtender/addonDoc.py:91
msgid ""
@@ -989,18 +1006,22 @@ msgid ""
"dictionaries -. Then, you just have to enter your abbreviation and press "
"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
msgstr ""
+"Для сокращений, сначала нужно их добавить в диалоговом окне - словари "
+"расширенного ввода -. после этого, начинаете писать своё сокращение и "
+"нажимаете пробел чтобы расширить его. Например, Возможно прикрутить — ⠎⠺ — к"
+"— слову бутерброд —."
#: addon/globalPlugins/brailleExtender/addonDoc.py:93
msgid "Here are some examples of sequences to be entered for given characters:"
-msgstr ""
+msgstr "Здесь приводятся примеры дл некоторых знаков:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:97
msgid "Note: the HUC6 input is currently not supported."
-msgstr ""
+msgstr "Примечание: Ввод HUC6 не поддерживается."
#: addon/globalPlugins/brailleExtender/addonDoc.py:100
msgid "One-hand mode"
-msgstr ""
+msgstr "Режим одной рукой"
#: addon/globalPlugins/brailleExtender/addonDoc.py:102
msgid ""
From e7228f3c2b2a18fcc1a99e8f452cdae770634d3e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 11:11:35 +0200
Subject: [PATCH 66/87] L10n updates for: fr
---
addon/locale/fr/LC_MESSAGES/nvda.po | 1974 ++++++++++++++++++---------
1 file changed, 1316 insertions(+), 658 deletions(-)
diff --git a/addon/locale/fr/LC_MESSAGES/nvda.po b/addon/locale/fr/LC_MESSAGES/nvda.po
index 06cfac0c..5baedd7f 100644
--- a/addon/locale/fr/LC_MESSAGES/nvda.po
+++ b/addon/locale/fr/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-02-08 14:11+0100\n"
-"PO-Revision-Date: 2020-02-08 14:19+0100\n"
+"POT-Creation-Date: 2020-04-18 10:11+0200\n"
+"PO-Revision-Date: 2020-04-18 11:11+0200\n"
"Last-Translator: André-Abush CLAUSE \n"
"Language-Team: \n"
"Language: fr\n"
@@ -11,180 +11,179 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.3\n"
-"X-Poedit-Basepath: ../../..\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
-#: addon\globalPlugins\brailleExtender\__init__.py:61
+#: addon\globalPlugins\brailleExtender\__init__.py:67
msgid "Default"
msgstr "Par défaut"
-#: addon\globalPlugins\brailleExtender\__init__.py:62
+#: addon\globalPlugins\brailleExtender\__init__.py:68
msgid "Moving in the text"
msgstr "Déplacement dans le texte"
-#: addon\globalPlugins\brailleExtender\__init__.py:63
+#: addon\globalPlugins\brailleExtender\__init__.py:69
msgid "Text selection"
msgstr "Sélection de texte"
-#: addon\globalPlugins\brailleExtender\__init__.py:64
+#: addon\globalPlugins\brailleExtender\__init__.py:70
msgid "Objects"
msgstr "Objets"
-#: addon\globalPlugins\brailleExtender\__init__.py:65
+#: addon\globalPlugins\brailleExtender\__init__.py:71
msgid "Review"
msgstr "Revue"
-#: addon\globalPlugins\brailleExtender\__init__.py:66
+#: addon\globalPlugins\brailleExtender\__init__.py:72
msgid "Links"
msgstr "Liens"
-#: addon\globalPlugins\brailleExtender\__init__.py:67
+#: addon\globalPlugins\brailleExtender\__init__.py:73
msgid "Unvisited links"
msgstr "Liens non visités"
-#: addon\globalPlugins\brailleExtender\__init__.py:68
+#: addon\globalPlugins\brailleExtender\__init__.py:74
msgid "Visited links"
msgstr "Liens visités"
-#: addon\globalPlugins\brailleExtender\__init__.py:69
+#: addon\globalPlugins\brailleExtender\__init__.py:75
msgid "Landmarks"
msgstr "Repères"
-#: addon\globalPlugins\brailleExtender\__init__.py:70
+#: addon\globalPlugins\brailleExtender\__init__.py:76
msgid "Headings"
msgstr "Titres de niveau"
-#: addon\globalPlugins\brailleExtender\__init__.py:71
+#: addon\globalPlugins\brailleExtender\__init__.py:77
msgid "Headings at level 1"
msgstr "Titres de niveau 1"
-#: addon\globalPlugins\brailleExtender\__init__.py:72
+#: addon\globalPlugins\brailleExtender\__init__.py:78
msgid "Headings at level 2"
msgstr "Titres de niveau 2"
-#: addon\globalPlugins\brailleExtender\__init__.py:73
+#: addon\globalPlugins\brailleExtender\__init__.py:79
msgid "Headings at level 3"
msgstr "Titres de niveau 3"
-#: addon\globalPlugins\brailleExtender\__init__.py:74
+#: addon\globalPlugins\brailleExtender\__init__.py:80
msgid "Headings at level 4"
msgstr "Titres de niveau 4"
-#: addon\globalPlugins\brailleExtender\__init__.py:75
+#: addon\globalPlugins\brailleExtender\__init__.py:81
msgid "Headings at level 5"
msgstr "Titres de niveau 5"
-#: addon\globalPlugins\brailleExtender\__init__.py:76
+#: addon\globalPlugins\brailleExtender\__init__.py:82
msgid "Headings at level 6"
msgstr "Titres de niveau 6"
-#: addon\globalPlugins\brailleExtender\__init__.py:77
+#: addon\globalPlugins\brailleExtender\__init__.py:83
msgid "Lists"
msgstr "Listes"
-#: addon\globalPlugins\brailleExtender\__init__.py:78
+#: addon\globalPlugins\brailleExtender\__init__.py:84
msgid "List items"
msgstr "Éléments de liste"
-#: addon\globalPlugins\brailleExtender\__init__.py:79
+#: addon\globalPlugins\brailleExtender\__init__.py:85
msgid "Graphics"
msgstr "Graphiques"
-#: addon\globalPlugins\brailleExtender\__init__.py:80
+#: addon\globalPlugins\brailleExtender\__init__.py:86
msgid "Block quotes"
msgstr "Citations"
-#: addon\globalPlugins\brailleExtender\__init__.py:81
+#: addon\globalPlugins\brailleExtender\__init__.py:87
msgid "Buttons"
msgstr "Boutons"
-#: addon\globalPlugins\brailleExtender\__init__.py:82
+#: addon\globalPlugins\brailleExtender\__init__.py:88
msgid "Form fields"
msgstr "Champs de formulaire"
-#: addon\globalPlugins\brailleExtender\__init__.py:83
+#: addon\globalPlugins\brailleExtender\__init__.py:89
msgid "Edit fields"
msgstr "Champs d’édition"
-#: addon\globalPlugins\brailleExtender\__init__.py:84
+#: addon\globalPlugins\brailleExtender\__init__.py:90
msgid "Radio buttons"
msgstr "Boutons radio"
-#: addon\globalPlugins\brailleExtender\__init__.py:85
+#: addon\globalPlugins\brailleExtender\__init__.py:91
msgid "Combo boxes"
msgstr "Listes déroulantes"
-#: addon\globalPlugins\brailleExtender\__init__.py:86
+#: addon\globalPlugins\brailleExtender\__init__.py:92
msgid "Check boxes"
msgstr "Cases à cocher"
-#: addon\globalPlugins\brailleExtender\__init__.py:87
+#: addon\globalPlugins\brailleExtender\__init__.py:93
msgid "Not link blocks"
msgstr "Fin de bloc de liens"
-#: addon\globalPlugins\brailleExtender\__init__.py:88
+#: addon\globalPlugins\brailleExtender\__init__.py:94
msgid "Frames"
msgstr "Cadres"
-#: addon\globalPlugins\brailleExtender\__init__.py:89
+#: addon\globalPlugins\brailleExtender\__init__.py:95
msgid "Separators"
msgstr "Séparateurs"
-#: addon\globalPlugins\brailleExtender\__init__.py:90
+#: addon\globalPlugins\brailleExtender\__init__.py:96
msgid "Embedded objects"
msgstr "Objets embarqués"
-#: addon\globalPlugins\brailleExtender\__init__.py:91
+#: addon\globalPlugins\brailleExtender\__init__.py:97
msgid "Annotations"
msgstr "Annotations"
-#: addon\globalPlugins\brailleExtender\__init__.py:92
+#: addon\globalPlugins\brailleExtender\__init__.py:98
msgid "Spelling errors"
msgstr "Erreurs d’orthographe"
-#: addon\globalPlugins\brailleExtender\__init__.py:93
+#: addon\globalPlugins\brailleExtender\__init__.py:99
msgid "Tables"
msgstr "Tableaux"
-#: addon\globalPlugins\brailleExtender\__init__.py:94
+#: addon\globalPlugins\brailleExtender\__init__.py:100
msgid "Move in table"
msgstr "Déplacement dans le tableau"
-#: addon\globalPlugins\brailleExtender\__init__.py:100
+#: addon\globalPlugins\brailleExtender\__init__.py:106
msgid "If pressed twice, presents the information in browse mode"
msgstr "Deux appuis : présenter l’information en mode navigation"
-#: addon\globalPlugins\brailleExtender\__init__.py:252
+#: addon\globalPlugins\brailleExtender\__init__.py:260
msgid "Docu&mentation"
msgstr "D&ocumentation"
-#: addon\globalPlugins\brailleExtender\__init__.py:252
+#: addon\globalPlugins\brailleExtender\__init__.py:260
msgid "Opens the addon's documentation."
msgstr "Ouvre la documentation du module complémentaire."
-#: addon\globalPlugins\brailleExtender\__init__.py:258
+#: addon\globalPlugins\brailleExtender\__init__.py:266
msgid "&Settings"
msgstr "Para&mètres"
-#: addon\globalPlugins\brailleExtender\__init__.py:258
+#: addon\globalPlugins\brailleExtender\__init__.py:266
msgid "Opens the addons' settings."
msgstr "Ouvre les paramètres du module complémentaire."
-#: addon\globalPlugins\brailleExtender\__init__.py:265
-msgid "Braille &dictionaries"
-msgstr "&Dictionnaires braille"
+#: addon\globalPlugins\brailleExtender\__init__.py:273
+msgid "Table &dictionaries"
+msgstr "Dictionnaires des tables"
-#: addon\globalPlugins\brailleExtender\__init__.py:265
+#: addon\globalPlugins\brailleExtender\__init__.py:273
msgid "'Braille dictionaries' menu"
msgstr "Menu \"dictionnaires braille\""
-#: addon\globalPlugins\brailleExtender\__init__.py:266
+#: addon\globalPlugins\brailleExtender\__init__.py:274
msgid "&Global dictionary"
msgstr "Dictionnaire &global"
-#: addon\globalPlugins\brailleExtender\__init__.py:266
+#: addon\globalPlugins\brailleExtender\__init__.py:274
msgid ""
"A dialog where you can set global dictionary by adding dictionary entries to "
"the list."
@@ -192,11 +191,11 @@ msgstr ""
"Une boîte de dialogue dans laquelle vous pouvez définir un dictionnaire "
"global en ajoutant des entrées de dictionnaire à la liste."
-#: addon\globalPlugins\brailleExtender\__init__.py:268
+#: addon\globalPlugins\brailleExtender\__init__.py:276
msgid "&Table dictionary"
msgstr "Dictionnaire de la &table"
-#: addon\globalPlugins\brailleExtender\__init__.py:268
+#: addon\globalPlugins\brailleExtender\__init__.py:276
msgid ""
"A dialog where you can set table-specific dictionary by adding dictionary "
"entries to the list."
@@ -204,11 +203,11 @@ msgstr ""
"Une boîte de dialogue dans laquelle vous pouvez définir un dictionnaire "
"spécifique à une table en ajoutant des entrées de dictionnaire à la liste."
-#: addon\globalPlugins\brailleExtender\__init__.py:270
+#: addon\globalPlugins\brailleExtender\__init__.py:278
msgid "Te&mporary dictionary"
msgstr "Dictionnaire tem&poraire"
-#: addon\globalPlugins\brailleExtender\__init__.py:270
+#: addon\globalPlugins\brailleExtender\__init__.py:278
msgid ""
"A dialog where you can set temporary dictionary by adding dictionary entries "
"to the list."
@@ -216,121 +215,128 @@ msgstr ""
"Une boîte de dialogue dans laquelle vous pouvez définir un dictionnaire "
"temporaire en ajoutant des entrées de dictionnaire à la liste."
-#: addon\globalPlugins\brailleExtender\__init__.py:273
+#: addon\globalPlugins\brailleExtender\__init__.py:281
+msgid "Advanced &input mode dictionary"
+msgstr "D&ictionnaire du mode de saisie avancée"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:281
+msgid "Advanced input mode configuration"
+msgstr "Configuration du mode de saisie avancée"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:287
msgid "&Quick launches"
msgstr "&Lancements rapides"
-#: addon\globalPlugins\brailleExtender\__init__.py:273
+#: addon\globalPlugins\brailleExtender\__init__.py:287
msgid "Quick launches configuration"
msgstr "Configuration des lancements rapides"
-#: addon\globalPlugins\brailleExtender\__init__.py:279
+#: addon\globalPlugins\brailleExtender\__init__.py:293
msgid "&Profile editor"
msgstr "Éditeur de &profils"
-#: addon\globalPlugins\brailleExtender\__init__.py:279
+#: addon\globalPlugins\brailleExtender\__init__.py:293
msgid "Profile editor"
msgstr "Éditeur de profil"
-#: addon\globalPlugins\brailleExtender\__init__.py:285
+#: addon\globalPlugins\brailleExtender\__init__.py:299
msgid "Overview of the current input braille table"
msgstr "Aperçu de la table braille d’entrée actuelle"
-#: addon\globalPlugins\brailleExtender\__init__.py:287
+#: addon\globalPlugins\brailleExtender\__init__.py:301
msgid "Reload add-on"
msgstr "Recharger le module"
-#: addon\globalPlugins\brailleExtender\__init__.py:287
+#: addon\globalPlugins\brailleExtender\__init__.py:301
msgid "Reload this add-on."
msgstr "Recharger cet add-on."
-#: addon\globalPlugins\brailleExtender\__init__.py:289
+#: addon\globalPlugins\brailleExtender\__init__.py:303
msgid "&Check for update"
msgstr "&Vérifier les mises à jour"
-#: addon\globalPlugins\brailleExtender\__init__.py:289
+#: addon\globalPlugins\brailleExtender\__init__.py:303
msgid "Checks if update is available"
msgstr "Vérifie si des mises à jour sont disponibles"
-#: addon\globalPlugins\brailleExtender\__init__.py:291
+#: addon\globalPlugins\brailleExtender\__init__.py:305
msgid "&Website"
msgstr "Site &web"
-#: addon\globalPlugins\brailleExtender\__init__.py:291
+#: addon\globalPlugins\brailleExtender\__init__.py:305
msgid "Open addon's website."
msgstr "Ouvre le site web du module complémentaire."
-#: addon\globalPlugins\brailleExtender\__init__.py:293
-#, fuzzy
-#| msgid "Braille Extender"
+#: addon\globalPlugins\brailleExtender\__init__.py:307
msgid "&Braille Extender"
-msgstr "Braille Extender"
+msgstr "&Braille Extender"
-#: addon\globalPlugins\brailleExtender\__init__.py:297
-#: addon\globalPlugins\brailleExtender\dictionaries.py:342
+#: addon\globalPlugins\brailleExtender\__init__.py:322
+#: addon\globalPlugins\brailleExtender\dictionaries.py:344
msgid "Global dictionary"
msgstr "Dictionnaire global"
-#: addon\globalPlugins\brailleExtender\__init__.py:302
-#: addon\globalPlugins\brailleExtender\dictionaries.py:342
+#: addon\globalPlugins\brailleExtender\__init__.py:327
+#: addon\globalPlugins\brailleExtender\dictionaries.py:344
msgid "Table dictionary"
msgstr "Dictionnaire de la table"
-#: addon\globalPlugins\brailleExtender\__init__.py:306
-#: addon\globalPlugins\brailleExtender\dictionaries.py:342
+#: addon\globalPlugins\brailleExtender\__init__.py:331
+#: addon\globalPlugins\brailleExtender\dictionaries.py:344
msgid "Temporary dictionary"
msgstr "Dictionnaire temporaire"
-#: addon\globalPlugins\brailleExtender\__init__.py:416
+#: addon\globalPlugins\brailleExtender\__init__.py:441
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
msgid "Character"
msgstr "Caractère"
-#: addon\globalPlugins\brailleExtender\__init__.py:417
+#: addon\globalPlugins\brailleExtender\__init__.py:442
msgid "Word"
msgstr "Mot"
-#: addon\globalPlugins\brailleExtender\__init__.py:418
+#: addon\globalPlugins\brailleExtender\__init__.py:443
msgid "Line"
msgstr "Ligne"
-#: addon\globalPlugins\brailleExtender\__init__.py:419
+#: addon\globalPlugins\brailleExtender\__init__.py:444
msgid "Paragraph"
msgstr "Paragraphe"
-#: addon\globalPlugins\brailleExtender\__init__.py:420
+#: addon\globalPlugins\brailleExtender\__init__.py:445
msgid "Page"
msgstr "Page"
-#: addon\globalPlugins\brailleExtender\__init__.py:421
+#: addon\globalPlugins\brailleExtender\__init__.py:446
msgid "Document"
msgstr "Document"
-#: addon\globalPlugins\brailleExtender\__init__.py:457
+#: addon\globalPlugins\brailleExtender\__init__.py:482
msgid "Not available here"
msgstr "Non disponible ici"
-#: addon\globalPlugins\brailleExtender\__init__.py:475
-#: addon\globalPlugins\brailleExtender\__init__.py:497
+#: addon\globalPlugins\brailleExtender\__init__.py:500
+#: addon\globalPlugins\brailleExtender\__init__.py:522
msgid "Not supported here or browse mode not enabled"
msgstr "Non supporté ici ou mode navigation non activé"
-#: addon\globalPlugins\brailleExtender\__init__.py:477
+#: addon\globalPlugins\brailleExtender\__init__.py:502
msgid "Select previous rotor setting"
msgstr "Sélectionnez le réglage précédent du rotor"
-#: addon\globalPlugins\brailleExtender\__init__.py:478
+#: addon\globalPlugins\brailleExtender\__init__.py:503
msgid "Select next rotor setting"
msgstr "Sélectionnez le réglage suivant du rotor"
-#: addon\globalPlugins\brailleExtender\__init__.py:526
+#: addon\globalPlugins\brailleExtender\__init__.py:551
msgid "Move to previous item depending rotor setting"
msgstr "Passer à l’élément précédent en fonction du réglage du rotor"
-#: addon\globalPlugins\brailleExtender\__init__.py:527
+#: addon\globalPlugins\brailleExtender\__init__.py:552
msgid "Move to next item depending rotor setting"
msgstr "Passer à l’élément suivant en fonction du réglage du rotor"
-#: addon\globalPlugins\brailleExtender\__init__.py:535
+#: addon\globalPlugins\brailleExtender\__init__.py:560
msgid ""
"Varies depending on rotor setting. Eg: in object mode, it's similar to NVDA"
"+enter"
@@ -338,98 +344,113 @@ msgstr ""
"Varie en fonction du réglage du rotor. Ex : en mode objet, c’est similaire à "
"NVDA + entrée"
-#: addon\globalPlugins\brailleExtender\__init__.py:538
+#: addon\globalPlugins\brailleExtender\__init__.py:563
msgid "Move to previous item using rotor setting"
msgstr "Passer à l’élément précédent en utilisant le réglage du rotor"
-#: addon\globalPlugins\brailleExtender\__init__.py:539
+#: addon\globalPlugins\brailleExtender\__init__.py:564
msgid "Move to next item using rotor setting"
msgstr "Passer à l’élément suivant en utilisant le réglage du rotor"
-#: addon\globalPlugins\brailleExtender\__init__.py:543
+#: addon\globalPlugins\brailleExtender\__init__.py:568
#, python-format
msgid "Braille keyboard %s"
msgstr "Clavier braille %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:543
-#: addon\globalPlugins\brailleExtender\__init__.py:560
+#: addon\globalPlugins\brailleExtender\__init__.py:568
+#: addon\globalPlugins\brailleExtender\__init__.py:591
msgid "locked"
msgstr "verrouillé"
-#: addon\globalPlugins\brailleExtender\__init__.py:543
-#: addon\globalPlugins\brailleExtender\__init__.py:560
+#: addon\globalPlugins\brailleExtender\__init__.py:568
+#: addon\globalPlugins\brailleExtender\__init__.py:591
msgid "unlocked"
msgstr "déverrouillé"
-#: addon\globalPlugins\brailleExtender\__init__.py:544
+#: addon\globalPlugins\brailleExtender\__init__.py:569
msgid "Lock/unlock braille keyboard"
msgstr "Verrouiller/déverrouiller le clavier braille"
-#: addon\globalPlugins\brailleExtender\__init__.py:548
-#, python-format
-msgid "Dots 7 and 8: %s"
-msgstr "Points 7 et 8 : %s"
+#: addon\globalPlugins\brailleExtender\__init__.py:573
+#: addon\globalPlugins\brailleExtender\__init__.py:579
+#: addon\globalPlugins\brailleExtender\__init__.py:586
+#: addon\globalPlugins\brailleExtender\__init__.py:597
+#: addon\globalPlugins\brailleExtender\__init__.py:665
+#: addon\globalPlugins\brailleExtender\__init__.py:671
+msgid "enabled"
+msgstr "activé"
-#: addon\globalPlugins\brailleExtender\__init__.py:548
-#: addon\globalPlugins\brailleExtender\__init__.py:555
-#: addon\globalPlugins\brailleExtender\__init__.py:566
+#: addon\globalPlugins\brailleExtender\__init__.py:573
+#: addon\globalPlugins\brailleExtender\__init__.py:579
+#: addon\globalPlugins\brailleExtender\__init__.py:586
+#: addon\globalPlugins\brailleExtender\__init__.py:597
+#: addon\globalPlugins\brailleExtender\__init__.py:665
+#: addon\globalPlugins\brailleExtender\__init__.py:671
msgid "disabled"
msgstr "désactivé"
-#: addon\globalPlugins\brailleExtender\__init__.py:548
-#: addon\globalPlugins\brailleExtender\__init__.py:555
-#: addon\globalPlugins\brailleExtender\__init__.py:566
-msgid "enabled"
-msgstr "activé"
+#: addon\globalPlugins\brailleExtender\__init__.py:574
+#, python-format
+msgid "One hand mode %s"
+msgstr "Mode unimanuel %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:550
+#: addon\globalPlugins\brailleExtender\__init__.py:575
+msgid "Enable/disable one hand mode feature"
+msgstr "Activer / désactiver le mode unimanuel"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:579
+#, python-format
+msgid "Dots 7 and 8: %s"
+msgstr "Points 7 et 8 : %s"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:581
msgid "Hide/show dots 7 and 8"
msgstr "Cacher/montrer les points 7 et 8"
-#: addon\globalPlugins\brailleExtender\__init__.py:555
+#: addon\globalPlugins\brailleExtender\__init__.py:586
#, python-format
msgid "BRF mode: %s"
msgstr "Mode BRF : %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:556
+#: addon\globalPlugins\brailleExtender\__init__.py:587
msgid "Enable/disable BRF mode"
msgstr "Activer / désactiver le mode BRF"
-#: addon\globalPlugins\brailleExtender\__init__.py:560
+#: addon\globalPlugins\brailleExtender\__init__.py:591
#, python-format
msgid "Modifier keys %s"
msgstr "Touches de modification %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:561
+#: addon\globalPlugins\brailleExtender\__init__.py:592
msgid "Lock/unlock modifiers keys"
msgstr "Verrouiller/déverrouiller les touches de modification"
-#: addon\globalPlugins\brailleExtender\__init__.py:567
+#: addon\globalPlugins\brailleExtender\__init__.py:598
msgid "Enable/disable Attribra"
msgstr "Activer / désactiver Attribra"
-#: addon\globalPlugins\brailleExtender\__init__.py:577
+#: addon\globalPlugins\brailleExtender\__init__.py:608
msgid "Quick access to the \"say current line while scrolling in\" option"
msgstr "Accès rapide à l’option « dire la ligne en cours lors du défilement »"
-#: addon\globalPlugins\brailleExtender\__init__.py:582
+#: addon\globalPlugins\brailleExtender\__init__.py:613
msgid "Speech on"
msgstr "Énonciation activée"
-#: addon\globalPlugins\brailleExtender\__init__.py:585
+#: addon\globalPlugins\brailleExtender\__init__.py:616
msgid "Speech off"
msgstr "Énonciation désactivée"
-#: addon\globalPlugins\brailleExtender\__init__.py:587
+#: addon\globalPlugins\brailleExtender\__init__.py:618
msgid "Toggle speech on or off"
msgstr "Activer / désactiver la parole"
-#: addon\globalPlugins\brailleExtender\__init__.py:595
+#: addon\globalPlugins\brailleExtender\__init__.py:626
msgid "No extra info for this element"
msgstr "Pas d’information supplémentaire pour cet élément"
#. Translators: Input help mode message for report extra infos command.
-#: addon\globalPlugins\brailleExtender\__init__.py:599
+#: addon\globalPlugins\brailleExtender\__init__.py:630
msgid ""
"Reports some extra infos for the current element. For example, the URL on a "
"link"
@@ -437,34 +458,34 @@ msgstr ""
"Annonce des informations supplémentaires sur l’élément actuel. Par exemple, "
"l’URL sur un lien"
-#: addon\globalPlugins\brailleExtender\__init__.py:604
+#: addon\globalPlugins\brailleExtender\__init__.py:635
msgid " Input table"
msgstr " table d’entrée"
-#: addon\globalPlugins\brailleExtender\__init__.py:604
+#: addon\globalPlugins\brailleExtender\__init__.py:635
msgid "Output table"
msgstr "Table de sortie"
-#: addon\globalPlugins\brailleExtender\__init__.py:606
+#: addon\globalPlugins\brailleExtender\__init__.py:637
#, python-format
msgid "Table overview (%s)"
msgstr "Aperçu de table (%s)"
-#: addon\globalPlugins\brailleExtender\__init__.py:607
+#: addon\globalPlugins\brailleExtender\__init__.py:638
msgid "Display an overview of current input braille table"
msgstr "Afficher un aperçu de la table braille d’entrée actuelle"
-#: addon\globalPlugins\brailleExtender\__init__.py:612
-#: addon\globalPlugins\brailleExtender\__init__.py:620
-#: addon\globalPlugins\brailleExtender\__init__.py:627
+#: addon\globalPlugins\brailleExtender\__init__.py:643
+#: addon\globalPlugins\brailleExtender\__init__.py:651
+#: addon\globalPlugins\brailleExtender\__init__.py:658
msgid "No text selection"
msgstr "Pas de sélection de texte"
-#: addon\globalPlugins\brailleExtender\__init__.py:613
+#: addon\globalPlugins\brailleExtender\__init__.py:644
msgid "Unicode Braille conversion"
msgstr "Conversion en Braille Unicode"
-#: addon\globalPlugins\brailleExtender\__init__.py:614
+#: addon\globalPlugins\brailleExtender\__init__.py:645
msgid ""
"Convert the text selection in unicode braille and display it in a browseable "
"message"
@@ -472,11 +493,11 @@ msgstr ""
"Convertir la sélection de texte en braille unicode et l’afficher dans un "
"message navigable"
-#: addon\globalPlugins\brailleExtender\__init__.py:621
+#: addon\globalPlugins\brailleExtender\__init__.py:652
msgid "Braille Unicode to cell descriptions"
msgstr "Braille Unicode vers descriptions de cellule"
-#: addon\globalPlugins\brailleExtender\__init__.py:622
+#: addon\globalPlugins\brailleExtender\__init__.py:653
msgid ""
"Convert text selection in braille cell descriptions and display it in a "
"browseable message"
@@ -484,11 +505,11 @@ msgstr ""
"Convertir la sélection de texte en descriptions de cellules braille et "
"l’afficher dans un message navigable"
-#: addon\globalPlugins\brailleExtender\__init__.py:629
+#: addon\globalPlugins\brailleExtender\__init__.py:660
msgid "Cell descriptions to braille Unicode"
msgstr "Descriptions de cellules vers braille Unicode"
-#: addon\globalPlugins\brailleExtender\__init__.py:630
+#: addon\globalPlugins\brailleExtender\__init__.py:661
msgid ""
"Braille cell description to Unicode Braille. E.g.: in a edit field type "
"'125-24-0-1-123-123'. Then select this text and execute this command"
@@ -497,86 +518,99 @@ msgstr ""
"champ d’édition, tapez ’125-24-0-1-123-123’. Puis sélectionnez ce texte et "
"exécutez cette commande"
-#: addon\globalPlugins\brailleExtender\__init__.py:634
+#: addon\globalPlugins\brailleExtender\__init__.py:666
+#, python-format
+msgid "Advanced braille input mode %s"
+msgstr "Mode de saisie braille avancée %s"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:667
+msgid "Enable/disable the advanced input mode"
+msgstr "Activer / désactiver le mode de saisie avancée"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:672
+#, python-format
+msgid "Description of undefined characters %s"
+msgstr "Description des caractères indéfinis %s"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:674
+msgid "Enable/disable description of undefined characters"
+msgstr "Activer / désactiver la description des caractères indéfinis"
+
+#: addon\globalPlugins\brailleExtender\__init__.py:678
msgid "Get the cursor position of text"
msgstr "Obtenir la position du curseur dans le texte"
-#: addon\globalPlugins\brailleExtender\__init__.py:660
+#: addon\globalPlugins\brailleExtender\__init__.py:704
msgid "Hour and date with autorefresh"
msgstr "Heure et date avec rafraîchissement automatique"
-#: addon\globalPlugins\brailleExtender\__init__.py:673
+#: addon\globalPlugins\brailleExtender\__init__.py:717
msgid "Autoscroll stopped"
msgstr "Défilement automatique arrêté"
-#: addon\globalPlugins\brailleExtender\__init__.py:680
+#: addon\globalPlugins\brailleExtender\__init__.py:724
msgid "Unable to start autoscroll. More info in NVDA log"
msgstr ""
"Impossible de lancer le défilement automatique. Plus d’informations dans le "
"journal NVDA"
-#: addon\globalPlugins\brailleExtender\__init__.py:685
+#: addon\globalPlugins\brailleExtender\__init__.py:729
msgid "Enable/disable autoscroll"
msgstr "Activer / désactiver le défilement automatique"
-#: addon\globalPlugins\brailleExtender\__init__.py:700
+#: addon\globalPlugins\brailleExtender\__init__.py:744
msgid "Increase the master volume"
msgstr "Augmenter le volume principal"
-#: addon\globalPlugins\brailleExtender\__init__.py:717
+#: addon\globalPlugins\brailleExtender\__init__.py:761
msgid "Decrease the master volume"
msgstr "Diminuer le volume principal"
-#: addon\globalPlugins\brailleExtender\__init__.py:723
+#: addon\globalPlugins\brailleExtender\__init__.py:767
msgid "Muted sound"
msgstr "Son coupé"
-#: addon\globalPlugins\brailleExtender\__init__.py:725
+#: addon\globalPlugins\brailleExtender\__init__.py:769
#, python-format
msgid "Unmuted sound (%3d%%)"
msgstr "Réactivé (%3d%%)"
-#: addon\globalPlugins\brailleExtender\__init__.py:731
+#: addon\globalPlugins\brailleExtender\__init__.py:775
msgid "Mute or unmute sound"
msgstr "Couper ou rétablir le son"
-#: addon\globalPlugins\brailleExtender\__init__.py:736
+#: addon\globalPlugins\brailleExtender\__init__.py:780
#, python-format
msgid "Show the %s documentation"
msgstr "Afficher la documentation de %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:774
+#: addon\globalPlugins\brailleExtender\__init__.py:818
msgid "No such file or directory"
msgstr "Aucun fichier ou dossier de ce nom"
-#: addon\globalPlugins\brailleExtender\__init__.py:776
+#: addon\globalPlugins\brailleExtender\__init__.py:820
msgid "Opens a custom program/file. Go to settings to define them"
msgstr ""
"Ouvre un programme / fichier personnalisé. Accédez aux paramètres pour les "
"définir"
-#: addon\globalPlugins\brailleExtender\__init__.py:783
+#: addon\globalPlugins\brailleExtender\__init__.py:827
#, python-format
msgid "Check for %s updates, and starts the download if there is one"
msgstr ""
"Vérifier les mises à jour de %s, et lance le téléchargement s’il en existe "
"une"
-#: addon\globalPlugins\brailleExtender\__init__.py:813
+#: addon\globalPlugins\brailleExtender\__init__.py:857
msgid "Increase autoscroll delay"
msgstr "Augmenter le délai du défilement automatique"
-#: addon\globalPlugins\brailleExtender\__init__.py:814
+#: addon\globalPlugins\brailleExtender\__init__.py:858
msgid "Decrease autoscroll delay"
msgstr "Diminuer le délai du défilement automatique"
-#: addon\globalPlugins\brailleExtender\__init__.py:818
-#: addon\globalPlugins\brailleExtender\__init__.py:836
-msgid "Please use NVDA 2017.3 minimum for this feature"
-msgstr "Veuillez utiliser NVDA 2017.3 pour cette fonctionnalité"
-
-#: addon\globalPlugins\brailleExtender\__init__.py:820
-#: addon\globalPlugins\brailleExtender\__init__.py:838
+#: addon\globalPlugins\brailleExtender\__init__.py:862
+#: addon\globalPlugins\brailleExtender\__init__.py:877
msgid ""
"You must choose at least two tables for this feature. Please fill in the "
"settings"
@@ -584,49 +618,49 @@ msgstr ""
"Vous devez choisir au moins deux tables pour cette fonctionnalité. Merci de "
"les renseigner dans les paramètres"
-#: addon\globalPlugins\brailleExtender\__init__.py:827
+#: addon\globalPlugins\brailleExtender\__init__.py:869
#, python-format
msgid "Input: %s"
msgstr "Saisie : %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:831
+#: addon\globalPlugins\brailleExtender\__init__.py:873
msgid "Switch between his favorite input braille tables"
msgstr "Boucler entre ses tables braille d’entrer"
-#: addon\globalPlugins\brailleExtender\__init__.py:847
+#: addon\globalPlugins\brailleExtender\__init__.py:886
#, python-format
msgid "Output: %s"
msgstr "Affichage : %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:850
+#: addon\globalPlugins\brailleExtender\__init__.py:889
msgid "Switch between his favorite output braille tables"
msgstr "Boucler entre ses tables de sortie"
-#: addon\globalPlugins\brailleExtender\__init__.py:856
+#: addon\globalPlugins\brailleExtender\__init__.py:895
#, python-brace-format
msgid "I⣿O:{I}"
msgstr "E⣿S:{I}"
-#: addon\globalPlugins\brailleExtender\__init__.py:857
+#: addon\globalPlugins\brailleExtender\__init__.py:896
#, python-brace-format
msgid "Input and output: {I}."
msgstr "Saisie et affichage: {I}."
-#: addon\globalPlugins\brailleExtender\__init__.py:859
+#: addon\globalPlugins\brailleExtender\__init__.py:898
#, python-brace-format
msgid "I:{I} ⣿ O: {O}"
msgstr "A: {O} ⣿ S:{I}"
-#: addon\globalPlugins\brailleExtender\__init__.py:860
+#: addon\globalPlugins\brailleExtender\__init__.py:899
#, python-brace-format
msgid "Input: {I}; Output: {O}"
msgstr "Affichage : {O} ; Saisie: {I}"
-#: addon\globalPlugins\brailleExtender\__init__.py:864
+#: addon\globalPlugins\brailleExtender\__init__.py:903
msgid "Announce the current input and output braille tables"
msgstr "Annoncez les tables braille d’entrée et de sortie actuelles"
-#: addon\globalPlugins\brailleExtender\__init__.py:869
+#: addon\globalPlugins\brailleExtender\__init__.py:908
msgid ""
"Gives the Unicode value of the character where the cursor is located and the "
"decimal, binary and octal equivalent."
@@ -634,7 +668,7 @@ msgstr ""
"Obtenir la valeur Unicode du caractère sur lequel le curseur se trouve ainsi "
"que l’équivalent en décimale, binaire et octale."
-#: addon\globalPlugins\brailleExtender\__init__.py:877
+#: addon\globalPlugins\brailleExtender\__init__.py:916
msgid ""
"Show the output speech for selected text in braille. Useful for emojis for "
"example"
@@ -642,110 +676,110 @@ msgstr ""
"Affiche l'énoncé vocal pour le texte sélectionné en braille. Pratique pour "
"les emojis par exemple"
-#: addon\globalPlugins\brailleExtender\__init__.py:881
+#: addon\globalPlugins\brailleExtender\__init__.py:920
msgid "No shortcut performed from a braille display"
msgstr "Aucun raccourci effectué depuis un afficheur braille"
-#: addon\globalPlugins\brailleExtender\__init__.py:885
+#: addon\globalPlugins\brailleExtender\__init__.py:924
msgid "Repeat the last shortcut performed from a braille display"
msgstr "Répéter le dernier raccourci effectué depuis un afficheur braille"
-#: addon\globalPlugins\brailleExtender\__init__.py:899
+#: addon\globalPlugins\brailleExtender\__init__.py:938
#, python-format
msgid "%s reloaded"
msgstr "%s rechargé"
-#: addon\globalPlugins\brailleExtender\__init__.py:911
+#: addon\globalPlugins\brailleExtender\__init__.py:950
#, python-format
msgid "Reload %s"
msgstr "Recharger %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:914
+#: addon\globalPlugins\brailleExtender\__init__.py:953
msgid "Reload the first braille display defined in settings"
msgstr "Recharger le premier afficheur braille défini dans les paramètres"
-#: addon\globalPlugins\brailleExtender\__init__.py:917
+#: addon\globalPlugins\brailleExtender\__init__.py:956
msgid "Reload the second braille display defined in settings"
msgstr "Recharger le second afficheur braille défini dans les paramètres"
-#: addon\globalPlugins\brailleExtender\__init__.py:923
+#: addon\globalPlugins\brailleExtender\__init__.py:962
msgid "No braille display specified. No reload to do"
msgstr "Pas d’afficheur braille spécifié. Aucun rechargement à effectuer"
-#: addon\globalPlugins\brailleExtender\__init__.py:960
+#: addon\globalPlugins\brailleExtender\__init__.py:999
msgid "WIN"
msgstr ""
-#: addon\globalPlugins\brailleExtender\__init__.py:961
+#: addon\globalPlugins\brailleExtender\__init__.py:1000
msgid "CTRL"
msgstr ""
-#: addon\globalPlugins\brailleExtender\__init__.py:962
+#: addon\globalPlugins\brailleExtender\__init__.py:1001
msgid "SHIFT"
msgstr "MAJ"
-#: addon\globalPlugins\brailleExtender\__init__.py:963
+#: addon\globalPlugins\brailleExtender\__init__.py:1002
msgid "ALT"
msgstr ""
-#: addon\globalPlugins\brailleExtender\__init__.py:1065
+#: addon\globalPlugins\brailleExtender\__init__.py:1104
msgid "Keyboard shortcut cancelled"
msgstr "Raccourci clavier annulé"
#. /* docstrings for modifier keys */
-#: addon\globalPlugins\brailleExtender\__init__.py:1073
+#: addon\globalPlugins\brailleExtender\__init__.py:1112
msgid "Emulate pressing down "
msgstr "Émuler l’appui maintenu de "
-#: addon\globalPlugins\brailleExtender\__init__.py:1074
+#: addon\globalPlugins\brailleExtender\__init__.py:1113
msgid " on the system keyboard"
msgstr " sur le clavier du système"
-#: addon\globalPlugins\brailleExtender\__init__.py:1130
+#: addon\globalPlugins\brailleExtender\__init__.py:1169
msgid "Current braille view saved"
msgstr "Vue braille actuelle sauvegardée"
-#: addon\globalPlugins\brailleExtender\__init__.py:1133
+#: addon\globalPlugins\brailleExtender\__init__.py:1172
msgid "Buffer cleaned"
msgstr "Tampon vidé"
-#: addon\globalPlugins\brailleExtender\__init__.py:1134
+#: addon\globalPlugins\brailleExtender\__init__.py:1173
msgid "Save the current braille view. Press twice quickly to clean the buffer"
msgstr ""
"Sauvegardez la vue braille actuelle. Appuyez deux fois rapidement pour "
"effacer le tampon"
-#: addon\globalPlugins\brailleExtender\__init__.py:1139
+#: addon\globalPlugins\brailleExtender\__init__.py:1178
msgid "View saved"
msgstr "Vue sauvegardée"
-#: addon\globalPlugins\brailleExtender\__init__.py:1140
+#: addon\globalPlugins\brailleExtender\__init__.py:1179
msgid "Buffer empty"
msgstr "Tampon vide"
-#: addon\globalPlugins\brailleExtender\__init__.py:1141
+#: addon\globalPlugins\brailleExtender\__init__.py:1180
msgid "Show the saved braille view through a flash message"
-msgstr "Afficher la vue braille enregistrée via un message flash."
+msgstr "Afficher la vue braille enregistrée via un message flash"
-#: addon\globalPlugins\brailleExtender\__init__.py:1175
+#: addon\globalPlugins\brailleExtender\__init__.py:1214
msgid "Pause"
msgstr "Pause"
-#: addon\globalPlugins\brailleExtender\__init__.py:1175
+#: addon\globalPlugins\brailleExtender\__init__.py:1214
msgid "Resume"
msgstr "Reprendre"
-#: addon\globalPlugins\brailleExtender\__init__.py:1217
-#: addon\globalPlugins\brailleExtender\__init__.py:1224
+#: addon\globalPlugins\brailleExtender\__init__.py:1256
+#: addon\globalPlugins\brailleExtender\__init__.py:1263
#, python-format
msgid "Auto test type %d"
msgstr "Auto test %d"
-#: addon\globalPlugins\brailleExtender\__init__.py:1234
+#: addon\globalPlugins\brailleExtender\__init__.py:1273
msgid "Auto test stopped"
msgstr "Défilement automatique arrêté"
-#: addon\globalPlugins\brailleExtender\__init__.py:1244
+#: addon\globalPlugins\brailleExtender\__init__.py:1283
msgid ""
"Auto test started. Use the up and down arrow keys to change speed. Use the "
"left and right arrow keys to change test type. Use space key to pause or "
@@ -756,104 +790,419 @@ msgstr ""
"de test. Utilisez la touche espace pour faire une pause ou reprendre le "
"test. Utilisez la touche d’échappement pour quitter"
-#: addon\globalPlugins\brailleExtender\__init__.py:1246
+#: addon\globalPlugins\brailleExtender\__init__.py:1285
msgid "Auto test"
msgstr "Auto test"
-#: addon\globalPlugins\brailleExtender\__init__.py:1251
+#: addon\globalPlugins\brailleExtender\__init__.py:1290
msgid "Add dictionary entry or see a dictionary"
msgstr "Ajouter une entrée de dictionnaire ou consulter un dictionnaire"
-#: addon\globalPlugins\brailleExtender\__init__.py:1252
+#: addon\globalPlugins\brailleExtender\__init__.py:1291
msgid "Add a entry in braille dictionary"
msgstr "Ajouter une entrée au dictionnaire braille"
#. Add-on summary, usually the user visible name of the addon.
#. Translators: Summary for this add-on to be shown on installation and add-on information.
-#: addon\globalPlugins\brailleExtender\__init__.py:1299
-#: addon\globalPlugins\brailleExtender\dictionaries.py:111
-#: addon\globalPlugins\brailleExtender\dictionaries.py:367
-#: addon\globalPlugins\brailleExtender\dictionaries.py:374
-#: addon\globalPlugins\brailleExtender\dictionaries.py:378
-#: addon\globalPlugins\brailleExtender\dictionaries.py:382
-#: addon\globalPlugins\brailleExtender\settings.py:33 buildVars.py:24
+#: addon\globalPlugins\brailleExtender\__init__.py:1341
+#: addon\globalPlugins\brailleExtender\dictionaries.py:112
+#: addon\globalPlugins\brailleExtender\dictionaries.py:369
+#: addon\globalPlugins\brailleExtender\dictionaries.py:376
+#: addon\globalPlugins\brailleExtender\dictionaries.py:380
+#: addon\globalPlugins\brailleExtender\dictionaries.py:384
+#: addon\globalPlugins\brailleExtender\settings.py:37 buildVars.py:24
msgid "Braille Extender"
msgstr "Braille Extender"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:33
-#, python-format
-msgid "%s braille display"
-msgstr "afficheur braille %s"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+msgid "HUC8"
+msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:34
-#, python-format
-msgid "profile loaded: %s"
-msgstr "profile chargé : %s"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:65
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:263
+msgid "Hexadecimal"
+msgstr "Hexadécimale"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:66
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:264
+msgid "Decimal"
+msgstr "Décimale"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:67
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:265
+msgid "Octal"
+msgstr "Octale"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\configBE.py:68
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:266
+msgid "Binary"
+msgstr "Binaire"
+
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\addonDoc.py:46
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:244
+msgid "Representation of undefined characters"
+msgstr "Représentation des caractères indéfinis"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:48
+msgid ""
+"The extension allows you to customize how an undefined character should be "
+"represented within a braille table. To do so, go to the braille table "
+"settings. You can choose between the following representations:"
+msgstr ""
+"L'extension vous permet de personnaliser la façon dont un caractère non "
+"défini doit être représenté dans un tableau braille. Pour ce faire, accédez "
+"aux paramètres des tables braille. Vous pouvez choisir entre les "
+"représentations suivantes :"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:52
+msgid ""
+"You can also combine this option with the “describe the character if "
+"possible” setting."
+msgstr ""
+"Vous pouvez également combiner cette option avec le paramètre « décrire le "
+"caractère si possible »."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:54
+msgid "Notes:"
+msgstr "Notes :"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:56
+msgid ""
+"To distinguish the undefined set of characters while maximizing space, the "
+"best combination is the usage of the HUC8 representation without checking "
+"the “describe character if possible” option."
+msgstr ""
+"Pour distinguer les caractères indéfini tout en maximisant l'espace, la "
+"meilleure combinaison est l'utilisation de la représentation HUC8 sans "
+"cocher l'option « décrire le caractère si possible »."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:57
+#, python-brace-format
+msgid "To learn more about the HUC representation, see {url}"
+msgstr "Pour en savoir plus sur la représentation HUC, voir {url}"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:58
+msgid ""
+"Keep in mind that definitions in tables and those in your table dictionaries "
+"take precedence over character descriptions, which also take precedence over "
+"the chosen representation for undefined characters."
+msgstr ""
+"Gardez à l'esprit que les définitions dans les tables et celles dans vos "
+"dictionnaires de table ont priorité sur les descriptions de caractères, qui "
+"ont également priorité sur la représentation choisie pour les caractères "
+"indéfinis."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:61
+msgid "Getting Current Character Info"
+msgstr "Obtenir des informations sur le caractère actuel"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:63
+msgid ""
+"This feature allows you to obtain various information regarding the "
+"character under the cursor using the current input braille table, such as:"
+msgstr ""
+"Cette fonctionnalité vous permet d'obtenir diverses informations concernant "
+"le caractère sous le curseur à l'aide de la table braille d'entrée actuelle, "
+"telles que:"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:65
+msgid ""
+"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
+"values; A description of the character if possible; - The Unicode Braille "
+"representation and the Braille dot pattern."
+msgstr ""
+"les représentations HUC8 et HUC6 ; les valeurs hexadécimales, décimales, "
+"octales ou binaires ; Une description du caractère si possible ; la "
+"représentation braille Unicode et le motif de points braille."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:67
+msgid ""
+"Pressing the defined gesture associated to this function once shows you the "
+"information in a flash message and a double-press displays the same "
+"information in a virtual NVDA buffer."
+msgstr ""
+"Une pression sur le geste défini associé à cette fonction affiche une fois "
+"les informations dans un message flash et une double pression affiche les "
+"mêmes informations dans un tampon NVDA virtuel."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:69
+msgid ""
+"On supported displays the defined gesture is ⡉+space. No system gestures are "
+"defined by default."
+msgstr ""
+"Sur les afficheurs pris en charge, le geste défini est ⡉+espace. Aucun geste "
+"système n'est défini par défaut."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:71
+#, python-brace-format
+msgid ""
+"For example, for the '{chosenChar}' character, we will get the following "
+"information:"
+msgstr ""
+"Par exemple, pour le caractère '{chosenChar}', nous obtiendrons les "
+"informations suivantes :"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:74
+msgid "Advanced Braille Input"
+msgstr "Saisie braille avancée"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:76
+msgid ""
+"This feature allows you to enter any character from its HUC8 representation "
+"or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to "
+"develop abbreviations. To use this function, enter the advanced input mode "
+"and then enter the desired pattern. Default gestures: NVDA+Windows+i or ⡊"
+"+space (on supported displays). Press the same gesture to exit this mode. "
+"Alternatively, an option allows you to automatically exit this mode after "
+"entering a single pattern. "
+msgstr ""
+"Cette fonction vous permet de saisir n'importe quel caractère depuis sa "
+"représentation HUC8 ou sa valeur hexadécimale / décimale / octale / binaire. "
+"De plus, il vous permet de développer des abréviations. Pour utiliser cette "
+"fonction, entrez dans le mode de saisie avancé, puis entrez le motif "
+"souhaité. Gestes par défaut: NVDA+Windows+i ou ⡊+espace (sur les afficheurs "
+"pris en charge). Appuyez sur le même geste pour quitter ce mode. "
+"Alternativement, une option vous permet de quitter automatiquement ce mode "
+"après avoir entré un seul motif."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:80
+msgid "Specify the basis as follows"
+msgstr "Spécifiez la base comme suit"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+msgid "⠭ or ⠓"
+msgstr "⠭ ou ⠓"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+msgid "for a hexadecimal value"
+msgstr "pour une valeur hexadécimale"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:83
+msgid "for a decimal value"
+msgstr "pour une valeur décimale"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:84
+msgid "for an octal value"
+msgstr "pour une valeur octale"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:87
+msgid ""
+"Enter the value of the character according to the previously selected basis."
+msgstr "Entrez la valeur du caractère selon la base précédemment sélectionnée."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:88
+msgid "Press Space to validate."
+msgstr "Appuyez sur Espace pour valider."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:91
+msgid ""
+"For abbreviations, you must first add them in the dialog box - Advanced mode "
+"dictionaries -. Then, you just have to enter your abbreviation and press "
+"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
+msgstr ""
+"Pour les abréviations, vous devez d'abord les ajouter dans la boîte de "
+"dialogue — Dictionnaires du mode avancé —. Ensuite, il vous suffit de saisir "
+"votre abréviation et d'appuyer sur l'espace pour la développer. Par exemple, "
+"vous pouvez associer - ⠎⠺ - à - sandwich -."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:93
+msgid "Here are some examples of sequences to be entered for given characters:"
+msgstr ""
+"Voici quelques exemples de séquences à saisir pour des caractères donnés :"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:97
+msgid "Note: the HUC6 input is currently not supported."
+msgstr "Remarque : l'entrée HUC6 n'est actuellement pas prise en charge."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:100
+msgid "One-hand mode"
+msgstr "Mode unimanuel"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:102
+msgid ""
+"This feature allows you to compose a cell in several steps. This can be "
+"activated in the general settings of the extension's preferences or on the "
+"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
+"Three input methods are available."
+msgstr ""
+"Cette fonctionnalité vous permet de composer une cellule en plusieurs "
+"étapes. Ceci peut être activé dans les paramètres généraux des préférences "
+"de l'extension ou à la volée en utilisant le geste NVDA + Windows + h par "
+"défaut (⡂ + espace sur les afficheurs pris en charge). Trois méthodes de "
+"saisie sont disponibles."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:103
+msgid "Method #1: fill a cell in 2 stages on both sides"
+msgstr "Méthode n° 1 : remplir une cellule en 2 étapes des deux côtés"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:105
+msgid ""
+"With this method, type the left side dots, then the right side dots. If one "
+"side is empty, type the dots correspondig to the opposite side twice, or "
+"type the dots corresponding to the non-empty side in 2 steps."
+msgstr ""
+"Avec cette méthode, tapez les points du côté gauche, puis les points du côté "
+"droit. Si un côté est vide, tapez deux fois les points correspondant au côté "
+"opposé ou tapez les points correspondant au côté non vide en 2 étapes."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:106
+#: addon\globalPlugins\brailleExtender\addonDoc.py:115
+msgid "For example:"
+msgstr "Par exemple :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:51
+#: addon\globalPlugins\brailleExtender\addonDoc.py:108
+msgid "For ⠛: press dots 1-2 then dots 4-5."
+msgstr "Pour ⠛: appuyez sur les points 1-2 puis sur les points 4-5."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:109
+msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
+msgstr ""
+"Pour ⠃: appuyez sur les points 1-2 puis sur les points 1-2, ou sur le point "
+"1 puis le point 2."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:110
+msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
+msgstr "Pour ⠘: appuyez sur 4-5 puis 4-5, ou point 4 puis point 5."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:112
+msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
+msgstr ""
+"Méthode n° 2 : remplir une cellule en deux étapes sur un côté (espace = côté "
+"vide)"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:114
+msgid ""
+"Using this method, you can compose a cell with one hand, regardless of which "
+"side of the Braille keyboard you choose. The first step allows you to enter "
+"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
+"An empty cell will be obtained by pressing the space key twice."
+msgstr ""
+"En utilisant cette méthode, vous pouvez composer une cellule d'une seule "
+"main, quel que soit le côté du clavier braille que vous choisissez. La "
+"première étape vous permet de saisir les points 1-2-3-7 et le second "
+"4-5-6-8. Si un côté est vide, appuyez sur espace. Une cellule vide sera "
+"obtenue en appuyant deux fois sur la touche espace."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:117
+msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
+msgstr ""
+"Pour ⠛: appuyez sur les points 1-2 puis les points 1-2, ou les points 4-5 "
+"puis les points 4-5."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:118
+msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
+msgstr ""
+"Pour ⠃ : appuyez sur les points 1-2 puis sur espace ou sur 4-5 puis sur "
+"espace."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:119
+msgid "For ⠘: press space then 1-2, or space then dots 4-5."
+msgstr ""
+"Pour ⠘ : pressez espace puis sur les points 1-2 ou sur espace puis sur les "
+"points 4-5."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:121
+msgid ""
+"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
+"validate the character)"
+msgstr ""
+"Méthode n° 3 : remplir une cellule points par points (chaque point est une "
+"bascule, appuyez sur Espace pour valider le caractère)"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:126
+msgid "Dots 1-2, then dots 4-5, then space."
+msgstr "Points 1-2, puis points 4-5, puis espace."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:127
+msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
+msgstr ""
+"Points 1-2-3, puis point 3 (pour corriger), puis points 4-5, puis espace."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:128
+msgid "Dot 1, then dots 2-4-5, then space."
+msgstr "Point 1, puis points 2-4-5, puis espace."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:129
+msgid "Dots 1-2-4, then dot 5, then space."
+msgstr "Points 1-2-4, puis point 5, puis espace."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:130
+msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
+msgstr "Point 2, puis point 1, puis point 5, puis point 4, puis espace."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:131
+msgid "Etc."
+msgstr "Etc.."
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:150
+msgid "Documentation"
+msgstr "Documentation"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:160
+msgid "Driver loaded"
+msgstr "Pilote chargé"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:161
+msgid "Profile"
+msgstr "Profil"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:175
msgid "Simple keys"
msgstr "Touches simples"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:53
+#: addon\globalPlugins\brailleExtender\addonDoc.py:177
msgid "Usual shortcuts"
msgstr "Raccourcis usuels"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:56
+#: addon\globalPlugins\brailleExtender\addonDoc.py:179
msgid "Standard NVDA commands"
msgstr "Commandes NVDA standards"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:59
-#: addon\globalPlugins\brailleExtender\settings.py:751
+#: addon\globalPlugins\brailleExtender\addonDoc.py:182
+#: addon\globalPlugins\brailleExtender\settings.py:511
msgid "Modifier keys"
msgstr "Touches de modification"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:62
+#: addon\globalPlugins\brailleExtender\addonDoc.py:185
msgid "Quick navigation keys"
msgstr "Touches de navigation rapide"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:63
-msgid ""
-"In virtual documents (HTML/PDF/…) you can navigate element type by element "
-"type using keyboard. These navigation keys should work with your braille "
-"terminal equally.In addition to these, there are some specific "
-"shortcuts:"
-msgstr ""
-"Dans les documents virtuels (HTML/PDF/…) il vous est possible de naviguer de "
-"type d’élément en type d’élément à l’aide de touche clavier. Ces touches de "
-"navigation devraient fonctionner depuis le terminal braille.
En plus "
-"de ceux-ci, il existe quelques raccourcis particuliers :"
-
-#: addon\globalPlugins\brailleExtender\addonDoc.py:66
+#: addon\globalPlugins\brailleExtender\addonDoc.py:189
msgid "Rotor feature"
msgstr "Fonction Rotor"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:69
+#: addon\globalPlugins\brailleExtender\addonDoc.py:197
msgid "Gadget commands"
msgstr "Commandes gadgettes"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:73
+#: addon\globalPlugins\brailleExtender\addonDoc.py:210
msgid "Shortcuts defined outside add-on"
msgstr "Raccourcis définis en dehors du module"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:94
+#: addon\globalPlugins\brailleExtender\addonDoc.py:238
msgid "Keyboard configurations provided"
msgstr "Configurations de clavier fournies"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:96
+#: addon\globalPlugins\brailleExtender\addonDoc.py:241
msgid "Keyboard configurations are"
msgstr "Les configurations de clavier sont les suivantes"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:101
+#: addon\globalPlugins\brailleExtender\addonDoc.py:250
msgid "Warning:"
msgstr "Attention :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:102
+#: addon\globalPlugins\brailleExtender\addonDoc.py:252
msgid "BrailleExtender has no gesture map yet for your braille display."
msgstr ""
"BrailleExtender n'a pas encore de profil de gestes pour votre afficheur "
"braille."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:103
+#: addon\globalPlugins\brailleExtender\addonDoc.py:255
msgid ""
"However, you can still assign your own gestures in the \"Input Gestures\" "
"dialog (under Preferences menu)."
@@ -862,165 +1211,571 @@ msgstr ""
"fonctions dans le dialogue « Gestes de commandes » des « Préférences » de "
"NVDA."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:105
-msgid "Shortcuts on system keyboard specific to the add-on"
-msgstr "Raccourcis sur le clavier du système spécifiques au module"
-
-#: addon\globalPlugins\brailleExtender\addonDoc.py:125
-msgid "Copyrights and acknowledgements"
-msgstr "Droits d’auteur et remerciements"
-
-#: addon\globalPlugins\brailleExtender\addonDoc.py:127
-msgid "Copyright (C) 2016-2020 André-Abush Clause and other contributors:"
-msgstr ""
-"Copyright (C) 2016-2020 André-Abush Clause, et d’autres contributeurs :"
-
-#: addon\globalPlugins\brailleExtender\addonDoc.py:131
-msgid "Translators"
-msgstr "Traducteurs"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:259
+msgid "Add-on gestures on the system keyboard"
+msgstr "Gestes du module sur le clavier système"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:132
+#: addon\globalPlugins\brailleExtender\addonDoc.py:282
msgid "Arabic"
msgstr "Arabe"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:133
+#: addon\globalPlugins\brailleExtender\addonDoc.py:283
msgid "Croatian"
msgstr "Croate"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:134
+#: addon\globalPlugins\brailleExtender\addonDoc.py:284
+msgid "Danish"
+msgstr "Danois"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:285
+msgid "English and French"
+msgstr "Anglais et français"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:286
msgid "German"
msgstr "Allemand"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:135
+#: addon\globalPlugins\brailleExtender\addonDoc.py:287
msgid "Hebrew"
msgstr "Hébreu"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:136
+#: addon\globalPlugins\brailleExtender\addonDoc.py:288
msgid "Persian"
msgstr "Persan"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:137
+#: addon\globalPlugins\brailleExtender\addonDoc.py:289
msgid "Polish"
msgstr "Polonais"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:138
+#: addon\globalPlugins\brailleExtender\addonDoc.py:290
msgid "Russian"
msgstr "Russe"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:140
+#: addon\globalPlugins\brailleExtender\addonDoc.py:293
+msgid "Copyrights and acknowledgements"
+msgstr "Droits d’auteur et remerciements"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:299
+msgid "and other contributors"
+msgstr "et d'autres contributeurs"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:303
+msgid "Translators"
+msgstr "Traducteurs"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:313
msgid "Code contributions and other"
msgstr "Contributions de code et autres"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:140
+#: addon\globalPlugins\brailleExtender\addonDoc.py:315
msgid "Additional third party copyrighted code is included:"
msgstr "Du code sous copyright de tiers est inclus :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:143
+#: addon\globalPlugins\brailleExtender\addonDoc.py:321
msgid "Thanks also to"
msgstr "Merci également à"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:145
+#: addon\globalPlugins\brailleExtender\addonDoc.py:323
msgid "And thank you very much for all your feedback and comments."
msgstr "Et merci beaucoup pour tous vos retours et commentaires."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:148
+#: addon\globalPlugins\brailleExtender\addonDoc.py:327
#, python-format
msgid "%s's documentation"
msgstr "Documentation de %s"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:164
+#: addon\globalPlugins\brailleExtender\addonDoc.py:346
#, python-format
msgid "Emulates pressing %s on the system keyboard"
msgstr "Émuler l’appui de %s sur le clavier du système"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:171
+#: addon\globalPlugins\brailleExtender\addonDoc.py:357
msgid "description currently unavailable for this shortcut"
msgstr "description actuellement indisponible pour ce raccourci"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:189
+#: addon\globalPlugins\brailleExtender\addonDoc.py:377
msgid "caps lock"
msgstr "verrouillage majuscules"
-#: addon\globalPlugins\brailleExtender\configBE.py:40
-#: addon\globalPlugins\brailleExtender\configBE.py:47
-#: addon\globalPlugins\brailleExtender\configBE.py:61
-#: addon\globalPlugins\brailleExtender\settings.py:421
-msgid "none"
-msgstr "aucun"
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:107
+msgid "all tables"
+msgstr "toutes les tables braille"
-#: addon\globalPlugins\brailleExtender\configBE.py:41
-msgid "braille only"
-msgstr "braille seulement"
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:118
+msgid "Advanced input mode dictionary"
+msgstr "Dictionnaire du mode d'entrée avancé"
+
+#. Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
+#. Translators: The label for the combo box of dictionary entries in table dictionary dialog.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:125
+#: addon\globalPlugins\brailleExtender\dictionaries.py:132
+msgid "Dictionary &entries"
+msgstr "&Entrées du dictionnaire"
+
+#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:133
+msgid "Abbreviation"
+msgstr "Abréviation"
+
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:134
+msgid "Replace by"
+msgstr "&Remplacer par"
+
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:135
+msgid "Input table"
+msgstr "Table de saisie"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
+#. Translators: The label for a button in groups of tables dialog to add new entries.
+#. Translators: The label for a button in table dictionaries dialog to add new entries.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:141
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:257
+#: addon\globalPlugins\brailleExtender\dictionaries.py:149
+msgid "&Add"
+msgstr "&Ajouter"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
+#. Translators: The label for a button in groups of tables dialog to edit existing entries.
+#. Translators: The label for a button in table dictionaries dialog to edit existing entries.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:147
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:263
+#: addon\globalPlugins\brailleExtender\dictionaries.py:155
+msgid "&Edit"
+msgstr "&Éditer"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
+#. Translators: The label for a button in groups of tables dialog to remove existing entries.
+#. Translators: The label for a button in table dictionaries dialog to remove existing entries.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:153
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:269
+#: addon\globalPlugins\brailleExtender\dictionaries.py:161
+msgid "Re&move"
+msgstr "&Supprimer"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:161
+msgid "&Open the dictionary file in an editor"
+msgstr "&Ouvrir le fichier de dictionnaire actuel dans un éditeur"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
+#. Translators: The label for a button in table dictionaries dialog to reload dictionary.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:166
+#: addon\globalPlugins\brailleExtender\dictionaries.py:174
+msgid "&Reload the dictionary"
+msgstr "&Recharger le dictionnaire"
+
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:179
+#: addon\globalPlugins\brailleExtender\dictionaries.py:218
+msgid "Add Dictionary Entry"
+msgstr "Ajouter une entrée au dictionnaire"
+
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:225
+msgid "File doesn't exist yet"
+msgstr "Le fichier n'existe pas encore"
+
+#. Translators: This is the label for the edit dictionary entry dialog.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:246
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:358
+#: addon\globalPlugins\brailleExtender\dictionaries.py:290
+msgid "Edit Dictionary Entry"
+msgstr "Modifier une entrée de dictionnaire"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:251
+msgid "&Abreviation"
+msgstr "&Abréviation"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:256
+msgid "&Replace by"
+msgstr "&Remplacer par"
+
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:281
+msgid "Advanced input mode"
+msgstr "Mode de saisie avancée"
+
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:290
+msgid "E&xit the advanced input mode after typing one pattern"
+msgstr "&Quitter le mode de saisie avancée après avoir tapé un motif"
+
+#: addon\globalPlugins\brailleExtender\advancedInputMode.py:297
+msgid "Escape sign for Unicode values"
+msgstr "Signe d'échappement pour les valeurs Unicode"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:82
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:367
+#, fuzzy
+#| msgid "input only"
+msgid "input"
+msgstr "saisie seulement"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:83
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:367
+#, fuzzy
+#| msgid "output only"
+msgid "output"
+msgstr "affichage seulement"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:84
+msgid "input and output"
+msgstr "saisie et affichage"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:86
+msgid "None"
+msgstr "Aucune"
+
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:140
+msgid "Braille tables"
+msgstr "Tables braille"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:144
+msgid "Use the current input table"
+msgstr "Utiliser la table braille d’entrée actuelle"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:149
+#, fuzzy
+#| msgid "Prefered braille tables"
+msgid "Prefered input tables"
+msgstr "Tables braille préférées"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:155
+#, fuzzy
+#| msgid "Prefered braille tables"
+msgid "Prefered output tables"
+msgstr "Tables braille préférées"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:160
+#, fuzzy
+#| msgid "Input braille table for keyboard shortcut keys"
+msgid "Input braille table to use for keyboard shortcuts"
+msgstr "Table braille d’entrée pour les raccourcis clavier"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:170
+msgid "&Groups of tables"
+msgstr "&Groupes de tables"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:173
+msgid "Alternative and &custom braille tables"
+msgstr "Tables braille &alternatives et personnalisées"
+
+#. Translators: label of a dialog.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:177
+#, fuzzy
+#| msgid "Display tab signs as spaces"
+msgid "Display &tab signs as spaces"
+msgstr "Afficher les signes de tabulation en tant qu’espaces"
+
+#. Translators: label of a dialog.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:182
+#, fuzzy
+#| msgid "Number of space for a tab sign"
+msgid "Number of &space for a tab sign"
+msgstr "Nombre d’espaces pour un signe de tabulation"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:182
+#: addon\globalPlugins\brailleExtender\settings.py:105
+#: addon\globalPlugins\brailleExtender\settings.py:117
+msgid "for the currrent braille display"
+msgstr "pour l’afficheur braille actuel"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:203
+msgid "Tab size is invalid"
+msgstr "La taille de la tabulation n'est pas valide"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:204
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:386
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:394
+#: addon\globalPlugins\brailleExtender\settings.py:479
+msgid "Error"
+msgstr "Erreur"
+
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:240
+msgid "Groups of tables"
+msgstr "Groupes de tables"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:246
+msgid "List of table groups"
+msgstr "Liste des groupes de tables"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:248
+msgid "Name"
+msgstr "Nom"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:249
+msgid "Members"
+msgstr "Membres"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:250
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:366
+msgid "Usable in"
+msgstr "Utilisable en"
+
+#. Translators: The label for a button in groups of tables dialog to open groups of tables file in an editor.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:277
+#, fuzzy
+#| msgid "&Open the current dictionary file in an editor"
+msgid "&Open the groups of tables file in an editor"
+msgstr "&Ouvrir le fichier de dictionnaire actuel dans un éditeur"
+
+#. Translators: The label for a button in groups of tables dialog to reload groups of tables.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:282
+msgid "&Reload the groups of tables"
+msgstr "&Recharger les groupes de tables"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:296
+#, fuzzy
+#| msgid "Add gesture"
+msgid "Add group entry"
+msgstr "Ajouter un geste"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:362
+msgid "Group name"
+msgstr "Nom du groupe"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:363
+msgid "Group members"
+msgstr "Membres du groupe"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:385
+msgid "Please specify a group name"
+msgstr "Veuillez spécifier un nom de groupe"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:393
+msgid "Please select at least 2 tables"
+msgstr "Veuillez sélectionner au moins 2 tables"
+
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:405
+msgid "Custom braille tables"
+msgstr "Tables braille personnalisées"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:414
+msgid "Use a custom table as input table"
+msgstr "Utiliser une table personnalisée en tant que table de saisie"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:415
+msgid "Use a custom table as output table"
+msgstr "Utiliser une table personnalisée comme table d'affichage"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:416
+msgid "&Add a braille table"
+msgstr "&Ajouter une table braille"
+
+#. Translators: title of a dialog.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:440
+msgid "Add a braille table"
+msgstr "Ajouter une table braille"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:446
+msgid "Display name"
+msgstr "Nom d'affichage"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:447
+msgid "Description"
+msgstr "Description"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:448
+msgid "Path"
+msgstr "Répertoire"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:449
+#: addon\globalPlugins\brailleExtender\settings.py:354
+msgid "&Browse"
+msgstr "&Parcourir"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:452
+msgid "Contracted (grade 2) braille table"
+msgstr "Table braille abrégé (grade 2)"
+
+#. Translators: label of a dialog.
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:454
+msgid "Available for"
+msgstr "Disponible pour"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:454
+msgid "Input and output"
+msgstr "Saisie et affichage"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:454
+msgid "Input only"
+msgstr "Saisie seulement"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:454
+msgid "Output only"
+msgstr "Affichage seulement"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:460
+msgid "Choose a table file"
+msgstr "Choisissez un fichier de table"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:460
+msgid "Liblouis table files"
+msgstr "Fichiers de table Liblouis"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:472
+msgid "Please specify a display name."
+msgstr "Veuillez spécifier un nom d'affichage."
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:472
+msgid "Invalid display name"
+msgstr "Nom d'affichage invalide"
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:476
+#, python-format
+msgid "The specified path is not valid (%s)."
+msgstr "Le répertoire spécifié est invalide (%s)."
+
+#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:476
+msgid "Invalid path"
+msgstr "Répertoire invalide"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:55
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:253
+msgid "Use braille table behavior"
+msgstr "Utiliser le comportement de la table braille"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:56
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:254
+msgid "Dots 1-8 (⣿)"
+msgstr "Points 1-8 (⣿)"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:57
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:255
+msgid "Dots 1-6 (⠿)"
+msgstr "Points 1-6 (⠿)"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:58
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:256
+msgid "Empty cell (⠀)"
+msgstr "Cellule vide (⠀)"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:59
+msgid "Other dot pattern (e.g.: 6-123456)"
+msgstr "Autre motif de points (p. ex. : 6-123456)"
-#: addon\globalPlugins\brailleExtender\configBE.py:42
+#: addon\globalPlugins\brailleExtender\configBE.py:60
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:258
+msgid "Question mark (depending output table)"
+msgstr "Point d'interrogation (dépend de la table d'affichage)"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:61
+msgid "Other sign/pattern (e.g.: \\, ??)"
+msgstr "Autre signe / motif (p. ex. : \\, ??)"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:62
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:260
+msgid "Hexadecimal, Liblouis style"
+msgstr "Hexadécimale, style liblouis"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:63
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:261
+msgid "Hexadecimal, HUC8"
+msgstr "Hexadécimale, HUC8"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:64
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:262
+msgid "Hexadecimal, HUC6"
+msgstr "Hexadécimale, HUC6"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:71
+#: addon\globalPlugins\brailleExtender\configBE.py:78
+#: addon\globalPlugins\brailleExtender\configBE.py:92
+msgid "none"
+msgstr "aucun"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:72
+msgid "braille only"
+msgstr "braille seulement"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:73
msgid "speech only"
msgstr "parole seulement"
-#: addon\globalPlugins\brailleExtender\configBE.py:43
-#: addon\globalPlugins\brailleExtender\configBE.py:64
+#: addon\globalPlugins\brailleExtender\configBE.py:74
+#: addon\globalPlugins\brailleExtender\configBE.py:95
msgid "both"
msgstr "les deux"
-#: addon\globalPlugins\brailleExtender\configBE.py:48
+#: addon\globalPlugins\brailleExtender\configBE.py:79
msgid "dots 7 and 8"
msgstr "points 7 et 8"
-#: addon\globalPlugins\brailleExtender\configBE.py:49
+#: addon\globalPlugins\brailleExtender\configBE.py:80
msgid "dot 7"
msgstr "point 7"
-#: addon\globalPlugins\brailleExtender\configBE.py:50
+#: addon\globalPlugins\brailleExtender\configBE.py:81
msgid "dot 8"
msgstr "point 8"
-#: addon\globalPlugins\brailleExtender\configBE.py:56
+#: addon\globalPlugins\brailleExtender\configBE.py:87
msgid "stable"
msgstr "stable"
-#: addon\globalPlugins\brailleExtender\configBE.py:57
+#: addon\globalPlugins\brailleExtender\configBE.py:88
msgid "development"
msgstr "développement"
-#: addon\globalPlugins\brailleExtender\configBE.py:62
+#: addon\globalPlugins\brailleExtender\configBE.py:93
msgid "focus mode"
msgstr "mode focus"
-#: addon\globalPlugins\brailleExtender\configBE.py:63
+#: addon\globalPlugins\brailleExtender\configBE.py:94
msgid "review mode"
msgstr "mode revue"
-#: addon\globalPlugins\brailleExtender\configBE.py:92
+#: addon\globalPlugins\brailleExtender\configBE.py:103
+msgid "Fill a cell in two stages on both sides"
+msgstr "Remplir une cellule en deux étapes des deux côtés"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:104
+msgid "Fill a cell in two stages on one side (space = empty side)"
+msgstr "Remplissez une cellule en deux étapes sur un côté (espace = côté vide)"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:105
+msgid ""
+"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
+"character)"
+msgstr ""
+"Remplissez une cellule points par points (chaque point est une bascule, "
+"appuyez sur espace pour valider le caractère)"
+
+#: addon\globalPlugins\brailleExtender\configBE.py:123
msgid "last known"
msgstr "dernier connu"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:29
+#: addon\globalPlugins\brailleExtender\dictionaries.py:30
msgid "Sign"
msgstr "Signe"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:31
+#: addon\globalPlugins\brailleExtender\dictionaries.py:32
msgid "Math"
msgstr ""
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:33
+#: addon\globalPlugins\brailleExtender\dictionaries.py:34
msgid "Replace"
msgstr "Remplacement"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:41
+#: addon\globalPlugins\brailleExtender\dictionaries.py:42
msgid "Both (input and output)"
msgstr "Les deux (saisie et affichage)"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:42
+#: addon\globalPlugins\brailleExtender\dictionaries.py:43
msgid "Backward (input only)"
msgstr "Arrière (saisie seulement)"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:43
+#: addon\globalPlugins\brailleExtender\dictionaries.py:44
msgid "Forward (output only)"
msgstr "Avant (affichage seulement)"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:110
+#: addon\globalPlugins\brailleExtender\dictionaries.py:111
#, python-format
msgid ""
"One or more errors are present in dictionaries tables. Concerned "
@@ -1030,121 +1785,87 @@ msgstr ""
"Dictionnaires concernés : %s. Par conséquent, ces dictionnaires ne sont pas "
"chargés."
-#. Translators: The label for the combo box of dictionary entries in speech dictionary dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:131
-msgid "Dictionary &entries"
-msgstr "&Entrées du dictionnaire"
-
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:134
+#: addon\globalPlugins\brailleExtender\dictionaries.py:135
msgid "Comment"
msgstr "Commentaire"
#. Translators: The label for a column in dictionary entries list used to identify original character.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:136
+#: addon\globalPlugins\brailleExtender\dictionaries.py:137
msgid "Pattern"
msgstr "Modèle"
#. Translators: The label for a column in dictionary entries list and in a list of symbols from symbol pronunciation dialog used to identify replacement for a pattern or a symbol
-#: addon\globalPlugins\brailleExtender\dictionaries.py:138
+#: addon\globalPlugins\brailleExtender\dictionaries.py:139
msgid "Representation"
msgstr "Représentation"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon\globalPlugins\brailleExtender\dictionaries.py:140
+#: addon\globalPlugins\brailleExtender\dictionaries.py:141
msgid "Opcode"
msgstr ""
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon\globalPlugins\brailleExtender\dictionaries.py:142
+#: addon\globalPlugins\brailleExtender\dictionaries.py:143
msgid "Direction"
msgstr "Sens"
-#. Translators: The label for a button in speech dictionaries dialog to add new entries.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:148
-msgid "&Add"
-msgstr "&Ajouter"
-
-#. Translators: The label for a button in speech dictionaries dialog to edit existing entries.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:154
-msgid "&Edit"
-msgstr "&Éditer"
-
-#. Translators: The label for a button in speech dictionaries dialog to remove existing entries.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:160
-msgid "Re&move"
-msgstr "&Supprimer"
-
-#. Translators: The label for a button in speech dictionaries dialog to open dictionary file in an editor.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:168
+#. Translators: The label for a button in table dictionaries dialog to open dictionary file in an editor.
+#: addon\globalPlugins\brailleExtender\dictionaries.py:169
msgid "&Open the current dictionary file in an editor"
msgstr "&Ouvrir le fichier de dictionnaire actuel dans un éditeur"
-#. Translators: The label for a button in speech dictionaries dialog to reload dictionary.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:173
-msgid "&Reload the dictionary"
-msgstr "&Recharger le dictionnaire"
-
-#: addon\globalPlugins\brailleExtender\dictionaries.py:216
-msgid "Add Dictionary Entry"
-msgstr "Ajouter une entrée au dictionnaire"
-
-#. Translators: This is the label for the edit dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:288
-msgid "Edit Dictionary Entry"
-msgstr "Modifier une entrée de dictionnaire"
-
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:294
+#: addon\globalPlugins\brailleExtender\dictionaries.py:296
msgid "Dictionary"
msgstr "Dictionnaire"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:296
+#: addon\globalPlugins\brailleExtender\dictionaries.py:298
msgid "Global"
msgstr "Global"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:296
+#: addon\globalPlugins\brailleExtender\dictionaries.py:298
msgid "Table"
msgstr "Table"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:296
+#: addon\globalPlugins\brailleExtender\dictionaries.py:298
msgid "Temporary"
msgstr "Temporaire"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:302
+#: addon\globalPlugins\brailleExtender\dictionaries.py:304
msgid "See &entries"
msgstr "Consulter les &entrées"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:307
+#: addon\globalPlugins\brailleExtender\dictionaries.py:309
msgid "&Text pattern/sign"
msgstr "&Modèle de texte/signe"
#. Translators: This is a label for an edit field in add dictionary entry dialog and in punctuation/symbol pronunciation dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:312
+#: addon\globalPlugins\brailleExtender\dictionaries.py:314
msgid "&Braille representation"
msgstr "Représentation &braille"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:316
+#: addon\globalPlugins\brailleExtender\dictionaries.py:318
msgid "&Comment"
msgstr "&Commentaire"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:320
+#: addon\globalPlugins\brailleExtender\dictionaries.py:322
msgid "&Opcode"
msgstr ""
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:325
+#: addon\globalPlugins\brailleExtender\dictionaries.py:327
msgid "&Direction"
msgstr "&Sens"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:366
+#: addon\globalPlugins\brailleExtender\dictionaries.py:368
msgid "Text pattern/sign field is empty."
msgstr "Le champ de modèle de texte/signe est vide."
-#: addon\globalPlugins\brailleExtender\dictionaries.py:373
+#: addon\globalPlugins\brailleExtender\dictionaries.py:375
#, python-format
msgid ""
"Invalid value for 'text pattern/sign' field. You must specify a character "
@@ -1153,7 +1874,7 @@ msgstr ""
"La valeur du champ « modèle de texte/signe » est incorrecte. Vous devez "
"spécifier un caractère avec cet opcode. Ex. : %s"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:377
+#: addon\globalPlugins\brailleExtender\dictionaries.py:379
#, python-format
msgid ""
"'Braille representation' field is empty, you must specify something with "
@@ -1162,7 +1883,7 @@ msgstr ""
"Le champ de représentation braille est vide. Avec cet opcode, vous devez "
"spécifier quelque chose. Ex. : %s"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:381
+#: addon\globalPlugins\brailleExtender\dictionaries.py:383
#, python-format
msgid ""
"Invalid value for 'braille representation' field. You must enter dot "
@@ -1171,190 +1892,201 @@ msgstr ""
"La valeur du champ « représentation braille » est incorrecte. Avec cet "
"opcode, vous devez entrer des motifs de points. Ex. : %s"
-#: addon\globalPlugins\brailleExtender\settings.py:32
+#. Translators: Reported when translation didn't succeed due to unsupported input.
+#: addon\globalPlugins\brailleExtender\patchs.py:379
+msgid "Unsupported input"
+msgstr "Entrée non prise en charge"
+
+#: addon\globalPlugins\brailleExtender\patchs.py:438
+msgid "Unsupported input method"
+msgstr "Méthode de saisie non prise en charge"
+
+#: addon\globalPlugins\brailleExtender\settings.py:36
msgid "The feature implementation is in progress. Thanks for your patience."
msgstr ""
"L'implémentation de cette fonctionnalité est en cours. Merci pour votre "
"patience."
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:38
-#: addon\globalPlugins\brailleExtender\settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:42
+#: addon\globalPlugins\brailleExtender\settings.py:214
msgid "General"
msgstr "Général"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:45
+#: addon\globalPlugins\brailleExtender\settings.py:49
msgid "Check for &updates automatically"
msgstr "Vérifier les &mise à jour automatiquement"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:49
+#: addon\globalPlugins\brailleExtender\settings.py:53
msgid "Add-on update channel"
msgstr "Canal de mise à jour"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:56
+#: addon\globalPlugins\brailleExtender\settings.py:60
msgid "Say current line while scrolling in"
msgstr "Énoncer la ligne actuelle lors du défilement en"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:60
+#: addon\globalPlugins\brailleExtender\settings.py:64
msgid "Speech interrupt when scrolling on same line"
msgstr "Interruption de la parole lors du défilement sur une même ligne"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:64
+#: addon\globalPlugins\brailleExtender\settings.py:68
msgid "Speech interrupt for unknown gestures"
msgstr "Interrompre la parole lors de gestes inconnus"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:68
+#: addon\globalPlugins\brailleExtender\settings.py:72
msgid "Announce the character while moving with routing buttons"
msgstr "Annoncer le caractère lors du déplacement avec les boutons de routage"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:72
+#: addon\globalPlugins\brailleExtender\settings.py:76
msgid "Use cursor keys to route cursor in review mode"
msgstr "En mode revue, utiliser les flèches pour déplacer le curseur"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:76
+#: addon\globalPlugins\brailleExtender\settings.py:80
msgid "Display time and date infinitely"
msgstr "Afficher l’heure et la date infiniment"
-#: addon\globalPlugins\brailleExtender\settings.py:78
+#: addon\globalPlugins\brailleExtender\settings.py:82
msgid "Automatic review mode for apps with terminal"
msgstr "Mode de révision automatique pour les applications avec terminal"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:82
+#: addon\globalPlugins\brailleExtender\settings.py:86
msgid "Feedback for volume change in"
msgstr "Retour pour le changement de volume en"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:90
+#: addon\globalPlugins\brailleExtender\settings.py:94
msgid "Feedback for modifier keys in"
msgstr "Retour pour les touches de modification en"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:96
+#: addon\globalPlugins\brailleExtender\settings.py:100
msgid "Play beeps for modifier keys"
msgstr "Jouer des bips pour les touches de modification"
-#: addon\globalPlugins\brailleExtender\settings.py:101
+#: addon\globalPlugins\brailleExtender\settings.py:105
msgid "Right margin on cells"
msgstr "Marge droite sur les cellules"
-#: addon\globalPlugins\brailleExtender\settings.py:101
-#: addon\globalPlugins\brailleExtender\settings.py:113
-#: addon\globalPlugins\brailleExtender\settings.py:356
-msgid "for the currrent braille display"
-msgstr "pour l’afficheur braille actuel"
-
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:105
+#: addon\globalPlugins\brailleExtender\settings.py:109
msgid "Braille keyboard configuration"
msgstr "Configuration du clavier braille"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:109
+#: addon\globalPlugins\brailleExtender\settings.py:113
msgid "Reverse forward scroll and back scroll buttons"
msgstr "Inverser les boutons de défilement arrière et avant"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:113
+#: addon\globalPlugins\brailleExtender\settings.py:117
msgid "Autoscroll delay (ms)"
msgstr "Délai pour l’auto-défilement (ms)"
-#: addon\globalPlugins\brailleExtender\settings.py:114
+#: addon\globalPlugins\brailleExtender\settings.py:118
msgid "First braille display preferred"
msgstr "Premier afficheur braille préféré"
-#: addon\globalPlugins\brailleExtender\settings.py:116
+#: addon\globalPlugins\brailleExtender\settings.py:120
msgid "Second braille display preferred"
msgstr "Second afficheur braille préféré"
+#: addon\globalPlugins\brailleExtender\settings.py:122
+msgid "One-handed mode"
+msgstr "Mode unimanuel"
+
+#: addon\globalPlugins\brailleExtender\settings.py:126
+msgid "One hand mode method"
+msgstr "Méthode du mode unimanuel"
+
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:149
+#: addon\globalPlugins\brailleExtender\settings.py:161
msgid "Text attributes"
msgstr "Attributs de texte"
-#: addon\globalPlugins\brailleExtender\settings.py:153
-#: addon\globalPlugins\brailleExtender\settings.py:200
+#: addon\globalPlugins\brailleExtender\settings.py:165
+#: addon\globalPlugins\brailleExtender\settings.py:212
msgid "Enable this feature"
msgstr "Activer cette fonctionnalité"
-#: addon\globalPlugins\brailleExtender\settings.py:155
+#: addon\globalPlugins\brailleExtender\settings.py:167
msgid "Show spelling errors with"
msgstr "Montrer les erreurs d’orthographe avec"
-#: addon\globalPlugins\brailleExtender\settings.py:157
+#: addon\globalPlugins\brailleExtender\settings.py:169
msgid "Show bold with"
msgstr "Montrer la mise en gras avec"
-#: addon\globalPlugins\brailleExtender\settings.py:159
+#: addon\globalPlugins\brailleExtender\settings.py:171
msgid "Show italic with"
msgstr "Montrer la mise en italique avec"
-#: addon\globalPlugins\brailleExtender\settings.py:161
+#: addon\globalPlugins\brailleExtender\settings.py:173
msgid "Show underline with"
msgstr "Montrer la mise en souligné avec"
-#: addon\globalPlugins\brailleExtender\settings.py:163
+#: addon\globalPlugins\brailleExtender\settings.py:175
msgid "Show strikethrough with"
msgstr "Montrer les biffures avec"
-#: addon\globalPlugins\brailleExtender\settings.py:165
+#: addon\globalPlugins\brailleExtender\settings.py:177
msgid "Show subscript with"
msgstr "Montrer la mise en indice avec"
-#: addon\globalPlugins\brailleExtender\settings.py:167
+#: addon\globalPlugins\brailleExtender\settings.py:179
msgid "Show superscript with"
msgstr "Montrer la mise en exposant avec"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:193
+#: addon\globalPlugins\brailleExtender\settings.py:205
msgid "Role labels"
msgstr "Étiquettes de rôle"
-#: addon\globalPlugins\brailleExtender\settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:214
msgid "Role category"
msgstr "Catégorie de rôle"
-#: addon\globalPlugins\brailleExtender\settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:214
msgid "Landmark"
msgstr "Repère"
-#: addon\globalPlugins\brailleExtender\settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:214
msgid "Positive state"
msgstr "État positif"
-#: addon\globalPlugins\brailleExtender\settings.py:202
+#: addon\globalPlugins\brailleExtender\settings.py:214
msgid "Negative state"
msgstr "État négatif"
-#: addon\globalPlugins\brailleExtender\settings.py:206
+#: addon\globalPlugins\brailleExtender\settings.py:218
msgid "Role"
msgstr "Rôle"
-#: addon\globalPlugins\brailleExtender\settings.py:208
+#: addon\globalPlugins\brailleExtender\settings.py:220
msgid "Actual or new label"
msgstr "Étiquette actuelle ou nouvelle"
-#: addon\globalPlugins\brailleExtender\settings.py:212
+#: addon\globalPlugins\brailleExtender\settings.py:224
msgid "&Reset this role label"
msgstr "&Réinitialiser cette étiquette de rôle"
-#: addon\globalPlugins\brailleExtender\settings.py:214
+#: addon\globalPlugins\brailleExtender\settings.py:226
msgid "Reset all role labels"
msgstr "Réinitialiser toutes les étiquettes de rôle"
-#: addon\globalPlugins\brailleExtender\settings.py:279
+#: addon\globalPlugins\brailleExtender\settings.py:291
msgid "You have no customized label."
msgstr "Vous n’avez aucune étiquette personnalisée."
-#: addon\globalPlugins\brailleExtender\settings.py:282
+#: addon\globalPlugins\brailleExtender\settings.py:294
#, python-format
msgid ""
"Do you want really reset all labels? Currently, you have %d customized "
@@ -1363,237 +2095,42 @@ msgstr ""
"Voulez-vous vraiment réinitialiser toutes les étiquettes ? Actuellement, "
"vous avez %d étiquettes personnalisées."
-#: addon\globalPlugins\brailleExtender\settings.py:283
-#: addon\globalPlugins\brailleExtender\settings.py:657
+#: addon\globalPlugins\brailleExtender\settings.py:295
+#: addon\globalPlugins\brailleExtender\settings.py:417
msgid "Confirmation"
msgstr "Confirmation"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:325
-msgid "Braille tables"
-msgstr "Tables braille"
-
-#: addon\globalPlugins\brailleExtender\settings.py:330
-msgid "Use the current input table"
-msgstr "Utiliser la table braille d’entrée actuelle"
-
-#: addon\globalPlugins\brailleExtender\settings.py:339
-msgid "Prefered braille tables"
-msgstr "Tables braille préférées"
-
-#: addon\globalPlugins\brailleExtender\settings.py:339
-msgid "press F1 for help"
-msgstr "pressez F1 pour de l’aide"
-
-#: addon\globalPlugins\brailleExtender\settings.py:343
-msgid "Input braille table for keyboard shortcut keys"
-msgstr "Table braille d’entrée pour les raccourcis clavier"
-
-#: addon\globalPlugins\brailleExtender\settings.py:345
-msgid "None"
-msgstr "Aucune"
-
-#: addon\globalPlugins\brailleExtender\settings.py:348
-msgid "Secondary output table to use"
-msgstr "Table braille secondaire à utiliser"
-
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:352
-msgid "Display tab signs as spaces"
-msgstr "Afficher les signes de tabulation en tant qu’espaces"
-
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:356
-msgid "Number of space for a tab sign"
-msgstr "Nombre d’espaces pour un signe de tabulation"
-
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:358
-msgid "Prevent undefined characters with Hexadecimal Unicode value"
-msgstr ""
-"Empêcher les caractères non définis avec leur valeur hexadécimale Unicode"
-
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:361
-msgid ""
-"Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
-msgstr ""
-"Afficher les caractères non définis comme (p. ex. : 0 pour une cellule vide, "
-"12345678, 6-123456)"
-
-#: addon\globalPlugins\brailleExtender\settings.py:363
-msgid "Alternative and &custom braille tables"
-msgstr "Tables braille &alternatives et personnalisées"
-
-#: addon\globalPlugins\brailleExtender\settings.py:420
-msgid "input and output"
-msgstr "saisie et affichage"
-
-#: addon\globalPlugins\brailleExtender\settings.py:422
-msgid "input only"
-msgstr "saisie seulement"
-
-#: addon\globalPlugins\brailleExtender\settings.py:423
-msgid "output only"
-msgstr "affichage seulement"
-
-#: addon\globalPlugins\brailleExtender\settings.py:454
-#, python-format
-msgid "Table name: %s"
-msgstr "Nom de la table : %s"
-
-#: addon\globalPlugins\brailleExtender\settings.py:455
-#, python-format
-msgid "File name: %s"
-msgstr "Nom du fichier : %s"
-
-#: addon\globalPlugins\brailleExtender\settings.py:456
-#, python-format
-msgid "In switches: %s"
-msgstr "Dans les commutateurs : %s"
-
-#: addon\globalPlugins\brailleExtender\settings.py:457
-msgid "About this table"
-msgstr "À propos de cette table"
-
-#: addon\globalPlugins\brailleExtender\settings.py:460
-msgid ""
-"In this combo box, all tables are present. Press space bar, left or right "
-"arrow keys to include (or not) the selected table in switches"
-msgstr ""
-"Dans cette zone de liste déroulante, toutes les tables sont présentes. "
-"Appuyez sur la barre d’espace, les flèches gauche ou droite pour inclure (ou "
-"non) la table sélectionnée dans les commutateurs"
-
-#: addon\globalPlugins\brailleExtender\settings.py:461
-msgid ""
-"You can also press 'comma' key to get the file name of the selected table "
-"and 'semicolon' key to view miscellaneous infos on the selected table"
-msgstr ""
-"Vous pouvez également appuyer sur la touche « virgule » pour obtenir le nom "
-"du fichier de la table sélectionnée et sur la touche « point-virgule » pour "
-"afficher diverses informations sur la table sélectionnée"
-
-#: addon\globalPlugins\brailleExtender\settings.py:462
-msgid "Contextual help"
-msgstr "Aide contextuelle"
-
-#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:478
-msgid "Custom braille tables"
-msgstr "Tables braille personnalisées"
-
-#: addon\globalPlugins\brailleExtender\settings.py:488
-msgid "Use a custom table as input table"
-msgstr "Utiliser une table personnalisée en tant que table de saisie"
-
-#: addon\globalPlugins\brailleExtender\settings.py:489
-msgid "Use a custom table as output table"
-msgstr "Utiliser une table personnalisée comme table d'affichage"
-
-#: addon\globalPlugins\brailleExtender\settings.py:490
-msgid "&Add a braille table"
-msgstr "&Ajouter une table braille"
-
-#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:514
-msgid "Add a braille table"
-msgstr "Ajouter une table braille"
-
-#: addon\globalPlugins\brailleExtender\settings.py:520
-msgid "Display name"
-msgstr "Nom d'affichage"
-
-#: addon\globalPlugins\brailleExtender\settings.py:521
-msgid "Description"
-msgstr "Description"
-
-#: addon\globalPlugins\brailleExtender\settings.py:522
-msgid "Path"
-msgstr "Répertoire"
-
-#: addon\globalPlugins\brailleExtender\settings.py:523
-#: addon\globalPlugins\brailleExtender\settings.py:594
-msgid "&Browse"
-msgstr "&Parcourir"
-
-#: addon\globalPlugins\brailleExtender\settings.py:526
-msgid "Contracted (grade 2) braille table"
-msgstr "Table braille abrégé (grade 2)"
-
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:528
-msgid "Available for"
-msgstr "Disponible pour"
-
-#: addon\globalPlugins\brailleExtender\settings.py:528
-msgid "Input and output"
-msgstr "Saisie et affichage"
-
-#: addon\globalPlugins\brailleExtender\settings.py:528
-msgid "Input only"
-msgstr "Saisie seulement"
-
-#: addon\globalPlugins\brailleExtender\settings.py:528
-msgid "Output only"
-msgstr "Affichage seulement"
-
-#: addon\globalPlugins\brailleExtender\settings.py:534
-msgid "Choose a table file"
-msgstr "Choisissez un fichier de table"
-
-#: addon\globalPlugins\brailleExtender\settings.py:534
-msgid "Liblouis table files"
-msgstr "Fichiers de table Liblouis"
-
-#: addon\globalPlugins\brailleExtender\settings.py:546
-msgid "Please specify a display name."
-msgstr "Veuillez spécifier un nom d'affichage."
-
-#: addon\globalPlugins\brailleExtender\settings.py:546
-msgid "Invalid display name"
-msgstr "Nom d'affichage invalide"
-
-#: addon\globalPlugins\brailleExtender\settings.py:550
-#, python-format
-msgid "The specified path is not valid (%s)."
-msgstr "Le répertoire spécifié est invalide (%s)."
-
-#: addon\globalPlugins\brailleExtender\settings.py:550
-msgid "Invalid path"
-msgstr "Répertoire invalide"
-
-#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:578
+#: addon\globalPlugins\brailleExtender\settings.py:338
msgid "Quick launches"
msgstr "Lancements rapides"
-#: addon\globalPlugins\brailleExtender\settings.py:589
+#: addon\globalPlugins\brailleExtender\settings.py:349
msgid "&Gestures"
msgstr "&Gestes"
-#: addon\globalPlugins\brailleExtender\settings.py:592
+#: addon\globalPlugins\brailleExtender\settings.py:352
msgid "Location (file path, URL or command)"
msgstr "Emplacement (chemin de fichier, URL ou commande)"
-#: addon\globalPlugins\brailleExtender\settings.py:595
+#: addon\globalPlugins\brailleExtender\settings.py:355
msgid "&Remove this gesture"
msgstr "&Supprimer ce geste"
-#: addon\globalPlugins\brailleExtender\settings.py:596
+#: addon\globalPlugins\brailleExtender\settings.py:356
msgid "&Add a quick launch"
msgstr "&Ajouter un lancement rapide"
-#: addon\globalPlugins\brailleExtender\settings.py:625
+#: addon\globalPlugins\brailleExtender\settings.py:385
msgid "Unable to associate this gesture. Please enter another, now"
msgstr ""
"Impossible d’associer ce geste. Veuillez en entrer un autre, maintenant"
-#: addon\globalPlugins\brailleExtender\settings.py:630
+#: addon\globalPlugins\brailleExtender\settings.py:390
msgid "Out of capture"
msgstr "Hors de capture"
-#: addon\globalPlugins\brailleExtender\settings.py:632
+#: addon\globalPlugins\brailleExtender\settings.py:392
#, python-brace-format
msgid ""
"Please enter a gesture from your {NAME_BRAILLE_DISPLAY} braille display. "
@@ -1602,21 +2139,21 @@ msgstr ""
"Veuillez entrer un geste depuis votre afficheur braille "
"{NAME_BRAILLE_DISPLAY}. Appuyez sur espace pour annuler."
-#: addon\globalPlugins\brailleExtender\settings.py:640
+#: addon\globalPlugins\brailleExtender\settings.py:400
#, python-format
msgid "OK. The gesture captured is %s"
msgstr "OK. Le geste capturé est %s"
-#: addon\globalPlugins\brailleExtender\settings.py:657
+#: addon\globalPlugins\brailleExtender\settings.py:417
msgid "Are you sure to want to delete this shorcut?"
msgstr "Êtes-vous sûr de vouloir supprimer ce raccourci ?"
-#: addon\globalPlugins\brailleExtender\settings.py:666
+#: addon\globalPlugins\brailleExtender\settings.py:426
#, python-brace-format
msgid "{BRAILLEGESTURE} removed"
msgstr "{BRAILLEGESTURE} supprimé"
-#: addon\globalPlugins\brailleExtender\settings.py:677
+#: addon\globalPlugins\brailleExtender\settings.py:437
msgid ""
"Please enter the desired gesture for the new quick launch. Press \"space bar"
"\" to cancel"
@@ -1624,107 +2161,157 @@ msgstr ""
"Veuillez entrer le geste souhaité pour ce nouveau lancement rapide. Pressez "
"\"barre espace\" pour annuler."
-#: addon\globalPlugins\brailleExtender\settings.py:680
+#: addon\globalPlugins\brailleExtender\settings.py:440
msgid "Don't add a quick launch"
msgstr "Ne pas ajouter de lancement rapide"
-#: addon\globalPlugins\brailleExtender\settings.py:706
+#: addon\globalPlugins\brailleExtender\settings.py:466
#, python-brace-format
msgid "Choose a file for {0}"
msgstr "Choisissez un fichier pour {0}"
-#: addon\globalPlugins\brailleExtender\settings.py:719
+#: addon\globalPlugins\brailleExtender\settings.py:479
msgid "Please create or select a quick launch first"
msgstr "Veuillez d'abord créer ou sélectionner un lancement rapide"
-#: addon\globalPlugins\brailleExtender\settings.py:719
-msgid "Error"
-msgstr "Erreur"
-
-#: addon\globalPlugins\brailleExtender\settings.py:723
+#: addon\globalPlugins\brailleExtender\settings.py:483
msgid "Profiles editor"
msgstr "Éditeur de profils"
-#: addon\globalPlugins\brailleExtender\settings.py:734
+#: addon\globalPlugins\brailleExtender\settings.py:494
msgid "You must have a braille display to editing a profile"
msgstr "Vous devez avoir un afficheur braille pour modifier un profil"
-#: addon\globalPlugins\brailleExtender\settings.py:738
+#: addon\globalPlugins\brailleExtender\settings.py:498
msgid ""
"Profiles directory is not present or accessible. Unable to edit profiles"
msgstr ""
"Le répertoire des profils n’est pas présent ou accessible. Impossible de "
"modifier les profils"
-#: addon\globalPlugins\brailleExtender\settings.py:744
+#: addon\globalPlugins\brailleExtender\settings.py:504
msgid "Profile to edit"
msgstr "Profil à éditer"
-#: addon\globalPlugins\brailleExtender\settings.py:750
+#: addon\globalPlugins\brailleExtender\settings.py:510
msgid "Gestures category"
msgstr "Catégorie de gestes"
-#: addon\globalPlugins\brailleExtender\settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:511
msgid "Single keys"
msgstr "Touches simples"
-#: addon\globalPlugins\brailleExtender\settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:511
msgid "Practical shortcuts"
msgstr "Raccourcis usuels"
-#: addon\globalPlugins\brailleExtender\settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:511
msgid "NVDA commands"
msgstr "Commandes NVDA"
-#: addon\globalPlugins\brailleExtender\settings.py:751
+#: addon\globalPlugins\brailleExtender\settings.py:511
msgid "Addon features"
msgstr "Fonctionnalités du module"
-#: addon\globalPlugins\brailleExtender\settings.py:755
+#: addon\globalPlugins\brailleExtender\settings.py:515
msgid "Gestures list"
msgstr "Liste des gestes"
-#: addon\globalPlugins\brailleExtender\settings.py:764
+#: addon\globalPlugins\brailleExtender\settings.py:524
msgid "Add gesture"
msgstr "Ajouter un geste"
-#: addon\globalPlugins\brailleExtender\settings.py:766
+#: addon\globalPlugins\brailleExtender\settings.py:526
msgid "Remove this gesture"
msgstr "Supprimer ce geste"
-#: addon\globalPlugins\brailleExtender\settings.py:769
+#: addon\globalPlugins\brailleExtender\settings.py:529
msgid "Assign a braille gesture"
msgstr "Assigner un geste braille"
-#: addon\globalPlugins\brailleExtender\settings.py:776
+#: addon\globalPlugins\brailleExtender\settings.py:536
msgid "Remove this profile"
msgstr "Supprimer ce profil"
-#: addon\globalPlugins\brailleExtender\settings.py:779
+#: addon\globalPlugins\brailleExtender\settings.py:539
msgid "Add a profile"
msgstr "Ajouter un profil"
-#: addon\globalPlugins\brailleExtender\settings.py:785
+#: addon\globalPlugins\brailleExtender\settings.py:545
msgid "Name for the new profile"
msgstr "Nom pour le nouveau profil"
-#: addon\globalPlugins\brailleExtender\settings.py:791
+#: addon\globalPlugins\brailleExtender\settings.py:551
msgid "Create"
msgstr "Créer"
-#: addon\globalPlugins\brailleExtender\settings.py:854
+#: addon\globalPlugins\brailleExtender\settings.py:614
msgid "Unable to load this profile. Malformed or inaccessible file"
msgstr "Impossible de charger ce profil. Fichier invalide ou inaccessible"
-#: addon\globalPlugins\brailleExtender\settings.py:873
+#: addon\globalPlugins\brailleExtender\settings.py:633
msgid "Undefined"
msgstr "Indéfini"
#. Translators: title of add-on parameters dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:902
+#: addon\globalPlugins\brailleExtender\settings.py:664
msgid "Settings"
msgstr "Paramètres"
+#. Translators: label of a dialog.
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:249
+#, fuzzy
+#| msgid "Representation"
+msgid "Representation &method"
+msgstr "Représentation"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:257
+#, python-brace-format
+msgid "Other dot pattern (e.g.: {dotPatternSample})"
+msgstr "Autre motif de points (p. ex. : {dotPatternSample})"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:259
+#, python-brace-format
+msgid "Other sign/pattern (e.g.: {signPatternSample})"
+msgstr "Autre signe / motif (p. ex. : {signPatternSample})"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:278
+msgid "Specify another pattern"
+msgstr "Spécifiez un autre motif"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:283
+msgid "Describe undefined characters if possible"
+msgstr "Décrire si possible les caractères indéfinis"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:292
+msgid "Also describe extended characters (e.g.: country flags)"
+msgstr ""
+"Décrire également les caractères étendus (par exemple: drapeaux de pays)"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:299
+msgid "Start tag"
+msgstr "Marqueur de début"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:304
+msgid "End tag"
+msgstr "Marqueur de fin"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:315
+msgid "Language"
+msgstr "Langue"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:318
+#, fuzzy
+#| msgid "Use the current input table"
+msgid "Use the current output table"
+msgstr "Utiliser la table braille d’entrée actuelle"
+
+#: addon\globalPlugins\brailleExtender\undefinedChars.py:324
+#, fuzzy
+#| msgid "Braille tables"
+msgid "Braille table"
+msgstr "Tables braille"
+
#: addon\globalPlugins\brailleExtender\updateCheck.py:61
#, python-format
msgid "New version available, version %s. Do you want to download it now?"
@@ -1759,69 +2346,69 @@ msgstr ""
msgid "{addonName}'s update"
msgstr "Mise à jour de {addonName}"
-#: addon\globalPlugins\brailleExtender\utils.py:189
+#: addon\globalPlugins\brailleExtender\utils.py:194
msgid "Reload successful"
msgstr "Rechargement réussi"
-#: addon\globalPlugins\brailleExtender\utils.py:192
+#: addon\globalPlugins\brailleExtender\utils.py:197
msgid "Reload failed"
msgstr "Rechargement échoué"
-#: addon\globalPlugins\brailleExtender\utils.py:197
-#: addon\globalPlugins\brailleExtender\utils.py:207
+#: addon\globalPlugins\brailleExtender\utils.py:203
+#: addon\globalPlugins\brailleExtender\utils.py:218
msgid "Not a character"
msgstr "Pas un caractère."
-#: addon\globalPlugins\brailleExtender\utils.py:201
-msgid "unknown"
+#: addon\globalPlugins\brailleExtender\utils.py:208
+msgid "N/A"
msgstr ""
-#: addon\globalPlugins\brailleExtender\utils.py:330
+#: addon\globalPlugins\brailleExtender\utils.py:312
msgid "Available combinations"
msgstr "Combinaisons disponibles"
-#: addon\globalPlugins\brailleExtender\utils.py:332
+#: addon\globalPlugins\brailleExtender\utils.py:314
msgid "One combination available"
msgstr "Une combinaison disponible"
-#: addon\globalPlugins\brailleExtender\utils.py:349
+#: addon\globalPlugins\brailleExtender\utils.py:325
msgid "space"
msgstr "espace"
-#: addon\globalPlugins\brailleExtender\utils.py:350
+#: addon\globalPlugins\brailleExtender\utils.py:326
msgid "left SHIFT"
msgstr "SHIFT gauche"
-#: addon\globalPlugins\brailleExtender\utils.py:351
+#: addon\globalPlugins\brailleExtender\utils.py:327
msgid "right SHIFT"
msgstr "SHIFT droite"
-#: addon\globalPlugins\brailleExtender\utils.py:352
+#: addon\globalPlugins\brailleExtender\utils.py:328
msgid "left selector"
msgstr "sélecteur gauche"
-#: addon\globalPlugins\brailleExtender\utils.py:353
+#: addon\globalPlugins\brailleExtender\utils.py:329
msgid "right selector"
msgstr "sélecteur droit"
-#: addon\globalPlugins\brailleExtender\utils.py:354
+#: addon\globalPlugins\brailleExtender\utils.py:330
msgid "dot"
msgstr "point"
-#: addon\globalPlugins\brailleExtender\utils.py:369
+#: addon\globalPlugins\brailleExtender\utils.py:345
#, python-brace-format
msgid "{gesture} on {brailleDisplay}"
msgstr "{gesture} sur {brailleDisplay}"
-#: addon\globalPlugins\brailleExtender\utils.py:446
+#: addon\globalPlugins\brailleExtender\utils.py:422
msgid "No text"
msgstr "Pas de texte"
-#: addon\globalPlugins\brailleExtender\utils.py:455
+#: addon\globalPlugins\brailleExtender\utils.py:431
msgid "Not text"
msgstr "Ce n’est pas du texte"
-#: addon\globalPlugins\brailleExtender\utils.py:475
+#: addon\globalPlugins\brailleExtender\utils.py:451
msgid "No text selected"
msgstr "Pas de sélection de texte"
@@ -1941,6 +2528,83 @@ msgstr ""
msgid "actions and quick navigation through a rotor"
msgstr "actions et navigation rapide au travers d’un rotor"
+#~ msgid "Braille &dictionaries"
+#~ msgstr "&Dictionnaires braille"
+
+#~ msgid "Please use NVDA 2017.3 minimum for this feature"
+#~ msgstr "Veuillez utiliser NVDA 2017.3 pour cette fonctionnalité"
+
+#~ msgid "%s braille display"
+#~ msgstr "afficheur braille %s"
+
+#~ msgid "profile loaded: %s"
+#~ msgstr "profile chargé : %s"
+
+#~ msgid ""
+#~ "In virtual documents (HTML/PDF/…) you can navigate element type by "
+#~ "element type using keyboard. These navigation keys should work with your "
+#~ "braille terminal equally.
In addition to these, there are some "
+#~ "specific shortcuts:"
+#~ msgstr ""
+#~ "Dans les documents virtuels (HTML/PDF/…) il vous est possible de naviguer "
+#~ "de type d’élément en type d’élément à l’aide de touche clavier. Ces "
+#~ "touches de navigation devraient fonctionner depuis le terminal braille."
+#~ "p>
En plus de ceux-ci, il existe quelques raccourcis particuliers :"
+
+#~ msgid "Shortcuts on system keyboard specific to the add-on"
+#~ msgstr "Raccourcis sur le clavier du système spécifiques au module"
+
+#~ msgid "Copyright (C) 2016-2020 André-Abush Clause and other contributors:"
+#~ msgstr ""
+#~ "Copyright (C) 2016-2020 André-Abush Clause, et d’autres contributeurs :"
+
+#~ msgid "press F1 for help"
+#~ msgstr "pressez F1 pour de l’aide"
+
+#~ msgid "Secondary output table to use"
+#~ msgstr "Table braille secondaire à utiliser"
+
+#~ msgid "Prevent undefined characters with Hexadecimal Unicode value"
+#~ msgstr ""
+#~ "Empêcher les caractères non définis avec leur valeur hexadécimale Unicode"
+
+#~ msgid ""
+#~ "Show undefined characters as (e.g.: 0 for blank cell, 12345678, 6-123456)"
+#~ msgstr ""
+#~ "Afficher les caractères non définis comme (p. ex. : 0 pour une cellule "
+#~ "vide, 12345678, 6-123456)"
+
+#~ msgid "Table name: %s"
+#~ msgstr "Nom de la table : %s"
+
+#~ msgid "File name: %s"
+#~ msgstr "Nom du fichier : %s"
+
+#~ msgid "In switches: %s"
+#~ msgstr "Dans les commutateurs : %s"
+
+#~ msgid "About this table"
+#~ msgstr "À propos de cette table"
+
+#~ msgid ""
+#~ "In this combo box, all tables are present. Press space bar, left or right "
+#~ "arrow keys to include (or not) the selected table in switches"
+#~ msgstr ""
+#~ "Dans cette zone de liste déroulante, toutes les tables sont présentes. "
+#~ "Appuyez sur la barre d’espace, les flèches gauche ou droite pour inclure "
+#~ "(ou non) la table sélectionnée dans les commutateurs"
+
+#~ msgid ""
+#~ "You can also press 'comma' key to get the file name of the selected table "
+#~ "and 'semicolon' key to view miscellaneous infos on the selected table"
+#~ msgstr ""
+#~ "Vous pouvez également appuyer sur la touche « virgule » pour obtenir le "
+#~ "nom du fichier de la table sélectionnée et sur la touche « point-"
+#~ "virgule » pour afficher diverses informations sur la table sélectionnée"
+
+#~ msgid "Contextual help"
+#~ msgstr "Aide contextuelle"
+
#~ msgid "%s menu"
#~ msgstr "Menu %s"
@@ -1956,9 +2620,6 @@ msgstr "actions et navigation rapide au travers d’un rotor"
#~ msgid "Braille tables configuration"
#~ msgstr "Configuration des tables braille"
-#~ msgid "Text attributes configuration"
-#~ msgstr "Configuration des attributs de texte"
-
#~ msgid "Role &labels"
#~ msgstr "&Étiquettes de rôle"
@@ -2005,9 +2666,6 @@ msgstr "actions et navigation rapide au travers d’un rotor"
#~ msgid "Enable Attribra"
#~ msgstr "Activer Attribra"
-#~ msgid "braille tables"
-#~ msgstr "tables braille"
-
#~ msgid "Unable to save or download update file. Opening your browser"
#~ msgstr ""
#~ "Impossible d’enregistrer ou de télécharger le fichier de mise à jour. "
From 4c1aa45f8ef054b591ff99388955f09bc941eec8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 11:37:52 +0200
Subject: [PATCH 67/87] Small fixes
---
addon/globalPlugins/brailleExtender/addonDoc.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index ce44bab5..8e5de8ea 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -48,7 +48,7 @@ def getFeaturesDoc():
features = {
_("Representation of undefined characters"): [
"",
- _("The extension allows you to customize how an undefined character should be represented within a braille table. To do so, go to the braille table settings. You can choose between the following representations:"),
+ _("The extension allows you to customize how an undefined character should be represented within a braille table. To do so, go to the — Representation of undefined characters — settings. You can choose between the following representations:"),
"
",
''.join([f"- {choice}
" for choice in configBE.CHOICES_undefinedCharRepr]),
"
",
@@ -65,7 +65,7 @@ def getFeaturesDoc():
"
",
_("This feature allows you to obtain various information regarding the character under the cursor using the current input braille table, such as:"),
"
",
- _("the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary values; A description of the character if possible; - The Unicode Braille representation and the Braille dot pattern."),
+ _("the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary values; A description of the character if possible; the Unicode braille representation and the braille pattern dots."),
"
",
_("Pressing the defined gesture associated to this function once shows you the information in a flash message and a double-press displays the same information in a virtual NVDA buffer."),
"
",
@@ -74,11 +74,11 @@ def getFeaturesDoc():
_(f"For example, for the '{chosenChar}' character, we will get the following information:"),
"
" + utils.currentCharDesc(chosenChar, 0) + "
",
],
- _("Advanced Braille Input"): [
+ _("Advanced braille input"): [
"",
_("This feature allows you to enter any character from its HUC8 representation or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to develop abbreviations. To use this function, enter the advanced input mode and then enter the desired pattern. Default gestures: NVDA+Windows+i or ⡊+space (on supported displays). Press the same gesture to exit this mode. Alternatively, an option allows you to automatically exit this mode after entering a single pattern. "),
"
",
- "If you want to enter a character from its HUC8 representation, simply enter the HUC8 pattern. Since a HUC8 sequence must fit on 3 cells, the interpretation will be performed each time 3 dot combinations are entered. If you wish to enter a character from its hexadecimal, decimal, octal or binary value, do the following:",
+ _("If you want to enter a character from its HUC8 representation, simply enter the HUC8 pattern. Since a HUC8 sequence must fit on 3 cells, the interpretation will be performed each time 3 dot combinations are entered. If you wish to enter a character from its hexadecimal, decimal, octal or binary value, do the following:"),
"
",
"- " + _(f"Enter {braillePattern}") + "
",
"- " + _("Specify the basis as follows") + f"{punctuationSeparator}:",
@@ -92,7 +92,7 @@ def getFeaturesDoc():
"
- " + _("Press Space to validate.") + "
",
"
",
"",
- _("For abbreviations, you must first add them in the dialog box - Advanced mode dictionaries -. Then, you just have to enter your abbreviation and press space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."),
+ _('For abbreviations, you must first add them in the dialog box — Advanced mode dictionaries —. Then, you just have to enter your abbreviation and press space to expand it. For example, you can define the following abbreviations: "⠎⠺" with "sandwich", "⠋⠛⠋⠗" to "🇫🇷".'),
"
",
_("Here are some examples of sequences to be entered for given characters:"),
"
",
From 892da186af8fecec0f712489f89cbc641758e729 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 11:46:29 +0200
Subject: [PATCH 68/87] Fix bad key in a variable
---
addon/globalPlugins/brailleExtender/addonDoc.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index 8e5de8ea..c54af593 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -43,7 +43,7 @@ def getFeaturesDoc():
ch = undefinedCharsSamples[i][0][0]
undefinedCharsSamples[i][0] = "%s (%s)" % (ch, utils.getSpeechSymbols(ch))
- braillePattern = config.conf["brailleExtender"]["advancedInputMode"]["startSign"]
+ braillePattern = config.conf["brailleExtender"]["advancedInputMode"]["escapeSignUnicodeValue"]
features = {
_("Representation of undefined characters"): [
From 809b1129d05b57c7f91c364f5b36d030079928d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 11:51:13 +0200
Subject: [PATCH 69/87] l10n updates for: fr
---
addon/locale/fr/LC_MESSAGES/nvda.po | 245 ++++++++++++++++------------
1 file changed, 140 insertions(+), 105 deletions(-)
diff --git a/addon/locale/fr/LC_MESSAGES/nvda.po b/addon/locale/fr/LC_MESSAGES/nvda.po
index 5baedd7f..0cc8c77b 100644
--- a/addon/locale/fr/LC_MESSAGES/nvda.po
+++ b/addon/locale/fr/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-04-18 10:11+0200\n"
-"PO-Revision-Date: 2020-04-18 11:11+0200\n"
+"POT-Creation-Date: 2020-04-18 11:47+0200\n"
+"PO-Revision-Date: 2020-04-18 11:50+0200\n"
"Last-Translator: André-Abush CLAUSE \n"
"Language-Team: \n"
"Language: fr\n"
@@ -287,7 +287,7 @@ msgid "Temporary dictionary"
msgstr "Dictionnaire temporaire"
#: addon\globalPlugins\brailleExtender\__init__.py:441
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\addonDoc.py:36
msgid "Character"
msgstr "Caractère"
@@ -814,52 +814,58 @@ msgstr "Ajouter une entrée au dictionnaire braille"
msgid "Braille Extender"
msgstr "Braille Extender"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\addonDoc.py:36
msgid "HUC8"
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\addonDoc.py:36
#: addon\globalPlugins\brailleExtender\configBE.py:65
#: addon\globalPlugins\brailleExtender\undefinedChars.py:263
msgid "Hexadecimal"
msgstr "Hexadécimale"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\addonDoc.py:36
#: addon\globalPlugins\brailleExtender\configBE.py:66
#: addon\globalPlugins\brailleExtender\undefinedChars.py:264
msgid "Decimal"
msgstr "Décimale"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\addonDoc.py:36
#: addon\globalPlugins\brailleExtender\configBE.py:67
#: addon\globalPlugins\brailleExtender\undefinedChars.py:265
msgid "Octal"
msgstr "Octale"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon\globalPlugins\brailleExtender\addonDoc.py:36
#: addon\globalPlugins\brailleExtender\configBE.py:68
#: addon\globalPlugins\brailleExtender\undefinedChars.py:266
msgid "Binary"
msgstr "Binaire"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\addonDoc.py:46
+#: addon\globalPlugins\brailleExtender\addonDoc.py:49
#: addon\globalPlugins\brailleExtender\undefinedChars.py:244
msgid "Representation of undefined characters"
msgstr "Représentation des caractères indéfinis"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:48
+#: addon\globalPlugins\brailleExtender\addonDoc.py:51
+#, fuzzy
+#| msgid ""
+#| "The extension allows you to customize how an undefined character should "
+#| "be represented within a braille table. To do so, go to the braille table "
+#| "settings. You can choose between the following representations:"
msgid ""
"The extension allows you to customize how an undefined character should be "
-"represented within a braille table. To do so, go to the braille table "
-"settings. You can choose between the following representations:"
+"represented within a braille table. To do so, go to the — Representation of "
+"undefined characters — settings. You can choose between the following "
+"representations:"
msgstr ""
"L'extension vous permet de personnaliser la façon dont un caractère non "
"défini doit être représenté dans un tableau braille. Pour ce faire, accédez "
"aux paramètres des tables braille. Vous pouvez choisir entre les "
"représentations suivantes :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:52
+#: addon\globalPlugins\brailleExtender\addonDoc.py:55
msgid ""
"You can also combine this option with the “describe the character if "
"possible” setting."
@@ -867,11 +873,11 @@ msgstr ""
"Vous pouvez également combiner cette option avec le paramètre « décrire le "
"caractère si possible »."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:54
+#: addon\globalPlugins\brailleExtender\addonDoc.py:57
msgid "Notes:"
msgstr "Notes :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:56
+#: addon\globalPlugins\brailleExtender\addonDoc.py:59
msgid ""
"To distinguish the undefined set of characters while maximizing space, the "
"best combination is the usage of the HUC8 representation without checking "
@@ -881,12 +887,12 @@ msgstr ""
"meilleure combinaison est l'utilisation de la représentation HUC8 sans "
"cocher l'option « décrire le caractère si possible »."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:57
+#: addon\globalPlugins\brailleExtender\addonDoc.py:60
#, python-brace-format
msgid "To learn more about the HUC representation, see {url}"
msgstr "Pour en savoir plus sur la représentation HUC, voir {url}"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:58
+#: addon\globalPlugins\brailleExtender\addonDoc.py:61
msgid ""
"Keep in mind that definitions in tables and those in your table dictionaries "
"take precedence over character descriptions, which also take precedence over "
@@ -897,11 +903,11 @@ msgstr ""
"ont également priorité sur la représentation choisie pour les caractères "
"indéfinis."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:61
+#: addon\globalPlugins\brailleExtender\addonDoc.py:64
msgid "Getting Current Character Info"
msgstr "Obtenir des informations sur le caractère actuel"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:63
+#: addon\globalPlugins\brailleExtender\addonDoc.py:66
msgid ""
"This feature allows you to obtain various information regarding the "
"character under the cursor using the current input braille table, such as:"
@@ -910,17 +916,22 @@ msgstr ""
"le caractère sous le curseur à l'aide de la table braille d'entrée actuelle, "
"telles que:"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:65
+#: addon\globalPlugins\brailleExtender\addonDoc.py:68
+#, fuzzy
+#| msgid ""
+#| "the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or "
+#| "binary values; A description of the character if possible; - The Unicode "
+#| "Braille representation and the Braille dot pattern."
msgid ""
"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
-"values; A description of the character if possible; - The Unicode Braille "
-"representation and the Braille dot pattern."
+"values; A description of the character if possible; the Unicode braille "
+"representation and the braille pattern dots."
msgstr ""
"les représentations HUC8 et HUC6 ; les valeurs hexadécimales, décimales, "
"octales ou binaires ; Une description du caractère si possible ; la "
"représentation braille Unicode et le motif de points braille."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:67
+#: addon\globalPlugins\brailleExtender\addonDoc.py:70
msgid ""
"Pressing the defined gesture associated to this function once shows you the "
"information in a flash message and a double-press displays the same "
@@ -930,7 +941,7 @@ msgstr ""
"les informations dans un message flash et une double pression affiche les "
"mêmes informations dans un tampon NVDA virtuel."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:69
+#: addon\globalPlugins\brailleExtender\addonDoc.py:72
msgid ""
"On supported displays the defined gesture is ⡉+space. No system gestures are "
"defined by default."
@@ -938,7 +949,7 @@ msgstr ""
"Sur les afficheurs pris en charge, le geste défini est ⡉+espace. Aucun geste "
"système n'est défini par défaut."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:71
+#: addon\globalPlugins\brailleExtender\addonDoc.py:74
#, python-brace-format
msgid ""
"For example, for the '{chosenChar}' character, we will get the following "
@@ -947,11 +958,13 @@ msgstr ""
"Par exemple, pour le caractère '{chosenChar}', nous obtiendrons les "
"informations suivantes :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:74
-msgid "Advanced Braille Input"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:77
+#, fuzzy
+#| msgid "Advanced Braille Input"
+msgid "Advanced braille input"
msgstr "Saisie braille avancée"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:76
+#: addon\globalPlugins\brailleExtender\addonDoc.py:79
msgid ""
"This feature allows you to enter any character from its HUC8 representation "
"or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to "
@@ -970,60 +983,86 @@ msgstr ""
"Alternativement, une option vous permet de quitter automatiquement ce mode "
"après avoir entré un seul motif."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:80
+#: addon\globalPlugins\brailleExtender\addonDoc.py:81
+msgid ""
+"If you want to enter a character from its HUC8 representation, simply enter "
+"the HUC8 pattern. Since a HUC8 sequence must fit on 3 cells, the "
+"interpretation will be performed each time 3 dot combinations are entered. "
+"If you wish to enter a character from its hexadecimal, decimal, octal or "
+"binary value, do the following:"
+msgstr ""
+"Si vous souhaitez saisir un caractère à partir de sa représentation HUC8, "
+"entrez simplement le motif HUC8. Puisqu'une séquence HUC8 doit tenir sur 3 "
+"cellules, l'interprétation sera effectuée chaque fois que 3 combinaisons de "
+"points sont entrées. Si vous souhaitez saisir un caractère à partir de sa "
+"valeur hexadécimale, décimale, octale ou binaire, procédez comme suit :"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:83
+#, python-brace-format
+msgid "Enter {braillePattern}"
+msgstr "Saisissez {braillePattern}"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:84
msgid "Specify the basis as follows"
msgstr "Spécifiez la base comme suit"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+#: addon\globalPlugins\brailleExtender\addonDoc.py:86
msgid "⠭ or ⠓"
msgstr "⠭ ou ⠓"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+#: addon\globalPlugins\brailleExtender\addonDoc.py:86
msgid "for a hexadecimal value"
msgstr "pour une valeur hexadécimale"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:83
+#: addon\globalPlugins\brailleExtender\addonDoc.py:87
msgid "for a decimal value"
msgstr "pour une valeur décimale"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:84
+#: addon\globalPlugins\brailleExtender\addonDoc.py:88
msgid "for an octal value"
msgstr "pour une valeur octale"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:87
+#: addon\globalPlugins\brailleExtender\addonDoc.py:91
msgid ""
"Enter the value of the character according to the previously selected basis."
msgstr "Entrez la valeur du caractère selon la base précédemment sélectionnée."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:88
+#: addon\globalPlugins\brailleExtender\addonDoc.py:92
msgid "Press Space to validate."
msgstr "Appuyez sur Espace pour valider."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:91
+#: addon\globalPlugins\brailleExtender\addonDoc.py:95
+#, fuzzy
+#| msgid ""
+#| "For abbreviations, you must first add them in the dialog box - Advanced "
+#| "mode dictionaries -. Then, you just have to enter your abbreviation and "
+#| "press space to expand it. For example, you can associate — ⠎⠺ — with — "
+#| "sandwich —."
msgid ""
-"For abbreviations, you must first add them in the dialog box - Advanced mode "
-"dictionaries -. Then, you just have to enter your abbreviation and press "
-"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
+"For abbreviations, you must first add them in the dialog box — Advanced mode "
+"dictionaries —. Then, you just have to enter your abbreviation and press "
+"space to expand it. For example, you can define the following abbreviations: "
+"\"⠎⠺\" with \"sandwich\", \"⠋⠛⠋⠗\" to \"🇫🇷\"."
msgstr ""
"Pour les abréviations, vous devez d'abord les ajouter dans la boîte de "
"dialogue — Dictionnaires du mode avancé —. Ensuite, il vous suffit de saisir "
"votre abréviation et d'appuyer sur l'espace pour la développer. Par exemple, "
"vous pouvez associer - ⠎⠺ - à - sandwich -."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:93
+#: addon\globalPlugins\brailleExtender\addonDoc.py:97
msgid "Here are some examples of sequences to be entered for given characters:"
msgstr ""
"Voici quelques exemples de séquences à saisir pour des caractères donnés :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:97
+#: addon\globalPlugins\brailleExtender\addonDoc.py:101
msgid "Note: the HUC6 input is currently not supported."
msgstr "Remarque : l'entrée HUC6 n'est actuellement pas prise en charge."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:100
+#: addon\globalPlugins\brailleExtender\addonDoc.py:104
msgid "One-hand mode"
msgstr "Mode unimanuel"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:102
+#: addon\globalPlugins\brailleExtender\addonDoc.py:106
msgid ""
"This feature allows you to compose a cell in several steps. This can be "
"activated in the general settings of the extension's preferences or on the "
@@ -1036,11 +1075,11 @@ msgstr ""
"défaut (⡂ + espace sur les afficheurs pris en charge). Trois méthodes de "
"saisie sont disponibles."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:103
+#: addon\globalPlugins\brailleExtender\addonDoc.py:107
msgid "Method #1: fill a cell in 2 stages on both sides"
msgstr "Méthode n° 1 : remplir une cellule en 2 étapes des deux côtés"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:105
+#: addon\globalPlugins\brailleExtender\addonDoc.py:109
msgid ""
"With this method, type the left side dots, then the right side dots. If one "
"side is empty, type the dots correspondig to the opposite side twice, or "
@@ -1050,32 +1089,32 @@ msgstr ""
"droit. Si un côté est vide, tapez deux fois les points correspondant au côté "
"opposé ou tapez les points correspondant au côté non vide en 2 étapes."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:106
-#: addon\globalPlugins\brailleExtender\addonDoc.py:115
+#: addon\globalPlugins\brailleExtender\addonDoc.py:110
+#: addon\globalPlugins\brailleExtender\addonDoc.py:119
msgid "For example:"
msgstr "Par exemple :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:108
+#: addon\globalPlugins\brailleExtender\addonDoc.py:112
msgid "For ⠛: press dots 1-2 then dots 4-5."
msgstr "Pour ⠛: appuyez sur les points 1-2 puis sur les points 4-5."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:109
+#: addon\globalPlugins\brailleExtender\addonDoc.py:113
msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
msgstr ""
"Pour ⠃: appuyez sur les points 1-2 puis sur les points 1-2, ou sur le point "
"1 puis le point 2."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:110
+#: addon\globalPlugins\brailleExtender\addonDoc.py:114
msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
msgstr "Pour ⠘: appuyez sur 4-5 puis 4-5, ou point 4 puis point 5."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:112
+#: addon\globalPlugins\brailleExtender\addonDoc.py:116
msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
msgstr ""
"Méthode n° 2 : remplir une cellule en deux étapes sur un côté (espace = côté "
"vide)"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:114
+#: addon\globalPlugins\brailleExtender\addonDoc.py:118
msgid ""
"Using this method, you can compose a cell with one hand, regardless of which "
"side of the Braille keyboard you choose. The first step allows you to enter "
@@ -1088,25 +1127,25 @@ msgstr ""
"4-5-6-8. Si un côté est vide, appuyez sur espace. Une cellule vide sera "
"obtenue en appuyant deux fois sur la touche espace."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:117
+#: addon\globalPlugins\brailleExtender\addonDoc.py:121
msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
msgstr ""
"Pour ⠛: appuyez sur les points 1-2 puis les points 1-2, ou les points 4-5 "
"puis les points 4-5."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:118
+#: addon\globalPlugins\brailleExtender\addonDoc.py:122
msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
msgstr ""
"Pour ⠃ : appuyez sur les points 1-2 puis sur espace ou sur 4-5 puis sur "
"espace."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:119
+#: addon\globalPlugins\brailleExtender\addonDoc.py:123
msgid "For ⠘: press space then 1-2, or space then dots 4-5."
msgstr ""
"Pour ⠘ : pressez espace puis sur les points 1-2 ou sur espace puis sur les "
"points 4-5."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:121
+#: addon\globalPlugins\brailleExtender\addonDoc.py:125
msgid ""
"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
"validate the character)"
@@ -1114,95 +1153,95 @@ msgstr ""
"Méthode n° 3 : remplir une cellule points par points (chaque point est une "
"bascule, appuyez sur Espace pour valider le caractère)"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:126
+#: addon\globalPlugins\brailleExtender\addonDoc.py:130
msgid "Dots 1-2, then dots 4-5, then space."
msgstr "Points 1-2, puis points 4-5, puis espace."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:127
+#: addon\globalPlugins\brailleExtender\addonDoc.py:131
msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
msgstr ""
"Points 1-2-3, puis point 3 (pour corriger), puis points 4-5, puis espace."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:128
+#: addon\globalPlugins\brailleExtender\addonDoc.py:132
msgid "Dot 1, then dots 2-4-5, then space."
msgstr "Point 1, puis points 2-4-5, puis espace."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:129
+#: addon\globalPlugins\brailleExtender\addonDoc.py:133
msgid "Dots 1-2-4, then dot 5, then space."
msgstr "Points 1-2-4, puis point 5, puis espace."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:130
+#: addon\globalPlugins\brailleExtender\addonDoc.py:134
msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
msgstr "Point 2, puis point 1, puis point 5, puis point 4, puis espace."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:131
+#: addon\globalPlugins\brailleExtender\addonDoc.py:135
msgid "Etc."
msgstr "Etc.."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:150
+#: addon\globalPlugins\brailleExtender\addonDoc.py:154
msgid "Documentation"
msgstr "Documentation"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:160
+#: addon\globalPlugins\brailleExtender\addonDoc.py:164
msgid "Driver loaded"
msgstr "Pilote chargé"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:161
+#: addon\globalPlugins\brailleExtender\addonDoc.py:165
msgid "Profile"
msgstr "Profil"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:175
+#: addon\globalPlugins\brailleExtender\addonDoc.py:179
msgid "Simple keys"
msgstr "Touches simples"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:177
+#: addon\globalPlugins\brailleExtender\addonDoc.py:181
msgid "Usual shortcuts"
msgstr "Raccourcis usuels"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:179
+#: addon\globalPlugins\brailleExtender\addonDoc.py:183
msgid "Standard NVDA commands"
msgstr "Commandes NVDA standards"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:182
+#: addon\globalPlugins\brailleExtender\addonDoc.py:186
#: addon\globalPlugins\brailleExtender\settings.py:511
msgid "Modifier keys"
msgstr "Touches de modification"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:185
+#: addon\globalPlugins\brailleExtender\addonDoc.py:189
msgid "Quick navigation keys"
msgstr "Touches de navigation rapide"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:189
+#: addon\globalPlugins\brailleExtender\addonDoc.py:193
msgid "Rotor feature"
msgstr "Fonction Rotor"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:197
+#: addon\globalPlugins\brailleExtender\addonDoc.py:201
msgid "Gadget commands"
msgstr "Commandes gadgettes"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:210
+#: addon\globalPlugins\brailleExtender\addonDoc.py:214
msgid "Shortcuts defined outside add-on"
msgstr "Raccourcis définis en dehors du module"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:238
+#: addon\globalPlugins\brailleExtender\addonDoc.py:242
msgid "Keyboard configurations provided"
msgstr "Configurations de clavier fournies"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:241
+#: addon\globalPlugins\brailleExtender\addonDoc.py:245
msgid "Keyboard configurations are"
msgstr "Les configurations de clavier sont les suivantes"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:250
+#: addon\globalPlugins\brailleExtender\addonDoc.py:254
msgid "Warning:"
msgstr "Attention :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:252
+#: addon\globalPlugins\brailleExtender\addonDoc.py:256
msgid "BrailleExtender has no gesture map yet for your braille display."
msgstr ""
"BrailleExtender n'a pas encore de profil de gestes pour votre afficheur "
"braille."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:255
+#: addon\globalPlugins\brailleExtender\addonDoc.py:259
msgid ""
"However, you can still assign your own gestures in the \"Input Gestures\" "
"dialog (under Preferences menu)."
@@ -1211,89 +1250,89 @@ msgstr ""
"fonctions dans le dialogue « Gestes de commandes » des « Préférences » de "
"NVDA."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:259
+#: addon\globalPlugins\brailleExtender\addonDoc.py:263
msgid "Add-on gestures on the system keyboard"
msgstr "Gestes du module sur le clavier système"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:282
+#: addon\globalPlugins\brailleExtender\addonDoc.py:286
msgid "Arabic"
msgstr "Arabe"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:283
+#: addon\globalPlugins\brailleExtender\addonDoc.py:287
msgid "Croatian"
msgstr "Croate"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:284
+#: addon\globalPlugins\brailleExtender\addonDoc.py:288
msgid "Danish"
msgstr "Danois"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:285
+#: addon\globalPlugins\brailleExtender\addonDoc.py:289
msgid "English and French"
msgstr "Anglais et français"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:286
+#: addon\globalPlugins\brailleExtender\addonDoc.py:290
msgid "German"
msgstr "Allemand"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:287
+#: addon\globalPlugins\brailleExtender\addonDoc.py:291
msgid "Hebrew"
msgstr "Hébreu"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:288
+#: addon\globalPlugins\brailleExtender\addonDoc.py:292
msgid "Persian"
msgstr "Persan"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:289
+#: addon\globalPlugins\brailleExtender\addonDoc.py:293
msgid "Polish"
msgstr "Polonais"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:290
+#: addon\globalPlugins\brailleExtender\addonDoc.py:294
msgid "Russian"
msgstr "Russe"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:293
+#: addon\globalPlugins\brailleExtender\addonDoc.py:297
msgid "Copyrights and acknowledgements"
msgstr "Droits d’auteur et remerciements"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:299
+#: addon\globalPlugins\brailleExtender\addonDoc.py:303
msgid "and other contributors"
msgstr "et d'autres contributeurs"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:303
+#: addon\globalPlugins\brailleExtender\addonDoc.py:307
msgid "Translators"
msgstr "Traducteurs"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:313
+#: addon\globalPlugins\brailleExtender\addonDoc.py:317
msgid "Code contributions and other"
msgstr "Contributions de code et autres"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:315
+#: addon\globalPlugins\brailleExtender\addonDoc.py:319
msgid "Additional third party copyrighted code is included:"
msgstr "Du code sous copyright de tiers est inclus :"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:321
+#: addon\globalPlugins\brailleExtender\addonDoc.py:325
msgid "Thanks also to"
msgstr "Merci également à"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:323
+#: addon\globalPlugins\brailleExtender\addonDoc.py:327
msgid "And thank you very much for all your feedback and comments."
msgstr "Et merci beaucoup pour tous vos retours et commentaires."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:327
+#: addon\globalPlugins\brailleExtender\addonDoc.py:331
#, python-format
msgid "%s's documentation"
msgstr "Documentation de %s"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:346
+#: addon\globalPlugins\brailleExtender\addonDoc.py:350
#, python-format
msgid "Emulates pressing %s on the system keyboard"
msgstr "Émuler l’appui de %s sur le clavier du système"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:357
+#: addon\globalPlugins\brailleExtender\addonDoc.py:361
msgid "description currently unavailable for this shortcut"
msgstr "description actuellement indisponible pour ce raccourci"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:377
+#: addon\globalPlugins\brailleExtender\addonDoc.py:381
msgid "caps lock"
msgstr "verrouillage majuscules"
@@ -1406,17 +1445,13 @@ msgstr "Signe d'échappement pour les valeurs Unicode"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:82
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:367
-#, fuzzy
-#| msgid "input only"
msgid "input"
-msgstr "saisie seulement"
+msgstr "saisie"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:83
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:367
-#, fuzzy
-#| msgid "output only"
msgid "output"
-msgstr "affichage seulement"
+msgstr "affichage"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:84
msgid "input and output"
From f05f414f361e024a6e2a8743c61f18ffc2c32f0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 11:59:46 +0200
Subject: [PATCH 70/87] fix typo: prefered -> preferred
---
.../brailleExtender/brailleTablesExt.py | 32 +++++++++----------
.../globalPlugins/brailleExtender/configBE.py | 12 +++----
.../globalPlugins/brailleExtender/settings.py | 4 +--
3 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
index 025775fe..d1bdd44a 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesExt.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -42,21 +42,21 @@ def listTablesIndexes(l, tables):
tables = listTablesFileName(tables)
return [tables.index(e) for e in l if e in tables]
-def getPreferedTables() -> Tuple[List[str]]:
+def getPreferredTables() -> Tuple[List[str]]:
allInputTablesFileName = listTablesFileName(listInputTables())
allOutputTablesFileName = listTablesFileName(listOutputTables())
- preferedInputTablesFileName = config.conf["brailleExtender"]["tables"]["preferedInput"].split('|')
- preferedOutputTablesFileName = config.conf["brailleExtender"]["tables"]["preferedOutput"].split('|')
- inputTables = [fn for fn in preferedInputTablesFileName if fn in allInputTablesFileName]
- outputTables = [fn for fn in preferedOutputTablesFileName if fn in allOutputTablesFileName]
+ preferredInputTablesFileName = config.conf["brailleExtender"]["tables"]["preferredInput"].split('|')
+ preferredOutputTablesFileName = config.conf["brailleExtender"]["tables"]["preferredOutput"].split('|')
+ inputTables = [fn for fn in preferredInputTablesFileName if fn in allInputTablesFileName]
+ outputTables = [fn for fn in preferredOutputTablesFileName if fn in allOutputTablesFileName]
return inputTables, outputTables
-def getPreferedTablesIndexes() -> List[int]:
- preferedInputTables, preferedOutputTables = getPreferedTables()
+def getPreferredTablesIndexes() -> List[int]:
+ preferredInputTables, preferredOutputTables = getPreferredTables()
inputTables = listTablesFileName(listInputTables())
outputTables = listTablesFileName(listOutputTables())
o = []
- for a, b in [(preferedInputTables, inputTables), (preferedOutputTables, outputTables)]:
+ for a, b in [(preferredInputTables, inputTables), (preferredOutputTables, outputTables)]:
o_ = []
for e in a:
if e in b: o_.append(b.index(e))
@@ -140,21 +140,21 @@ class BrailleTablesDlg(gui.settingsDialogs.SettingsPanel):
title = _("Braille tables")
def makeSettings(self, settingsSizer):
- listPreferedTablesIndexes = getPreferedTablesIndexes()
+ listPreferredTablesIndexes = getPreferredTablesIndexes()
currentTableLabel = _("Use the current input table")
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
tables = [f"{table.displayName}, {table.fileName}" for table in listTables() if table.input]
- label = _("Prefered input tables")
+ label = _("Preferred &input tables")
self.inputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=tables)
- self.inputTables.CheckedItems = listPreferedTablesIndexes[0]
+ self.inputTables.CheckedItems = listPreferredTablesIndexes[0]
self.inputTables.Select(0)
tables = [f"{table.displayName}, {table.fileName}" for table in listTables() if table.output]
- label = _("Prefered output tables")
+ label = _("Preferred &output tables")
self.outputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=tables)
- self.outputTables.CheckedItems = listPreferedTablesIndexes[1]
+ self.outputTables.CheckedItems = listPreferredTablesIndexes[1]
self.outputTables.Select(0)
label = _("Input braille table to use for keyboard shortcuts")
@@ -224,14 +224,14 @@ def onSave(self):
[self.inputTableShortcuts.GetSelection()-1],
listUncontractedInputTables
)[0] if self.inputTableShortcuts.GetSelection() > 0 else '?'
- config.conf["brailleExtender"]["tables"]["preferedInput"] = inputTables
- config.conf["brailleExtender"]["tables"]["preferedOutput"] = outputTables
+ config.conf["brailleExtender"]["tables"]["preferredInput"] = inputTables
+ config.conf["brailleExtender"]["tables"]["preferredOutput"] = outputTables
config.conf["brailleExtender"]["tables"]["shortcuts"] = tablesShortcuts
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"][f"tabSize_{configBE.curBD}"] = self.tabSize.Value
def postSave(self):
- configBE.initializePreferedTables()
+ configBE.initializePreferredTables()
class TablesGroupsDlg(gui.settingsDialogs.SettingsDialog):
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 07d7899b..eab8c8fa 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -118,7 +118,7 @@
if not os.path.exists(profilesDir): log.error('Profiles\' path not found')
else: log.debug('Profiles\' path (%s) found' % profilesDir)
-def getValidBrailleDisplayPrefered():
+def getValidBrailleDisplayPreferred():
l = braille.getDisplayList()
l.append(("last", _("last known")))
return l
@@ -240,8 +240,8 @@ def getConfspec():
"tables": {
"groups": {},
"shortcuts": 'string(default="?")',
- "preferedInput": f'string(default="{config.conf["braille"]["inputTable"]}|unicode-braille.utb")',
- "preferedOutput": f'string(default="{config.conf["braille"]["translationTable"]}")',
+ "preferredInput": f'string(default="{config.conf["braille"]["inputTable"]}|unicode-braille.utb")',
+ "preferredOutput": f'string(default="{config.conf["braille"]["translationTable"]}")',
},
"advancedInputMode": {
"stopAfterOneChar": "boolean(default=True)",
@@ -320,12 +320,12 @@ def loadConf():
if config.conf["brailleExtender"]["tables"]["shortcuts"] not in brailleTablesExt.listTablesFileName(brailleTablesExt.listUncontractedTables()): config.conf["brailleExtender"]["tables"]["shortcuts"] = '?'
if config.conf["brailleExtender"]["features"]["roleLabels"]:
loadRoleLabels(config.conf["brailleExtender"]["roleLabels"].copy())
- initializePreferedTables()
+ initializePreferredTables()
return True
-def initializePreferedTables():
+def initializePreferredTables():
global inputTables, outputTables
- inputTables, outputTables = brailleTablesExt.getPreferedTables()
+ inputTables, outputTables = brailleTablesExt.getPreferredTables()
def loadGestures():
if gesturesFileExists:
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 15771529..f3946c82 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -40,8 +40,8 @@ class GeneralDlg(gui.settingsDialogs.SettingsPanel):
# Translators: title of a dialog.
title = _("General")
- bds_k = [k for k, v in configBE.getValidBrailleDisplayPrefered()]
- bds_v = [v for k, v in configBE.getValidBrailleDisplayPrefered()]
+ bds_k = [k for k, v in configBE.getValidBrailleDisplayPreferred()]
+ bds_v = [v for k, v in configBE.getValidBrailleDisplayPreferred()]
def makeSettings(self, settingsSizer):
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
From ca88b5557cbe7d6c9d5197874483b9ceec918095 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 11:59:46 +0200
Subject: [PATCH 71/87] fix typo: prefered -> preferred
---
.../brailleExtender/brailleTablesExt.py | 32 +++++++++----------
.../globalPlugins/brailleExtender/configBE.py | 12 +++----
.../globalPlugins/brailleExtender/settings.py | 4 +--
3 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
index 025775fe..d1bdd44a 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesExt.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -42,21 +42,21 @@ def listTablesIndexes(l, tables):
tables = listTablesFileName(tables)
return [tables.index(e) for e in l if e in tables]
-def getPreferedTables() -> Tuple[List[str]]:
+def getPreferredTables() -> Tuple[List[str]]:
allInputTablesFileName = listTablesFileName(listInputTables())
allOutputTablesFileName = listTablesFileName(listOutputTables())
- preferedInputTablesFileName = config.conf["brailleExtender"]["tables"]["preferedInput"].split('|')
- preferedOutputTablesFileName = config.conf["brailleExtender"]["tables"]["preferedOutput"].split('|')
- inputTables = [fn for fn in preferedInputTablesFileName if fn in allInputTablesFileName]
- outputTables = [fn for fn in preferedOutputTablesFileName if fn in allOutputTablesFileName]
+ preferredInputTablesFileName = config.conf["brailleExtender"]["tables"]["preferredInput"].split('|')
+ preferredOutputTablesFileName = config.conf["brailleExtender"]["tables"]["preferredOutput"].split('|')
+ inputTables = [fn for fn in preferredInputTablesFileName if fn in allInputTablesFileName]
+ outputTables = [fn for fn in preferredOutputTablesFileName if fn in allOutputTablesFileName]
return inputTables, outputTables
-def getPreferedTablesIndexes() -> List[int]:
- preferedInputTables, preferedOutputTables = getPreferedTables()
+def getPreferredTablesIndexes() -> List[int]:
+ preferredInputTables, preferredOutputTables = getPreferredTables()
inputTables = listTablesFileName(listInputTables())
outputTables = listTablesFileName(listOutputTables())
o = []
- for a, b in [(preferedInputTables, inputTables), (preferedOutputTables, outputTables)]:
+ for a, b in [(preferredInputTables, inputTables), (preferredOutputTables, outputTables)]:
o_ = []
for e in a:
if e in b: o_.append(b.index(e))
@@ -140,21 +140,21 @@ class BrailleTablesDlg(gui.settingsDialogs.SettingsPanel):
title = _("Braille tables")
def makeSettings(self, settingsSizer):
- listPreferedTablesIndexes = getPreferedTablesIndexes()
+ listPreferredTablesIndexes = getPreferredTablesIndexes()
currentTableLabel = _("Use the current input table")
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
bHelper1 = gui.guiHelper.ButtonHelper(orientation=wx.HORIZONTAL)
tables = [f"{table.displayName}, {table.fileName}" for table in listTables() if table.input]
- label = _("Prefered input tables")
+ label = _("Preferred &input tables")
self.inputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=tables)
- self.inputTables.CheckedItems = listPreferedTablesIndexes[0]
+ self.inputTables.CheckedItems = listPreferredTablesIndexes[0]
self.inputTables.Select(0)
tables = [f"{table.displayName}, {table.fileName}" for table in listTables() if table.output]
- label = _("Prefered output tables")
+ label = _("Preferred &output tables")
self.outputTables = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=tables)
- self.outputTables.CheckedItems = listPreferedTablesIndexes[1]
+ self.outputTables.CheckedItems = listPreferredTablesIndexes[1]
self.outputTables.Select(0)
label = _("Input braille table to use for keyboard shortcuts")
@@ -224,14 +224,14 @@ def onSave(self):
[self.inputTableShortcuts.GetSelection()-1],
listUncontractedInputTables
)[0] if self.inputTableShortcuts.GetSelection() > 0 else '?'
- config.conf["brailleExtender"]["tables"]["preferedInput"] = inputTables
- config.conf["brailleExtender"]["tables"]["preferedOutput"] = outputTables
+ config.conf["brailleExtender"]["tables"]["preferredInput"] = inputTables
+ config.conf["brailleExtender"]["tables"]["preferredOutput"] = outputTables
config.conf["brailleExtender"]["tables"]["shortcuts"] = tablesShortcuts
config.conf["brailleExtender"]["tabSpace"] = self.tabSpace.IsChecked()
config.conf["brailleExtender"][f"tabSize_{configBE.curBD}"] = self.tabSize.Value
def postSave(self):
- configBE.initializePreferedTables()
+ configBE.initializePreferredTables()
class TablesGroupsDlg(gui.settingsDialogs.SettingsDialog):
diff --git a/addon/globalPlugins/brailleExtender/configBE.py b/addon/globalPlugins/brailleExtender/configBE.py
index 07d7899b..eab8c8fa 100644
--- a/addon/globalPlugins/brailleExtender/configBE.py
+++ b/addon/globalPlugins/brailleExtender/configBE.py
@@ -118,7 +118,7 @@
if not os.path.exists(profilesDir): log.error('Profiles\' path not found')
else: log.debug('Profiles\' path (%s) found' % profilesDir)
-def getValidBrailleDisplayPrefered():
+def getValidBrailleDisplayPreferred():
l = braille.getDisplayList()
l.append(("last", _("last known")))
return l
@@ -240,8 +240,8 @@ def getConfspec():
"tables": {
"groups": {},
"shortcuts": 'string(default="?")',
- "preferedInput": f'string(default="{config.conf["braille"]["inputTable"]}|unicode-braille.utb")',
- "preferedOutput": f'string(default="{config.conf["braille"]["translationTable"]}")',
+ "preferredInput": f'string(default="{config.conf["braille"]["inputTable"]}|unicode-braille.utb")',
+ "preferredOutput": f'string(default="{config.conf["braille"]["translationTable"]}")',
},
"advancedInputMode": {
"stopAfterOneChar": "boolean(default=True)",
@@ -320,12 +320,12 @@ def loadConf():
if config.conf["brailleExtender"]["tables"]["shortcuts"] not in brailleTablesExt.listTablesFileName(brailleTablesExt.listUncontractedTables()): config.conf["brailleExtender"]["tables"]["shortcuts"] = '?'
if config.conf["brailleExtender"]["features"]["roleLabels"]:
loadRoleLabels(config.conf["brailleExtender"]["roleLabels"].copy())
- initializePreferedTables()
+ initializePreferredTables()
return True
-def initializePreferedTables():
+def initializePreferredTables():
global inputTables, outputTables
- inputTables, outputTables = brailleTablesExt.getPreferedTables()
+ inputTables, outputTables = brailleTablesExt.getPreferredTables()
def loadGestures():
if gesturesFileExists:
diff --git a/addon/globalPlugins/brailleExtender/settings.py b/addon/globalPlugins/brailleExtender/settings.py
index 15771529..f3946c82 100644
--- a/addon/globalPlugins/brailleExtender/settings.py
+++ b/addon/globalPlugins/brailleExtender/settings.py
@@ -40,8 +40,8 @@ class GeneralDlg(gui.settingsDialogs.SettingsPanel):
# Translators: title of a dialog.
title = _("General")
- bds_k = [k for k, v in configBE.getValidBrailleDisplayPrefered()]
- bds_v = [v for k, v in configBE.getValidBrailleDisplayPrefered()]
+ bds_k = [k for k, v in configBE.getValidBrailleDisplayPreferred()]
+ bds_v = [v for k, v in configBE.getValidBrailleDisplayPreferred()]
def makeSettings(self, settingsSizer):
sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer)
From 67a8b501a2aa70517c00943171af7a41113c1677 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 12:20:42 +0200
Subject: [PATCH 72/87] l10n updates for: fr
---
addon/locale/fr/LC_MESSAGES/nvda.po | 71 ++++++++---------------------
1 file changed, 19 insertions(+), 52 deletions(-)
diff --git a/addon/locale/fr/LC_MESSAGES/nvda.po b/addon/locale/fr/LC_MESSAGES/nvda.po
index 0cc8c77b..6d2a2d18 100644
--- a/addon/locale/fr/LC_MESSAGES/nvda.po
+++ b/addon/locale/fr/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-04-18 11:47+0200\n"
-"PO-Revision-Date: 2020-04-18 11:50+0200\n"
+"POT-Creation-Date: 2020-04-18 12:05+0200\n"
+"PO-Revision-Date: 2020-04-18 12:18+0200\n"
"Last-Translator: André-Abush CLAUSE \n"
"Language-Team: \n"
"Language: fr\n"
@@ -849,21 +849,16 @@ msgid "Representation of undefined characters"
msgstr "Représentation des caractères indéfinis"
#: addon\globalPlugins\brailleExtender\addonDoc.py:51
-#, fuzzy
-#| msgid ""
-#| "The extension allows you to customize how an undefined character should "
-#| "be represented within a braille table. To do so, go to the braille table "
-#| "settings. You can choose between the following representations:"
msgid ""
"The extension allows you to customize how an undefined character should be "
"represented within a braille table. To do so, go to the — Representation of "
"undefined characters — settings. You can choose between the following "
"representations:"
msgstr ""
-"L'extension vous permet de personnaliser la façon dont un caractère non "
-"défini doit être représenté dans un tableau braille. Pour ce faire, accédez "
-"aux paramètres des tables braille. Vous pouvez choisir entre les "
-"représentations suivantes :"
+"L'extension vous permet de personnaliser la façon dont un caractère indéfini "
+"dans une table braille doit être représenté. Pour ce faire, accédez aux "
+"paramètres — Représentation des caractères indéfinis —. Vous pouvez choisir "
+"entre les représentations suivantes :"
#: addon\globalPlugins\brailleExtender\addonDoc.py:55
msgid ""
@@ -917,11 +912,6 @@ msgstr ""
"telles que:"
#: addon\globalPlugins\brailleExtender\addonDoc.py:68
-#, fuzzy
-#| msgid ""
-#| "the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or "
-#| "binary values; A description of the character if possible; - The Unicode "
-#| "Braille representation and the Braille dot pattern."
msgid ""
"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
"values; A description of the character if possible; the Unicode braille "
@@ -929,7 +919,7 @@ msgid ""
msgstr ""
"les représentations HUC8 et HUC6 ; les valeurs hexadécimales, décimales, "
"octales ou binaires ; Une description du caractère si possible ; la "
-"représentation braille Unicode et le motif de points braille."
+"représentation braille Unicode et les points du motif braille."
#: addon\globalPlugins\brailleExtender\addonDoc.py:70
msgid ""
@@ -959,8 +949,6 @@ msgstr ""
"informations suivantes :"
#: addon\globalPlugins\brailleExtender\addonDoc.py:77
-#, fuzzy
-#| msgid "Advanced Braille Input"
msgid "Advanced braille input"
msgstr "Saisie braille avancée"
@@ -1032,12 +1020,6 @@ msgid "Press Space to validate."
msgstr "Appuyez sur Espace pour valider."
#: addon\globalPlugins\brailleExtender\addonDoc.py:95
-#, fuzzy
-#| msgid ""
-#| "For abbreviations, you must first add them in the dialog box - Advanced "
-#| "mode dictionaries -. Then, you just have to enter your abbreviation and "
-#| "press space to expand it. For example, you can associate — ⠎⠺ — with — "
-#| "sandwich —."
msgid ""
"For abbreviations, you must first add them in the dialog box — Advanced mode "
"dictionaries —. Then, you just have to enter your abbreviation and press "
@@ -1047,7 +1029,8 @@ msgstr ""
"Pour les abréviations, vous devez d'abord les ajouter dans la boîte de "
"dialogue — Dictionnaires du mode avancé —. Ensuite, il vous suffit de saisir "
"votre abréviation et d'appuyer sur l'espace pour la développer. Par exemple, "
-"vous pouvez associer - ⠎⠺ - à - sandwich -."
+"vous pouvez définir les abréviations suivantes: \"⠎⠺\" pour \"sandwich\", "
+"\"⠋⠛⠋⠗\" pour \"🇫🇷\"."
#: addon\globalPlugins\brailleExtender\addonDoc.py:97
msgid "Here are some examples of sequences to be entered for given characters:"
@@ -1471,22 +1454,16 @@ msgid "Use the current input table"
msgstr "Utiliser la table braille d’entrée actuelle"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:149
-#, fuzzy
-#| msgid "Prefered braille tables"
-msgid "Prefered input tables"
-msgstr "Tables braille préférées"
+msgid "Preferred &input tables"
+msgstr "Tables de &saisie braille préférées"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:155
-#, fuzzy
-#| msgid "Prefered braille tables"
-msgid "Prefered output tables"
-msgstr "Tables braille préférées"
+msgid "Preferred &output tables"
+msgstr "Tables braille d’a&ffichage préférées"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:160
-#, fuzzy
-#| msgid "Input braille table for keyboard shortcut keys"
msgid "Input braille table to use for keyboard shortcuts"
-msgstr "Table braille d’entrée pour les raccourcis clavier"
+msgstr "Table braille d’entrée à utiliser pour les raccourcis clavier"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:170
msgid "&Groups of tables"
@@ -1498,17 +1475,13 @@ msgstr "Tables braille &alternatives et personnalisées"
#. Translators: label of a dialog.
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:177
-#, fuzzy
-#| msgid "Display tab signs as spaces"
msgid "Display &tab signs as spaces"
-msgstr "Afficher les signes de tabulation en tant qu’espaces"
+msgstr "Afficher les signes de &tabulation comme des espaces"
#. Translators: label of a dialog.
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:182
-#, fuzzy
-#| msgid "Number of space for a tab sign"
msgid "Number of &space for a tab sign"
-msgstr "Nombre d’espaces pour un signe de tabulation"
+msgstr "Nombre d’e&spaces pour un signe de tabulation"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:182
#: addon\globalPlugins\brailleExtender\settings.py:105
@@ -1551,10 +1524,8 @@ msgstr "Utilisable en"
#. Translators: The label for a button in groups of tables dialog to open groups of tables file in an editor.
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:277
-#, fuzzy
-#| msgid "&Open the current dictionary file in an editor"
msgid "&Open the groups of tables file in an editor"
-msgstr "&Ouvrir le fichier de dictionnaire actuel dans un éditeur"
+msgstr "&Ouvrir le fichier de groupes de tables dans un éditeur"
#. Translators: The label for a button in groups of tables dialog to reload groups of tables.
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:282
@@ -1562,10 +1533,8 @@ msgid "&Reload the groups of tables"
msgstr "&Recharger les groupes de tables"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:296
-#, fuzzy
-#| msgid "Add gesture"
msgid "Add group entry"
-msgstr "Ajouter un geste"
+msgstr "Ajouter une entrée de groupe"
#: addon\globalPlugins\brailleExtender\brailleTablesExt.py:362
msgid "Group name"
@@ -2295,10 +2264,8 @@ msgstr "Paramètres"
#. Translators: label of a dialog.
#: addon\globalPlugins\brailleExtender\undefinedChars.py:249
-#, fuzzy
-#| msgid "Representation"
msgid "Representation &method"
-msgstr "Représentation"
+msgstr "&Méthode de représentation"
#: addon\globalPlugins\brailleExtender\undefinedChars.py:257
#, python-brace-format
From 917f6139ffb2328d8a1515aa99d8ead2224d32d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 12:22:44 +0200
Subject: [PATCH 73/87] Fix a label
---
addon/globalPlugins/brailleExtender/addonDoc.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index c54af593..5fa8c591 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -92,7 +92,7 @@ def getFeaturesDoc():
"- " + _("Press Space to validate.") + "
",
"",
"",
- _('For abbreviations, you must first add them in the dialog box — Advanced mode dictionaries —. Then, you just have to enter your abbreviation and press space to expand it. For example, you can define the following abbreviations: "⠎⠺" with "sandwich", "⠋⠛⠋⠗" to "🇫🇷".'),
+ _('For abbreviations, you must first add them in the dialog box — Advanced input mode dictionary —. Then, you just have to enter your abbreviation and press space to expand it. For example, you can define the following abbreviations: "⠎⠺" with "sandwich", "⠋⠛⠋⠗" to "🇫🇷".'),
"
",
_("Here are some examples of sequences to be entered for given characters:"),
"
",
From 043f1779eb3cc674f3673a0739d831c6de3553c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 12:26:09 +0200
Subject: [PATCH 74/87] l10n updates for: fr
---
addon/locale/fr/LC_MESSAGES/nvda.po | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/addon/locale/fr/LC_MESSAGES/nvda.po b/addon/locale/fr/LC_MESSAGES/nvda.po
index 6d2a2d18..d4db2bb5 100644
--- a/addon/locale/fr/LC_MESSAGES/nvda.po
+++ b/addon/locale/fr/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-04-18 12:05+0200\n"
-"PO-Revision-Date: 2020-04-18 12:18+0200\n"
+"POT-Creation-Date: 2020-04-18 12:23+0200\n"
+"PO-Revision-Date: 2020-04-18 12:25+0200\n"
"Last-Translator: André-Abush CLAUSE \n"
"Language-Team: \n"
"Language: fr\n"
@@ -1021,16 +1021,16 @@ msgstr "Appuyez sur Espace pour valider."
#: addon\globalPlugins\brailleExtender\addonDoc.py:95
msgid ""
-"For abbreviations, you must first add them in the dialog box — Advanced mode "
-"dictionaries —. Then, you just have to enter your abbreviation and press "
-"space to expand it. For example, you can define the following abbreviations: "
-"\"⠎⠺\" with \"sandwich\", \"⠋⠛⠋⠗\" to \"🇫🇷\"."
+"For abbreviations, you must first add them in the dialog box — Advanced "
+"input mode dictionary —. Then, you just have to enter your abbreviation and "
+"press space to expand it. For example, you can define the following "
+"abbreviations: \"⠎⠺\" with \"sandwich\", \"⠋⠛⠋⠗\" to \"🇫🇷\"."
msgstr ""
"Pour les abréviations, vous devez d'abord les ajouter dans la boîte de "
-"dialogue — Dictionnaires du mode avancé —. Ensuite, il vous suffit de saisir "
-"votre abréviation et d'appuyer sur l'espace pour la développer. Par exemple, "
-"vous pouvez définir les abréviations suivantes: \"⠎⠺\" pour \"sandwich\", "
-"\"⠋⠛⠋⠗\" pour \"🇫🇷\"."
+"dialogue — Dictionnaire du mode de saisie avancée —. Ensuite, il vous suffit "
+"de saisir votre abréviation et d'appuyer sur l'espace pour la développer. "
+"Par exemple, vous pouvez définir les abréviations suivantes: \"⠎⠺\" avec "
+"\"sandwich\", \"⠋⠛⠋⠗\" à \"🇫🇷\"."
#: addon\globalPlugins\brailleExtender\addonDoc.py:97
msgid "Here are some examples of sequences to be entered for given characters:"
From 36812ccb1c7a8646e691d08cf433700eaded2840 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 12:32:04 +0200
Subject: [PATCH 75/87] More translatable strings
---
addon/globalPlugins/brailleExtender/addonDoc.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/addonDoc.py b/addon/globalPlugins/brailleExtender/addonDoc.py
index 5fa8c591..28f390f4 100644
--- a/addon/globalPlugins/brailleExtender/addonDoc.py
+++ b/addon/globalPlugins/brailleExtender/addonDoc.py
@@ -124,7 +124,7 @@ def getFeaturesDoc():
"",
"" + _("Method #3: fill a cell dots by dots (each dot is a toggle, press Space to validate the character)") + "
",
"",
- "In this mode, each dot is a toggle. You must press the space key as soon as the cell you have entered is the desired one to input the character. Thus, the more dots are contained in the cell, the more ways you have to enter the character.",
+ _("In this mode, each dot is a toggle. You must press the space key as soon as the cell you have entered is the desired one to input the character. Thus, the more dots are contained in the cell, the more ways you have to enter the character."),
"
" + "For example, for ⠛, you can compose the cell in the following ways:",
"
",
"- " + _("Dots 1-2, then dots 4-5, then space.") + "
",
@@ -153,9 +153,9 @@ def __init__(self, instanceGP):
manifestDescription = self.getDescFormated(addonDesc)
doc = f"{addonSummary} {addonVersion} — " + _("Documentation") + "
"
doc += f"{manifestDescription}
"
- doc += "Let's explore some features
"
+ doc += "" + _("Let's explore some features") + "
"
doc += getFeaturesDoc()
- doc += "Profile gestures
"
+ doc += "" + _("Profile gestures") + "
"
if configBE.gesturesFileExists:
brailleDisplayDriverName = configBE.curBD.capitalize()
profileName = "default"
From 03fabcce30b0d17c6615efb9c97a1df244a6a0c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 12:35:23 +0200
Subject: [PATCH 76/87] l10n updates for: fr
---
addon/locale/fr/LC_MESSAGES/nvda.po | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/addon/locale/fr/LC_MESSAGES/nvda.po b/addon/locale/fr/LC_MESSAGES/nvda.po
index d4db2bb5..7362abb1 100644
--- a/addon/locale/fr/LC_MESSAGES/nvda.po
+++ b/addon/locale/fr/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-04-18 12:23+0200\n"
-"PO-Revision-Date: 2020-04-18 12:25+0200\n"
+"POT-Creation-Date: 2020-04-18 12:33+0200\n"
+"PO-Revision-Date: 2020-04-18 12:35+0200\n"
"Last-Translator: André-Abush CLAUSE \n"
"Language-Team: \n"
"Language: fr\n"
@@ -1136,6 +1136,18 @@ msgstr ""
"Méthode n° 3 : remplir une cellule points par points (chaque point est une "
"bascule, appuyez sur Espace pour valider le caractère)"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:127
+msgid ""
+"In this mode, each dot is a toggle. You must press the space key as soon as "
+"the cell you have entered is the desired one to input the character. Thus, "
+"the more dots are contained in the cell, the more ways you have to enter the "
+"character."
+msgstr ""
+"Dans ce mode, chaque point est une bascule. Vous devez appuyer sur la touche "
+"espace dès que la cellule que vous avez entrée est celle souhaitée pour "
+"saisir le caractère. Ainsi, plus il y a de points dans la cellule, plus vous "
+"devez saisir de caractères."
+
#: addon\globalPlugins\brailleExtender\addonDoc.py:130
msgid "Dots 1-2, then dots 4-5, then space."
msgstr "Points 1-2, puis points 4-5, puis espace."
@@ -1165,6 +1177,14 @@ msgstr "Etc.."
msgid "Documentation"
msgstr "Documentation"
+#: addon\globalPlugins\brailleExtender\addonDoc.py:156
+msgid "Let's explore some features"
+msgstr "Explorons quelques fonctionnalités"
+
+#: addon\globalPlugins\brailleExtender\addonDoc.py:158
+msgid "Profile gestures"
+msgstr "Gestes du profil"
+
#: addon\globalPlugins\brailleExtender\addonDoc.py:164
msgid "Driver loaded"
msgstr "Pilote chargé"
From 90fb6f05b94c3b0ba16aa67d617b698cd81d41b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Sat, 18 Apr 2020 12:52:07 +0200
Subject: [PATCH 77/87] l10n updates for: fr
---
addon/locale/fr/LC_MESSAGES/nvda.po | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/addon/locale/fr/LC_MESSAGES/nvda.po b/addon/locale/fr/LC_MESSAGES/nvda.po
index 7362abb1..4b10b725 100644
--- a/addon/locale/fr/LC_MESSAGES/nvda.po
+++ b/addon/locale/fr/LC_MESSAGES/nvda.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-04-18 12:33+0200\n"
-"PO-Revision-Date: 2020-04-18 12:35+0200\n"
+"POT-Creation-Date: 2020-04-18 12:48+0200\n"
+"PO-Revision-Date: 2020-04-18 12:51+0200\n"
"Last-Translator: André-Abush CLAUSE \n"
"Language-Team: \n"
"Language: fr\n"
@@ -964,10 +964,10 @@ msgid ""
msgstr ""
"Cette fonction vous permet de saisir n'importe quel caractère depuis sa "
"représentation HUC8 ou sa valeur hexadécimale / décimale / octale / binaire. "
-"De plus, il vous permet de développer des abréviations. Pour utiliser cette "
-"fonction, entrez dans le mode de saisie avancé, puis entrez le motif "
-"souhaité. Gestes par défaut: NVDA+Windows+i ou ⡊+espace (sur les afficheurs "
-"pris en charge). Appuyez sur le même geste pour quitter ce mode. "
+"De plus, elle vous permet de développer des abréviations. Pour utiliser "
+"cette fonctionnalité, entrez dans le mode de saisie avancé, puis entrez le "
+"motif souhaité. Gestes par défaut: NVDA+Windows+i ou ⡊+espace (sur les "
+"afficheurs pris en charge). Appuyez sur le même geste pour quitter ce mode. "
"Alternativement, une option vous permet de quitter automatiquement ce mode "
"après avoir entré un seul motif."
@@ -2323,14 +2323,10 @@ msgid "Language"
msgstr "Langue"
#: addon\globalPlugins\brailleExtender\undefinedChars.py:318
-#, fuzzy
-#| msgid "Use the current input table"
msgid "Use the current output table"
-msgstr "Utiliser la table braille d’entrée actuelle"
+msgstr "Utiliser la table d'affichage actuelle"
#: addon\globalPlugins\brailleExtender\undefinedChars.py:324
-#, fuzzy
-#| msgid "Braille tables"
msgid "Braille table"
msgstr "Tables braille"
From e429f5e236ca33f8dd92cb00985a66187c5e2d50 Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Sat, 18 Apr 2020 13:05:39 +0200
Subject: [PATCH 78/87] new polish update
---
addon/locale/pl/LC_MESSAGES/nvda.po | 248 ++++++++++++++++------------
1 file changed, 143 insertions(+), 105 deletions(-)
diff --git a/addon/locale/pl/LC_MESSAGES/nvda.po b/addon/locale/pl/LC_MESSAGES/nvda.po
index 7a848bb4..1cc128e2 100644
--- a/addon/locale/pl/LC_MESSAGES/nvda.po
+++ b/addon/locale/pl/LC_MESSAGES/nvda.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: BrailleExtender\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
"POT-Creation-Date: 2020-04-15 09:24+0200\n"
-"PO-Revision-Date: 2020-04-17 13:26+0100\n"
+"PO-Revision-Date: 2020-04-18 13:02+0100\n"
"Last-Translator: zvonimir stanecic \n"
"Language-Team: \n"
"Language: pl\n"
@@ -174,9 +174,8 @@ msgid "Opens the addons' settings."
msgstr "Otwiera ustawienia dodatku."
#: addon/globalPlugins/brailleExtender/__init__.py:270
-#, fuzzy
msgid "Table &dictionaries"
-msgstr "Słownik tablicy brajlowskiej"
+msgstr "&słowniki tablic"
#: addon/globalPlugins/brailleExtender/__init__.py:270
msgid "'Braille dictionaries' menu"
@@ -219,14 +218,12 @@ msgstr ""
"słownikowe do listy."
#: addon/globalPlugins/brailleExtender/__init__.py:278
-#, fuzzy
msgid "Advanced &input mode dictionary"
-msgstr "Dodaj wpis do słownika brajlowskiego"
+msgstr "słownik zaawansowanego &trybu wprowadzania"
#: addon/globalPlugins/brailleExtender/__init__.py:278
-#, fuzzy
msgid "Advanced input mode configuration"
-msgstr "Konfiguracja prezentacji formatowania dokumentu"
+msgstr "Konfiguracja zaawansowanego trybu wprowadzania"
#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "&Quick launches"
@@ -397,12 +394,11 @@ msgstr "wyłączone"
#: addon/globalPlugins/brailleExtender/__init__.py:571
#, python-format
msgid "One hand mode %s"
-msgstr ""
+msgstr "Tryb jednoręczny %s"
#: addon/globalPlugins/brailleExtender/__init__.py:572
-#, fuzzy
msgid "Enable/disable one hand mode feature"
-msgstr "włącza lub wyłącza tryb formatowanego brajla amerykańskiego"
+msgstr "Włącza lub wyłącza tryb jednej ręki"
#: addon/globalPlugins/brailleExtender/__init__.py:576
#, python-format
@@ -529,21 +525,20 @@ msgstr ""
#: addon/globalPlugins/brailleExtender/__init__.py:663
#, python-format
msgid "Advanced braille input mode %s"
-msgstr ""
+msgstr "Tryb zaawansowanego wprowadzania brajla %s"
#: addon/globalPlugins/brailleExtender/__init__.py:664
-#, fuzzy
msgid "Enable/disable the advanced input mode"
-msgstr "włącza lub wyłącza tryb formatowanego brajla amerykańskiego"
+msgstr "Włącza lub wyłącza zaawansowane wprowadzanei tekstu"
#: addon/globalPlugins/brailleExtender/__init__.py:669
#, python-format
msgid "Description of undefined characters %s"
-msgstr ""
+msgstr "Opisywanie niezdefiniowanych znaków %s"
#: addon/globalPlugins/brailleExtender/__init__.py:671
msgid "Enable/disable description of undefined characters"
-msgstr ""
+msgstr "Włącz lub wyłącz opisywanie niezdefiniowanych znaków."
#: addon/globalPlugins/brailleExtender/__init__.py:675
msgid "Get the cursor position of text"
@@ -830,38 +825,37 @@ msgstr "Braille Extender"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
msgid "HUC8"
-msgstr ""
+msgstr "HUC8"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:64
#: addon/globalPlugins/brailleExtender/undefinedChars.py:258
msgid "Hexadecimal"
-msgstr ""
+msgstr "Szesnastkowy"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:65
#: addon/globalPlugins/brailleExtender/undefinedChars.py:259
msgid "Decimal"
-msgstr ""
+msgstr "Dziesiętny"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:66
#: addon/globalPlugins/brailleExtender/undefinedChars.py:260
msgid "Octal"
-msgstr ""
+msgstr "Usemkowy"
#: addon/globalPlugins/brailleExtender/addonDoc.py:35
#: addon/globalPlugins/brailleExtender/configBE.py:67
#: addon/globalPlugins/brailleExtender/undefinedChars.py:261
-#, fuzzy
msgid "Binary"
-msgstr "Słownik"
+msgstr "Binarny"
#. Translators: title of a dialog.
#: addon/globalPlugins/brailleExtender/addonDoc.py:46
#: addon/globalPlugins/brailleExtender/undefinedChars.py:239
msgid "Representation of undefined characters"
-msgstr ""
+msgstr "Reprezentacja niezdefiniowanych znaków"
#: addon/globalPlugins/brailleExtender/addonDoc.py:48
msgid ""
@@ -869,16 +863,22 @@ msgid ""
"represented within a braille table. To do so, go to the braille table "
"settings. You can choose between the following representations:"
msgstr ""
+"Rozszerzenie to pozwala Ci skonfigurować sposób reprezentacji "
+"niezdefiniowanych znaków w tablicy brajlowskiej. Aby je skonfigurować, udaj "
+"się do ustawień tablic brajlowskich. Możesz wybrać z pośród następujących "
+"sposobów reprezentacji niezdefiniowanych znaków."
#: addon/globalPlugins/brailleExtender/addonDoc.py:52
msgid ""
"You can also combine this option with the “describe the character if "
"possible” setting."
msgstr ""
+"Opcja ta może również działać w połączeniu z ustawieniem \"opisuj znaki, "
+"kiedy to możliwe\"."
#: addon/globalPlugins/brailleExtender/addonDoc.py:54
msgid "Notes:"
-msgstr ""
+msgstr "uwagi: "
#: addon/globalPlugins/brailleExtender/addonDoc.py:56
msgid ""
@@ -886,11 +886,15 @@ msgid ""
"best combination is the usage of the HUC8 representation without checking "
"the “describe character if possible” option."
msgstr ""
+"W celu rozdzielenia niezdefiniowanych znaków przy zachowaniu maksymalnej "
+"ilości miejsca, najlepszą opcją jest używanie trybu reprezentacji HUC8, z "
+"wyłączoną opcją \"opisuj znaki, kiedy to możliwe\"."
#: addon/globalPlugins/brailleExtender/addonDoc.py:57
#, python-brace-format
msgid "To learn more about the HUC representation, see {url}"
msgstr ""
+"Jeżeli chcesz dowiedzieć się więcej na temat reprezentacji HUC, zobacz {url}"
#: addon/globalPlugins/brailleExtender/addonDoc.py:58
msgid ""
@@ -898,16 +902,21 @@ msgid ""
"take precedence over character descriptions, which also take precedence over "
"the chosen representation for undefined characters."
msgstr ""
+"Pamiętaj, że definicje tabel, jak i twoje własne definicje w słownikach mają "
+"pierwszeństwo nad opisami znaków. Mają również pierwszeństwo nad "
+"reprezentacją niezdefiniowanych znaków."
#: addon/globalPlugins/brailleExtender/addonDoc.py:61
msgid "Getting Current Character Info"
-msgstr ""
+msgstr "uzyskiwanie informacji o znaku"
#: addon/globalPlugins/brailleExtender/addonDoc.py:63
msgid ""
"This feature allows you to obtain various information regarding the "
"character under the cursor using the current input braille table, such as:"
msgstr ""
+"Opcja ta pozwala Ci uzyskać wiele informacji na temat znaku znajdującego się "
+"pod kursorem, takich jak\""
#: addon/globalPlugins/brailleExtender/addonDoc.py:65
msgid ""
@@ -915,6 +924,9 @@ msgid ""
"values; A description of the character if possible; - The Unicode Braille "
"representation and the Braille dot pattern."
msgstr ""
+"Reprezentację w formatach Huc8,, HUC6, szesnastkowym, dziesiętnym, "
+"usemkowym, dwójkowym, opis znaku jeżeli to możliwe, brajlowską "
+"reprezentację Unicode, jak i wzór brajlowski znaku."
#: addon/globalPlugins/brailleExtender/addonDoc.py:67
msgid ""
@@ -922,12 +934,17 @@ msgid ""
"information in a flash message and a double-press displays the same "
"information in a virtual NVDA buffer."
msgstr ""
+"Pojedyncze naciśnięcie zdefiniowanego dla opcji skrótu pokazuje informacje "
+"jako wiadomość błyskawiczną. Podwujne natomiast, umieszcza informacje w "
+"wirtualnym buforze NVDA."
#: addon/globalPlugins/brailleExtender/addonDoc.py:69
msgid ""
"On supported displays the defined gesture is ⡉+space. No system gestures are "
"defined by default."
msgstr ""
+"Dla wspieranych monitorów brajlowskich, domyślnym skrótem dla funkcji jest ⡉"
+"+spacja. Systemowe skróty nie są domyślnie ustawione."
#: addon/globalPlugins/brailleExtender/addonDoc.py:71
#, python-brace-format
@@ -935,11 +952,11 @@ msgid ""
"For example, for the '{chosenChar}' character, we will get the following "
"information:"
msgstr ""
+"Na przykład, dla znaku '{chosenChar}' otrzymamy następujące informacje: "
#: addon/globalPlugins/brailleExtender/addonDoc.py:74
-#, fuzzy
msgid "Advanced Braille Input"
-msgstr "reguły zaawansowane"
+msgstr "Zaawansowane wprowadzanie brajla"
#: addon/globalPlugins/brailleExtender/addonDoc.py:76
msgid ""
@@ -951,35 +968,42 @@ msgid ""
"Alternatively, an option allows you to automatically exit this mode after "
"entering a single pattern. "
msgstr ""
+"Ta funkcja pozwala Ci wprowadzić dowolny znak w jego reprezentacji HUC8 lub "
+"jego wartości szesnastkowej/dziesiętnej/usemkowej/dwójkowej. Co więcej, "
+"pozwala Ci ona tworzyć skróty. W celu wykorzystania tej funkcji, włącz "
+"zaawansowany tryb wprowadzania a następnie wprowadź odpowiedni wzór. "
+"Domyślnie, tryb ten aktywowany jest skrótem NVDA+WINDOWS+I lub ⡊+spacja dla "
+"wspieranych monitorów brajlowskich. Naciśnij powyższy sskrót ponownie w celu "
+"opuszczenia tego trybu."
#: addon/globalPlugins/brailleExtender/addonDoc.py:80
msgid "Specify the basis as follows"
-msgstr ""
+msgstr "Podaj podstawę jak pokazano poniżej"
#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "⠭ or ⠓"
-msgstr ""
+msgstr "⠭ lub ⠓"
#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "for a hexadecimal value"
-msgstr ""
+msgstr "Dla wartości szesnastkowej"
#: addon/globalPlugins/brailleExtender/addonDoc.py:83
msgid "for a decimal value"
-msgstr ""
+msgstr "Dla wartości dziesiętnej."
#: addon/globalPlugins/brailleExtender/addonDoc.py:84
msgid "for an octal value"
-msgstr ""
+msgstr "Dla wartości usemkowej."
#: addon/globalPlugins/brailleExtender/addonDoc.py:87
msgid ""
"Enter the value of the character according to the previously selected basis."
-msgstr ""
+msgstr "Wprowadź wartość znaku w poprzednio wybranej podstawie."
#: addon/globalPlugins/brailleExtender/addonDoc.py:88
msgid "Press Space to validate."
-msgstr ""
+msgstr "Naciśnij spację w celu sprawdzenia."
#: addon/globalPlugins/brailleExtender/addonDoc.py:91
msgid ""
@@ -987,18 +1011,23 @@ msgid ""
"dictionaries -. Then, you just have to enter your abbreviation and press "
"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
msgstr ""
+"Skróty musisz najpierw dodać w oknie \"słowniki zaawansowanego trybu\", "
+"następnie musisz po prostu wpisać swój skrót i wcisnąć spację w celu jego "
+"rozwinięcia. Na przykład, możesz skojarzyć wzór ⠎⠺ ze słowem kanapka."
#: addon/globalPlugins/brailleExtender/addonDoc.py:93
msgid "Here are some examples of sequences to be entered for given characters:"
msgstr ""
+"Poniżej podano przykłady sekwencji które możesz wpisać dla danych znaków:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:97
msgid "Note: the HUC6 input is currently not supported."
msgstr ""
+"Uwaga! Wprowadzanie znaków w reprezentacji HUC6 nie jest obecnie wspierane."
#: addon/globalPlugins/brailleExtender/addonDoc.py:100
msgid "One-hand mode"
-msgstr ""
+msgstr "Tryb jednoręczny"
#: addon/globalPlugins/brailleExtender/addonDoc.py:102
msgid ""
@@ -1007,10 +1036,14 @@ msgid ""
"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
"Three input methods are available."
msgstr ""
+"Funkcja ta pozwala ci stworzyć wzór w kilku krokach. W celu aktywacji tej "
+"opcji możesz udać się do ustawień ogólnych dodatku lub też wcisnąć skrót NVDA"
+"+WINDOWS+H (⡂+spacja dla wspieranych monitorów brajlowskich). Dostępne są "
+"trzy metody wprowadzania."
#: addon/globalPlugins/brailleExtender/addonDoc.py:103
msgid "Method #1: fill a cell in 2 stages on both sides"
-msgstr ""
+msgstr "Metoda 1: wypełnij komórkę w dwóch etapach"
#: addon/globalPlugins/brailleExtender/addonDoc.py:105
msgid ""
@@ -1018,27 +1051,36 @@ msgid ""
"side is empty, type the dots correspondig to the opposite side twice, or "
"type the dots corresponding to the non-empty side in 2 steps."
msgstr ""
+"Dla tej metody, wpisz najpierw punkty odpowiadające lewej stronie znaku, a "
+"potem te dla prawej strony. Jeżeli znak posiada tylko jedną stronę, wpisz go "
+"podwójnie."
#: addon/globalPlugins/brailleExtender/addonDoc.py:106
#: addon/globalPlugins/brailleExtender/addonDoc.py:115
msgid "For example:"
-msgstr ""
+msgstr "Na przykład:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:108
msgid "For ⠛: press dots 1-2 then dots 4-5."
-msgstr ""
+msgstr "Dla znaku ⠛: wciśnij punkty 1-2 a potem punkty 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:109
msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
msgstr ""
+"Dla znaku ⠃: wprowadź punkty 1-2 potem punkty 1-2, lub punkt 1 a potem punkt "
+"2."
#: addon/globalPlugins/brailleExtender/addonDoc.py:110
msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
msgstr ""
+"Dla znaku ⠘: wciśnij punkty 4-5 a potem punkty 4-5, lub punkt 4 a potem "
+"punkt 5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:112
msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
msgstr ""
+"Metoda 2: wypełnij komórkę w dwuch etapach, spacja równa się pustej stronie "
+"znaku"
#: addon/globalPlugins/brailleExtender/addonDoc.py:114
msgid ""
@@ -1047,58 +1089,67 @@ msgid ""
"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
"An empty cell will be obtained by pressing the space key twice."
msgstr ""
+"Używając tej metody, możesz wpisać znak przy pomocy jednej ręki, nie "
+"zależnie od tego, którą srronę klawiatury brajlowskiej wybierzesz. Pierwszy "
+"krok pozwala ci wpisać punkty 1, 2, 3, 7 a drugi 4, 5, 6, 8. Jeżeli "
+"któakolwiek ze stron znaków jest pusta, wciśnij spację. W celu wprowadzenia "
+"pustej komórki, wwpisz spację podwójnie."
#: addon/globalPlugins/brailleExtender/addonDoc.py:117
msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
msgstr ""
+"Dla znaku ⠛: wpisz punkty 1-2 a potem punkty 1-2, lub punkty 4-5 a potem "
+"punkty 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:118
msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
msgstr ""
+"Dla znaku ⠃: wpisz punkty 1-2 a potem spację, lub punkty 4-5 a potem spację."
#: addon/globalPlugins/brailleExtender/addonDoc.py:119
msgid "For ⠘: press space then 1-2, or space then dots 4-5."
-msgstr ""
+msgstr "Dla znaku ⠘: wpisz spację a potem 1-2, lubb spację a potem punkty 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:121
msgid ""
"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
"validate the character)"
msgstr ""
+"metoda 3: wpisz znak punkt po punkcie, spacja w celu sprawdzenia znaku."
#: addon/globalPlugins/brailleExtender/addonDoc.py:126
msgid "Dots 1-2, then dots 4-5, then space."
-msgstr ""
+msgstr "Punkty 1-2, potem 4-5 a potem spację."
#: addon/globalPlugins/brailleExtender/addonDoc.py:127
msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
msgstr ""
+"Punkty 1-2-3, a potem punkt 3 (w celu korekcji), a potem punkty 4-5, a potem "
+"spację."
#: addon/globalPlugins/brailleExtender/addonDoc.py:128
msgid "Dot 1, then dots 2-4-5, then space."
-msgstr ""
+msgstr "Dot 1, then dots 2-4-5, then space."
#: addon/globalPlugins/brailleExtender/addonDoc.py:129
msgid "Dots 1-2-4, then dot 5, then space."
-msgstr ""
+msgstr "Dots 1-2-4, then dot 5, then space."
#: addon/globalPlugins/brailleExtender/addonDoc.py:130
msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
-msgstr ""
+msgstr "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
#: addon/globalPlugins/brailleExtender/addonDoc.py:131
msgid "Etc."
-msgstr ""
+msgstr "ITD."
#: addon/globalPlugins/brailleExtender/addonDoc.py:150
-#, fuzzy
msgid "Documentation"
-msgstr "&Pomoc"
+msgstr "Dokumentacja"
#: addon/globalPlugins/brailleExtender/addonDoc.py:160
-#, fuzzy
msgid "Driver loaded"
-msgstr "%s ponownie wczytany"
+msgstr "Sterownik wczytany"
#: addon/globalPlugins/brailleExtender/addonDoc.py:161
msgid "Profile"
@@ -1181,7 +1232,7 @@ msgstr "Duński"
#: addon/globalPlugins/brailleExtender/addonDoc.py:285
msgid "English and French"
-msgstr ""
+msgstr "Angielski i francuzki."
#: addon/globalPlugins/brailleExtender/addonDoc.py:286
msgid "German"
@@ -1251,15 +1302,13 @@ msgid "caps lock"
msgstr "caps lock"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:105
-#, fuzzy
msgid "all tables"
-msgstr "Tablice brajlowskie"
+msgstr "Wszystkie tablice"
#. Translators: title of a dialog.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:116
-#, fuzzy
msgid "Advanced input mode dictionary"
-msgstr "Dodaj wpis do słownika brajlowskiego"
+msgstr "słownik trybu zaawansowanego wprowadzania"
#. Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
#. Translators: The label for the combo box of dictionary entries in table dictionary dialog.
@@ -1271,17 +1320,15 @@ msgstr "&Wpisy słownika"
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:131
msgid "Abbreviation"
-msgstr ""
+msgstr "Skrót"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:132
-#, fuzzy
msgid "Replace by"
-msgstr "Zamiana"
+msgstr "Zamień na"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:133
-#, fuzzy
msgid "Input table"
-msgstr " tablica wprowadzania"
+msgstr "Tabela wejścia"
#. Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
#. Translators: The label for a button in table dictionaries dialog to add new entries.
@@ -1306,9 +1353,8 @@ msgstr "&Usuń"
#. Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:159
-#, fuzzy
msgid "&Open the dictionary file in an editor"
-msgstr "&Otwórz plik słownika w edytorze tekstowym"
+msgstr "&Otwórz plik słownika w edytorze"
#. Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
#. Translators: The label for a button in table dictionaries dialog to reload dictionary.
@@ -1324,7 +1370,7 @@ msgstr "Dodaj wpis do słownika"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:221
msgid "File doesn't exist yet"
-msgstr ""
+msgstr "Plik jeszcze nie istnieje"
#. Translators: This is the label for the edit dictionary entry dialog.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:242
@@ -1334,78 +1380,74 @@ msgstr "Edytuj wpis słownikowy"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:247
-#, fuzzy
msgid "&Abreviation"
-msgstr "&Kierunek"
+msgstr "&Skrót"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:252
-#, fuzzy
msgid "&Replace by"
-msgstr "Zamiana"
+msgstr "&Zamień na"
#. Translators: title of a dialog.
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:276
-#, fuzzy
msgid "Advanced input mode"
-msgstr "reguły zaawansowane"
+msgstr "Tryb zaawansowanego wejścia"
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:284
msgid "E&xit the advanced input mode after typing one pattern"
-msgstr ""
+msgstr "Opuść zaawansowany tryb wprowadzania po wpisaniu pojedynczego wzoru."
#: addon/globalPlugins/brailleExtender/advancedInputMode.py:291
msgid "Escape sign for Unicode values"
-msgstr ""
+msgstr "Znak ucieczki dla wartości Unicode"
#: addon/globalPlugins/brailleExtender/configBE.py:54
#: addon/globalPlugins/brailleExtender/undefinedChars.py:248
-#, fuzzy
msgid "Use braille table behavior"
-msgstr "tablice brajlowskie"
+msgstr "Użyj zachowania tablicy brajlowskiej"
#: addon/globalPlugins/brailleExtender/configBE.py:55
#: addon/globalPlugins/brailleExtender/undefinedChars.py:249
msgid "Dots 1-8 (⣿)"
-msgstr ""
+msgstr "Punkty 1-8 (⣿)"
#: addon/globalPlugins/brailleExtender/configBE.py:56
#: addon/globalPlugins/brailleExtender/undefinedChars.py:250
msgid "Dots 1-6 (⠿)"
-msgstr ""
+msgstr "Punkty 1-6 (⠿)"
#: addon/globalPlugins/brailleExtender/configBE.py:57
#: addon/globalPlugins/brailleExtender/undefinedChars.py:251
msgid "Empty cell (⠀)"
-msgstr ""
+msgstr "Pusta komórka (⠀)"
#: addon/globalPlugins/brailleExtender/configBE.py:58
msgid "Other dot pattern (e.g.: 6-123456)"
-msgstr ""
+msgstr "Inny wzór punktów, na przykład 6-123456)"
#: addon/globalPlugins/brailleExtender/configBE.py:59
#: addon/globalPlugins/brailleExtender/undefinedChars.py:253
msgid "Question mark (depending output table)"
-msgstr ""
+msgstr "Znak zapytania (zależny od tabeli wyjścia)"
#: addon/globalPlugins/brailleExtender/configBE.py:60
msgid "Other sign/pattern (e.g.: \\, ??)"
-msgstr ""
+msgstr "Other sign/pattern (e.g.: \\, ??)"
#: addon/globalPlugins/brailleExtender/configBE.py:61
#: addon/globalPlugins/brailleExtender/undefinedChars.py:255
msgid "Hexadecimal, Liblouis style"
-msgstr ""
+msgstr "Szesnastkowy, styl Liblouis."
#: addon/globalPlugins/brailleExtender/configBE.py:62
#: addon/globalPlugins/brailleExtender/undefinedChars.py:256
msgid "Hexadecimal, HUC8"
-msgstr ""
+msgstr "Szesnastkowy, HUC8"
#: addon/globalPlugins/brailleExtender/configBE.py:63
#: addon/globalPlugins/brailleExtender/undefinedChars.py:257
msgid "Hexadecimal, HUC6"
-msgstr ""
+msgstr "Szesnastkowy, HUC6"
#: addon/globalPlugins/brailleExtender/configBE.py:70
#: addon/globalPlugins/brailleExtender/configBE.py:77
@@ -1457,17 +1499,17 @@ msgstr "Tryb przeglądu"
#: addon/globalPlugins/brailleExtender/configBE.py:102
msgid "Fill a cell in two stages on both sides"
-msgstr ""
+msgstr "Wypełnij komórkę w dwóch etapach."
#: addon/globalPlugins/brailleExtender/configBE.py:103
msgid "Fill a cell in two stages on one side (space = empty side)"
-msgstr ""
+msgstr "Wypełnij komórkę w duch etapach, spacja dla pustej strony"
#: addon/globalPlugins/brailleExtender/configBE.py:104
msgid ""
"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
"character)"
-msgstr ""
+msgstr "Wypełnij znak punkt po punkcie, spacja w celu wprowadzenia."
#: addon/globalPlugins/brailleExtender/configBE.py:131
msgid "last known"
@@ -1619,11 +1661,11 @@ msgstr ""
#. Translators: Reported when translation didn't succeed due to unsupported input.
#: addon/globalPlugins/brailleExtender/patchs.py:376
msgid "Unsupported input"
-msgstr ""
+msgstr "Niewspierane wejście."
#: addon/globalPlugins/brailleExtender/patchs.py:435
msgid "Unsupported input method"
-msgstr ""
+msgstr "Nie wspierana metoda wprowadzania."
#: addon/globalPlugins/brailleExtender/settings.py:34
msgid "The feature implementation is in progress. Thanks for your patience."
@@ -1732,11 +1774,11 @@ msgstr "Drugi preferowany monitor brajlowski"
#: addon/globalPlugins/brailleExtender/settings.py:120
msgid "One-handed mode"
-msgstr ""
+msgstr "Tryb jednoręczny"
#: addon/globalPlugins/brailleExtender/settings.py:124
msgid "One hand mode method"
-msgstr ""
+msgstr "Metoda jednoręcznego wprowadzania."
#. Translators: title of a dialog.
#: addon/globalPlugins/brailleExtender/settings.py:159
@@ -1862,15 +1904,13 @@ msgstr "Wtórna tablica wyjścia do użycia"
#. Translators: label of a dialog.
#: addon/globalPlugins/brailleExtender/settings.py:362
-#, fuzzy
msgid "Display &tab signs as spaces"
-msgstr "Wyświetl znaki tabulacji jako spacje"
+msgstr "Wyświetl &znaki tabulatora jako spację"
#. Translators: label of a dialog.
#: addon/globalPlugins/brailleExtender/settings.py:366
-#, fuzzy
msgid "Number of &space for a tab sign"
-msgstr "Liczba odstępów dla znaku tabulacji"
+msgstr "Liczba &odstępów dla znaku tabulacji"
#: addon/globalPlugins/brailleExtender/settings.py:367
msgid "Alternative and &custom braille tables"
@@ -1881,6 +1921,7 @@ msgid ""
"NVDA must be restarted for some new options to take effect. Do you want "
"restart now?"
msgstr ""
+"NVDA musi zostać uruchomione ponownie w celu zastosowania nowych zmian."
#: addon/globalPlugins/brailleExtender/settings.py:425
msgid "input and output"
@@ -2183,53 +2224,50 @@ msgstr "Ustawienia"
#. Translators: label of a dialog.
#: addon/globalPlugins/brailleExtender/undefinedChars.py:244
-#, fuzzy
msgid "Representation &method"
-msgstr "Wyświetlanie"
+msgstr "&Metoda wyświetlania"
#: addon/globalPlugins/brailleExtender/undefinedChars.py:252
#, python-brace-format
msgid "Other dot pattern (e.g.: {dotPatternSample})"
-msgstr ""
+msgstr "Inny wzór punktów, na przykład {dotPatternSample})"
#: addon/globalPlugins/brailleExtender/undefinedChars.py:254
#, python-brace-format
msgid "Other sign/pattern (e.g.: {signPatternSample})"
-msgstr ""
+msgstr "Inny znak lub wzór na przykład {signPatternSample})"
#: addon/globalPlugins/brailleExtender/undefinedChars.py:272
msgid "Specify another pattern"
-msgstr ""
+msgstr "Wprowadź inny wzór."
#: addon/globalPlugins/brailleExtender/undefinedChars.py:276
msgid "Describe undefined characters if possible"
-msgstr ""
+msgstr "Opisuj niezdefiniowane znaki, jeżeli to możliwe."
#: addon/globalPlugins/brailleExtender/undefinedChars.py:284
msgid "Also describe extended characters (e.g.: country flags)"
-msgstr ""
+msgstr "Opisuj także znaki rozszerzone, na przykład flagi państw."
#: addon/globalPlugins/brailleExtender/undefinedChars.py:291
msgid "Start tag"
-msgstr ""
+msgstr "Znak początku"
#: addon/globalPlugins/brailleExtender/undefinedChars.py:296
msgid "End tag"
-msgstr ""
+msgstr "Znak końca."
#: addon/globalPlugins/brailleExtender/undefinedChars.py:307
msgid "Language"
-msgstr ""
+msgstr "Język"
#: addon/globalPlugins/brailleExtender/undefinedChars.py:310
-#, fuzzy
msgid "Use the current output table"
-msgstr "Używaj aktualnej tablicy wprowadzania"
+msgstr "Użyj aktualnej tablicy wyświetlania"
#: addon/globalPlugins/brailleExtender/undefinedChars.py:323
-#, fuzzy
msgid "Braille table"
-msgstr "Tablice brajlowskie"
+msgstr "Tablica brajlowska"
#: addon/globalPlugins/brailleExtender/updateCheck.py:61
#, python-format
@@ -2276,7 +2314,7 @@ msgstr "nie jest znakiem"
#: addon/globalPlugins/brailleExtender/utils.py:208
msgid "N/A"
-msgstr ""
+msgstr "Niedostępny"
#: addon/globalPlugins/brailleExtender/utils.py:312
msgid "Available combinations"
From 2b3d28d7794e44494ad93b48e50a1e065da4f517 Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Sun, 19 Apr 2020 10:06:03 +0200
Subject: [PATCH 79/87] updated the full russian translation. It may require
correction
---
addon/locale/ru/LC_MESSAGES/nvda.po | 43 +++++++++++++++++++++--------
1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/addon/locale/ru/LC_MESSAGES/nvda.po b/addon/locale/ru/LC_MESSAGES/nvda.po
index c4c9788b..cadc20ac 100644
--- a/addon/locale/ru/LC_MESSAGES/nvda.po
+++ b/addon/locale/ru/LC_MESSAGES/nvda.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: BrailleExtender dev-18.08.04-105046\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
"POT-Creation-Date: 2020-04-15 09:24+0200\n"
-"PO-Revision-Date: 2020-04-17 22:14+0100\n"
+"PO-Revision-Date: 2020-04-19 10:04+0100\n"
"Last-Translator: Zvonimir \n"
"Language-Team: \n"
"Language: ru_RU\n"
@@ -1030,10 +1030,14 @@ msgid ""
"fly using NVDA+Windows+h gesture by default (⡂+space on supported displays). "
"Three input methods are available."
msgstr ""
+"Эта функция позволяет вам писать текст в нескольких шагах. Эта опция может "
+"быть включена в настройках дополнения или на лету, используя NVDA+Windows+h "
+"по умолчанию (⡂+пробел на поддержанных брайлевских дисплеях). Три метода "
+"ввода доступны."
#: addon/globalPlugins/brailleExtender/addonDoc.py:103
msgid "Method #1: fill a cell in 2 stages on both sides"
-msgstr ""
+msgstr "Метод #1: заполнять клетку в двух шагах двусторонно"
#: addon/globalPlugins/brailleExtender/addonDoc.py:105
msgid ""
@@ -1041,27 +1045,33 @@ msgid ""
"side is empty, type the dots correspondig to the opposite side twice, or "
"type the dots corresponding to the non-empty side in 2 steps."
msgstr ""
+"С помощью этого метода, набирайте точки одной стороны клетки, а потом правую "
+"сторону клетки. Если одна сторона пустая, набирайте точки соответствующие "
+"обратной стороны два раза, или набирайте точки, которые соответствуют полной "
+"стороны в два шага."
#: addon/globalPlugins/brailleExtender/addonDoc.py:106
#: addon/globalPlugins/brailleExtender/addonDoc.py:115
msgid "For example:"
-msgstr ""
+msgstr "Например:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:108
msgid "For ⠛: press dots 1-2 then dots 4-5."
-msgstr ""
+msgstr "для ⠛: набирайте точки 1-2 потом точки 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:109
msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
-msgstr ""
+msgstr "Для ⠃: набираййте точки 1-2 потом точки 1-2, или точку 1 потом dot 2."
#: addon/globalPlugins/brailleExtender/addonDoc.py:110
msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
-msgstr ""
+msgstr "для ⠘: набирайте 4-5 потом 4-5, или точку 4 потом точку 5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:112
msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
msgstr ""
+"Метод #2: набирайте знаки клетки в двух шагах по одной стороне (пробел = "
+"пустая часть клетки)"
#: addon/globalPlugins/brailleExtender/addonDoc.py:114
msgid ""
@@ -1070,44 +1080,53 @@ msgid ""
"dots 1-2-3-7 and the second one 4-5-6-8. If one side is empty, press space. "
"An empty cell will be obtained by pressing the space key twice."
msgstr ""
+"Используя этот метод, вы можете набрать знаки в клетке одной рукой, "
+"независимо от выбранной стороны брайлевской клавиатуры. Первый шаг вам "
+"позволяет набрать точки 1-2-3-7 а вторая 4-5-6-8. Если одна сторона - пуста, "
+"нажмите пробел. Получите пустую клетку после нажатия пробела дважды."
#: addon/globalPlugins/brailleExtender/addonDoc.py:117
msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
msgstr ""
+"для ⠛: нажмите точки 1-2 потом точки 1-2, или точки 4-5 потом точки 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:118
msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
-msgstr ""
+msgstr "Для ⠃: нажмите точки 1-2 а потом пробел, или 4-5 а потом пробел."
#: addon/globalPlugins/brailleExtender/addonDoc.py:119
msgid "For ⠘: press space then 1-2, or space then dots 4-5."
-msgstr ""
+msgstr "Для ⠘: нажмите пробел а потом 1-2, или пробел а потом точки 4-5."
#: addon/globalPlugins/brailleExtender/addonDoc.py:121
msgid ""
"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
"validate the character)"
msgstr ""
+"Метод #3: заполнять клетку точку по точку (каждая точка является "
+"переключателем, нажмите пробел для проверки знака)"
#: addon/globalPlugins/brailleExtender/addonDoc.py:126
msgid "Dots 1-2, then dots 4-5, then space."
-msgstr ""
+msgstr "Точка 1-2, потом точки 4-5, потом пробел."
#: addon/globalPlugins/brailleExtender/addonDoc.py:127
msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
msgstr ""
+"точки 1-2-3, потом точка 3 (для корректировки), потом точки 4-5, потом "
+"пробел."
#: addon/globalPlugins/brailleExtender/addonDoc.py:128
msgid "Dot 1, then dots 2-4-5, then space."
-msgstr ""
+msgstr "точка 1, потом точки 2-4-5, потом пробел."
#: addon/globalPlugins/brailleExtender/addonDoc.py:129
msgid "Dots 1-2-4, then dot 5, then space."
-msgstr ""
+msgstr "точки 1-2-4, потом точка 5, а потом пробел."
#: addon/globalPlugins/brailleExtender/addonDoc.py:130
msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
-msgstr ""
+msgstr "точка 2, потом точка 1, потом точка 5, потом точка 4, и потом пробел."
#: addon/globalPlugins/brailleExtender/addonDoc.py:131
msgid "Etc."
From 0de23c692101edf3dacc21aa3d43f737939e7cec Mon Sep 17 00:00:00 2001
From: zstanecic
Date: Wed, 22 Apr 2020 09:44:27 +0200
Subject: [PATCH 80/87] russian - fixed spelling error, corrected merits.
---
addon/locale/ru/LC_MESSAGES/nvda.po | 60 ++++++++++++++---------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/addon/locale/ru/LC_MESSAGES/nvda.po b/addon/locale/ru/LC_MESSAGES/nvda.po
index cadc20ac..5556b3e4 100644
--- a/addon/locale/ru/LC_MESSAGES/nvda.po
+++ b/addon/locale/ru/LC_MESSAGES/nvda.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: BrailleExtender dev-18.08.04-105046\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
"POT-Creation-Date: 2020-04-15 09:24+0200\n"
-"PO-Revision-Date: 2020-04-19 10:04+0100\n"
+"PO-Revision-Date: 2020-04-22 09:43+0100\n"
"Last-Translator: Zvonimir \n"
"Language-Team: \n"
"Language: ru_RU\n"
@@ -53,7 +53,7 @@ msgstr "Посещённые ссылки"
#: addon/globalPlugins/brailleExtender/__init__.py:72
msgid "Landmarks"
-msgstr "Ориентир"
+msgstr "Ориентиры"
#: addon/globalPlugins/brailleExtender/__init__.py:73
msgid "Headings"
@@ -225,7 +225,7 @@ msgstr "Настройки &расширенного ввода"
#: addon/globalPlugins/brailleExtender/__init__.py:278
msgid "Advanced input mode configuration"
-msgstr "Настройки режима расширенного ввода"
+msgstr "Настройки расширенного ввода"
#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "&Quick launches"
@@ -528,7 +528,7 @@ msgstr "Режим расширенного брайлевского ввода
#: addon/globalPlugins/brailleExtender/__init__.py:664
msgid "Enable/disable the advanced input mode"
-msgstr "Включить или выключить режим расширенного ввода"
+msgstr "Включает или выключает режим расширенного ввода"
#: addon/globalPlugins/brailleExtender/__init__.py:669
#, python-format
@@ -537,7 +537,7 @@ msgstr "Описание неопределённых знаков %s"
#: addon/globalPlugins/brailleExtender/__init__.py:671
msgid "Enable/disable description of undefined characters"
-msgstr "Включить или выключить описание неопределённых знаков"
+msgstr "Включает или выключает описание неопределённых знаков"
#: addon/globalPlugins/brailleExtender/__init__.py:675
msgid "Get the cursor position of text"
@@ -708,7 +708,7 @@ msgstr "Перезагружает первый брайлевский дисп
#: addon/globalPlugins/brailleExtender/__init__.py:958
msgid "Reload the second braille display defined in settings"
-msgstr "Перезагружает вторый брайлевский дисплей установленный в настройках"
+msgstr "Перезагружает второй брайлевский дисплей установленный в настройках"
#: addon/globalPlugins/brailleExtender/__init__.py:964
msgid "No braille display specified. No reload to do"
@@ -849,7 +849,7 @@ msgstr "Восмиричный"
#: addon/globalPlugins/brailleExtender/configBE.py:67
#: addon/globalPlugins/brailleExtender/undefinedChars.py:261
msgid "Binary"
-msgstr "Двоичная"
+msgstr "Двоичний"
#. Translators: title of a dialog.
#: addon/globalPlugins/brailleExtender/addonDoc.py:46
@@ -865,7 +865,7 @@ msgid ""
msgstr ""
"Дополнение даёт вам возможность настройки отображения неопределённых знаков "
"внутри брайлевской таблицы. Чтобы настроить этот режим, зайдите в настройки "
-"брайлевских таблиц. Возможен выбор следующих отображений:"
+"брайлевских таблиц. Есть возможность выбрать между следующими отображениями:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:52
msgid ""
@@ -911,8 +911,8 @@ msgid ""
"This feature allows you to obtain various information regarding the "
"character under the cursor using the current input braille table, such as:"
msgstr ""
-"Эта функция позволяет вам получить информацию о знаке под курсором используя "
-"актуальную брайлевскую таблицу, такую как:"
+"Эта функция позволяет вам получить информацию о знаке под курсором, "
+"используя актуальную брайлевскую таблицу, такую как:"
#: addon/globalPlugins/brailleExtender/addonDoc.py:65
msgid ""
@@ -931,8 +931,8 @@ msgid ""
"information in a virtual NVDA buffer."
msgstr ""
"Нажимая однажды клавишную комбинацию связанную с этой функцией,показывается "
-"информация в скором сообщении а нажатие дважды показывает Показывает ту-же "
-"самую информацию в виртуальном окне NVDA."
+"информация в скором сообщении а нажатие дважды показывает ту-же самую "
+"информацию в виртуальном окне NVDA."
#: addon/globalPlugins/brailleExtender/addonDoc.py:69
msgid ""
@@ -964,12 +964,12 @@ msgid ""
"entering a single pattern. "
msgstr ""
"Эта функция даёт вам возможность написания знаков в отображении HUC8 или в "
-"их сестнадцатиричных, десятеричных, восмиричных, или двоичных. Даже у вас "
+"их шестнадцатиричных, десятеричных, восмиричных, или двоичных. Даже у вас "
"есть возможность развития сокращений. Чтобы пользоватся этим функционалом, "
"включите расширенный ввод и напишите желанный вами знак. Жесты по умолчанию: "
"NVDA+Windows+i или ⡊+space (на поддержанных дисплеях. Нажмите тот же самый "
-"жест, чтобы выйти. Алтернативно, существует опция, которая даёт вам "
-"возможность выйти из этого режима. "
+"жест, чтобы выйти. Альтернативно, существует опция, которая даёт вам "
+"возможность выйти из этого режима после набора только одного знака. "
#: addon/globalPlugins/brailleExtender/addonDoc.py:80
msgid "Specify the basis as follows"
@@ -1150,7 +1150,7 @@ msgstr "Простые сочетания клавиш"
#: addon/globalPlugins/brailleExtender/addonDoc.py:177
msgid "Usual shortcuts"
-msgstr "стандартные сочитания клавиш"
+msgstr "стандартные сочетания клавиш"
#: addon/globalPlugins/brailleExtender/addonDoc.py:179
msgid "Standard NVDA commands"
@@ -1191,7 +1191,7 @@ msgstr "предупреждение"
#: addon/globalPlugins/brailleExtender/addonDoc.py:252
msgid "BrailleExtender has no gesture map yet for your braille display."
-msgstr "У Braille extender ещё нет жестов для вашего брайдевского дисплея."
+msgstr "У Braille extender ещё нет жестов для вашего брайлевского дисплея."
#: addon/globalPlugins/brailleExtender/addonDoc.py:255
msgid ""
@@ -1572,7 +1572,7 @@ msgstr "смер"
#. Translators: The label for a button in table dictionaries dialog to open dictionary file in an editor.
#: addon/globalPlugins/brailleExtender/dictionaries.py:169
msgid "&Open the current dictionary file in an editor"
-msgstr "&Отрыть актуалный файл словаря в редакторе"
+msgstr "&Открыть актуалный файл словаря в редакторе"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
#: addon/globalPlugins/brailleExtender/dictionaries.py:296
@@ -1663,7 +1663,7 @@ msgstr "Метод ввода не поддерживается"
#: addon/globalPlugins/brailleExtender/settings.py:34
msgid "The feature implementation is in progress. Thanks for your patience."
msgstr ""
-"Имплементация этой фукции продлится некоторое время. Спасибо з терпение."
+"Имплементация этой функции продлится некоторое время. Спасибо з терпение."
#. Translators: title of a dialog.
#: addon/globalPlugins/brailleExtender/settings.py:40
@@ -1893,7 +1893,7 @@ msgstr "Ничего"
#: addon/globalPlugins/brailleExtender/settings.py:358
msgid "Secondary output table to use"
-msgstr "Вторичная брайлевская таблица для исьпользования"
+msgstr "Вторичная брайлевская таблица для использования"
#. Translators: label of a dialog.
#: addon/globalPlugins/brailleExtender/settings.py:362
@@ -1914,8 +1914,8 @@ msgid ""
"NVDA must be restarted for some new options to take effect. Do you want "
"restart now?"
msgstr ""
-"Чтобы некоторые новые опции вступили в силу, NVDA будет перезагружен. Хотите "
-"перезагрузить её сейчас?"
+"Чтобы некоторые новые опции вступили в силу, NVDA будет перезагружена. "
+"Хотите перезагрузить её сейчас?"
#: addon/globalPlugins/brailleExtender/settings.py:425
msgid "input and output"
@@ -1932,7 +1932,7 @@ msgstr "Только вывод"
#: addon/globalPlugins/brailleExtender/settings.py:459
#, python-format
msgid "Table name: %s"
-msgstr "Имя таблицы: %s"
+msgstr "Название таблицы: %s"
#: addon/globalPlugins/brailleExtender/settings.py:460
#, python-format
@@ -1953,7 +1953,7 @@ msgid ""
"In this combo box, all tables are present. Press space bar, left or right "
"arrow keys to include (or not) the selected table in switches"
msgstr ""
-"в данном поле со списком присудствуют все имеющиеся брайлевские таблицы. "
+"в данном поле со списком присутствуют все имеющиеся брайлевские таблицы. "
"нажмите пробел, стрелку в лево или в право, чтобы не добавлять или добавить "
"предпочетаемую таблицу в список таблиц ввода и вывода для быстрого "
"переключения между ними."
@@ -1964,7 +1964,7 @@ msgid ""
"and 'semicolon' key to view miscellaneous infos on the selected table"
msgstr ""
"вы также можете нажать запятую, чтобы узнать имя файла выбранной таблицы или "
-"многоточее, чтобы получить дополнительную информацию о таблице."
+"многоточие, чтобы получить дополнительную информацию о таблице."
#: addon/globalPlugins/brailleExtender/settings.py:467
msgid "Contextual help"
@@ -2032,7 +2032,7 @@ msgstr "Только вывод"
#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Choose a table file"
-msgstr "Выберьте файл брайлевской таблицы"
+msgstr "Выберите файл брайлевской таблицы"
#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Liblouis table files"
@@ -2118,12 +2118,12 @@ msgstr ""
#: addon/globalPlugins/brailleExtender/settings.py:685
msgid "Don't add a quick launch"
-msgstr "Ек добавлять быстрый запуск"
+msgstr "не добавлять быстрый запуск"
#: addon/globalPlugins/brailleExtender/settings.py:711
#, python-brace-format
msgid "Choose a file for {0}"
-msgstr "Выберьте фал для {0}"
+msgstr "Выберьте файл для {0}"
#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Please create or select a quick launch first"
@@ -2242,7 +2242,7 @@ msgstr "Описывать неопределенные знаки, если в
#: addon/globalPlugins/brailleExtender/undefinedChars.py:284
msgid "Also describe extended characters (e.g.: country flags)"
-msgstr "Такле описывает расширенные знаки (такие как.: флаги государств)"
+msgstr "Также описывает расширенные знаки (такие как.: флаги государств)"
#: addon/globalPlugins/brailleExtender/undefinedChars.py:291
msgid "Start tag"
@@ -2417,7 +2417,7 @@ msgstr "Проговаривание актуальной строки в реж
#: buildVars.py:38
msgid "translate text easily in Unicode braille and vice versa. E.g.: z <--> ⠵"
-msgstr "Переведите текст из з уникодового брайля и обратно. напр.: z <--> ⠵"
+msgstr "Переведите текст из уникодового брайля и обратно. напр.: z <--> ⠵"
#: buildVars.py:39
msgid ""
From dc3a6953e074d59a6d496683c5af1c13faa9c4f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Wed, 22 Apr 2020 23:11:27 +0200
Subject: [PATCH 81/87] we can now select a group
---
.../globalPlugins/brailleExtender/__init__.py | 57 +++++++++++--------
.../brailleExtender/brailleTablesExt.py | 53 +++++++++++++++++
addon/globalPlugins/brailleExtender/utils.py | 15 +++--
3 files changed, 98 insertions(+), 27 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index d9cab1f7..45d580a4 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -858,35 +858,46 @@ def script_decreaseDelayAutoScroll(self, gesture):
script_decreaseDelayAutoScroll.__doc__ = _("Decrease autoscroll delay")
def script_switchInputBrailleTable(self, gesture):
- if len(configBE.inputTables) < 2:
- return ui.message(_("You must choose at least two tables for this feature. Please fill in the settings"))
- if not config.conf["braille"]["inputTable"] in configBE.inputTables:
- configBE.inputTables.append(config.conf["braille"]["inputTable"])
- tid = configBE.inputTables.index(config.conf["braille"]["inputTable"])
- nID = tid + 1 if tid + 1 < len(configBE.inputTables) else 0
- brailleInput.handler.table = brailleTables.listTables(
- )[brailleTablesExt.listTablesFileName().index(configBE.inputTables[nID])]
- ui.message(_("Input: %s") % brailleInput.handler.table.displayName)
- return
+ usableIn = brailleTablesExt.USABLE_INPUT
+ choices = brailleTablesExt.getPreferredTables()[0] + brailleTablesExt.getGroups(0)[0]
+ if len(choices) < 2:
+ return ui.message(_("Please fill at least two tables and/or groups of tables for this feature first"))
+ newGroup = brailleTablesExt.getGroup(
+ position=brailleTablesExt.POSITION_NEXT,
+ usableIn=usableIn
+ )
+ res = brailleTablesExt.setTableOrGroup(
+ usableIn=usableIn,
+ e=newGroup
+ )
+ if not res: raise RuntimeError("error")
+ utils.refreshBD()
+ dictionaries.setDictTables()
+ desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else _("Default"))
+ ui.message(_("Input: %s") % desc)
- script_switchInputBrailleTable.__doc__ = _(
- "Switch between his favorite input braille tables")
+ script_switchInputBrailleTable.__doc__ = _("Switch between your favorite input braille tables including groups")
def script_switchOutputBrailleTable(self, gesture):
- if len(configBE.outputTables) < 2:
- return ui.message(_("You must choose at least two tables for this feature. Please fill in the settings"))
- if not config.conf["braille"]["translationTable"] in configBE.outputTables:
- configBE.outputTables.append(config.conf["braille"]["translationTable"])
- tid = configBE.outputTables.index(
- config.conf["braille"]["translationTable"])
- nID = tid + 1 if tid + 1 < len(configBE.outputTables) else 0
- config.conf["braille"]["translationTable"] = configBE.outputTables[nID]
+ usableIn = brailleTablesExt.USABLE_OUTPUT
+ choices = brailleTablesExt.getPreferredTables()[1] + brailleTablesExt.getGroups(0)[1]
+ if len(choices) < 2:
+ return ui.message(_("Please fill at least two tables and/or groups of tables for this feature first"))
+ newGroup = brailleTablesExt.getGroup(
+ position=brailleTablesExt.POSITION_NEXT,
+ usableIn=usableIn
+ )
+ res = brailleTablesExt.setTableOrGroup(
+ usableIn=usableIn,
+ e=newGroup
+ )
+ if not res: raise RuntimeError("error")
utils.refreshBD()
dictionaries.setDictTables()
- ui.message(_("Output: %s") % brailleTablesExt.listTablesDisplayName()[brailleTablesExt.listTablesFileName().index(config.conf["braille"]["translationTable"])])
- return
+ desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else _("Default"))
+ ui.message(_("Output: %s") % desc)
- script_switchOutputBrailleTable.__doc__ = _("Switch between his favorite output braille tables")
+ script_switchOutputBrailleTable.__doc__ = _("Switch between your favorite output braille tables including groups")
def script_currentBrailleTable(self, gesture):
inTable = brailleInput.handler.table.displayName
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
index d1bdd44a..39b36293 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesExt.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -20,6 +20,15 @@
addonHandler.initTranslation()
+POSITION_CURRENT = "c"
+POSITION_PREVIOUS = "p"
+POSITION_NEXT = "n"
+POSITIONS = [POSITION_CURRENT, POSITION_PREVIOUS, POSITION_NEXT]
+
+USABLE_INPUT = "i"
+USABLE_OUTPUT = "o"
+USABLE_LIST = [USABLE_INPUT, USABLE_OUTPUT]
+
GroupTables = namedtuple("GroupTables", ("name", "members", "usableIn"))
listContractedTables = lambda tables=None: [table for table in (tables or listTables()) if table.contracted]
@@ -132,7 +141,51 @@ def getGroups(plain=True):
o = [group for group in groups if group.usableIn in ['o', 'io']]
return i, o
+def getAllGroups(usableIn):
+ usableInIndex = USABLE_LIST.index(usableIn)
+ return [None] +tablesToGroups(getPreferredTables()[usableInIndex], usableIn=usableIn) + getGroups(0)[usableInIndex]
+
+def getGroup(
+ usableIn,
+ position=POSITION_CURRENT,
+ choices=None
+):
+ global _currentGroup
+ if position not in POSITIONS or usableIn not in USABLE_LIST: return None
+ usableInIndex = USABLE_LIST.index(usableIn)
+ currentGroup = _currentGroup[usableInIndex]
+ if not choices: choices = getAllGroups(usableIn)
+ if currentGroup not in choices:
+ currentGroup = choices[0]
+ curPos = choices.index(currentGroup)
+ newPos = curPos
+ if position == POSITION_PREVIOUS: newPos = curPos - 1
+ elif position == POSITION_NEXT: newPos = curPos + 1
+ return choices[newPos % len(choices)]
+
+def setTableOrGroup(usableIn, e, choices=None):
+ global _currentGroup
+ if not usableIn in USABLE_LIST: return False
+ usableInIndex = USABLE_LIST.index(usableIn)
+ choices = getAllGroups(usableIn)
+ if not e in choices: return False
+ _currentGroup[usableInIndex] = e
+ return True
+
+def tablesToGroups(tables, usableIn):
+ groups = []
+ for table in tables:
+ groups.append(GroupTables(
+ fileName2displayName([table]),
+ [table],
+ usableIn
+ ))
+ fileName2displayName
+ return groups
+
_groups = None
+_currentGroup = [None, None]
+
class BrailleTablesDlg(gui.settingsDialogs.SettingsPanel):
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 574b5982..b4b58d46 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -25,6 +25,7 @@
import treeInterceptorHandler
import unicodedata
from .common import *
+from . import brailleTablesExt
from . import huc
from . import dictionaries
@@ -478,10 +479,16 @@ def getCurrentBrailleTables(input_=False, brf=False):
tables = []
app = appModuleHandler.getAppModuleForNVDAObject(api.getNavigatorObject())
if brailleInput.handler._table.fileName == config.conf["braille"]["translationTable"] and app and app.appName != "nvda": tables += dictionaries.dictTables
- if input_: mainTable = os.path.join(brailleTables.TABLES_DIR, brailleInput.handler._table.fileName)
- else: mainTable = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
- tables += [
- mainTable,
+ if input_:
+ mainTable = os.path.join(brailleTables.TABLES_DIR, brailleInput.handler._table.fileName)
+ group = brailleTablesExt.getGroup(usableIn='i')
+ if group: group = group.members
+ else:
+ mainTable = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
+ group = brailleTablesExt.getGroup(usableIn='o')
+ if group: group = group.members
+ tbl = group or [mainTable]
+ tables += tbl + [
os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
]
return tables
From 5cc8c0d47a951f43ddfbdbd2fda80b23600e6ee7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 23 Apr 2020 03:30:13 +0200
Subject: [PATCH 82/87] Add the possibility to reorder tables
---
.../brailleExtender/brailleTablesExt.py | 33 ++++++++++++++-----
1 file changed, 25 insertions(+), 8 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
index 39b36293..2ee2e0af 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesExt.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -12,6 +12,7 @@
import brailleTables
import config
from collections import namedtuple
+from itertools import permutations
from typing import Optional, List, Tuple
from brailleTables import listTables
from logHandler import log
@@ -44,7 +45,7 @@ def fileName2displayName(l):
o = []
for e in l:
if e in allTablesFileName: o.append(allTablesFileName.index(e))
- return ', '.join([listTables()[e].displayName for e in o])
+ return [listTables()[e].displayName for e in o]
def listTablesIndexes(l, tables):
if not tables: tables = listTables()
@@ -176,11 +177,10 @@ def tablesToGroups(tables, usableIn):
groups = []
for table in tables:
groups.append(GroupTables(
- fileName2displayName([table]),
+ ", ".join(fileName2displayName([table])),
[table],
usableIn
))
- fileName2displayName
return groups
_groups = None
@@ -341,7 +341,7 @@ def onSetEntries(self, evt=None):
for group in self.tmpGroups:
self.groupsList.Append((
group.name,
- fileName2displayName(group.members),
+ ", ".join(fileName2displayName(group.members)),
translateUsableIn(group.usableIn)
))
@@ -351,7 +351,7 @@ def onAddClick(self, event):
entry = entryDialog.groupEntry
self.tmpGroups.append(entry)
self.groupsList.Append(
- (entry.name, fileName2displayName(entry.members), translateUsableIn(entry.usableIn))
+ (entry.name, ", ".join(fileName2displayName(entry.members)), translateUsableIn(entry.usableIn))
)
index = self.groupsList.GetFirstSelected()
while index >= 0:
@@ -370,12 +370,18 @@ def onEditClick(self, event):
entryDialog = GroupEntryDlg(self)
entryDialog.name.SetValue(self.tmpGroups[editIndex].name)
entryDialog.members.CheckedItems = listTablesIndexes(self.tmpGroups[editIndex].members, listUncontractedInputTables)
+ entryDialog.refreshOrders()
+ selectedItem = 0
+ try:
+ selectedItem = list(entryDialog.orderPermutations.keys()).index(tuple(listTablesIndexes(self.tmpGroups[editIndex].members, listUncontractedTables())))
+ entryDialog.order.SetSelection(selectedItem)
+ except ValueError: pass
entryDialog.usableIn.CheckedItems = translateUsableInIndexes(self.tmpGroups[editIndex].usableIn)
if entryDialog.ShowModal() == wx.ID_OK:
entry = entryDialog.groupEntry
self.tmpGroups[editIndex] = entry
self.groupsList.SetItem(editIndex, 0, entry.name)
- self.groupsList.SetItem(editIndex, 1, fileName2displayName(entry.members))
+ self.groupsList.SetItem(editIndex, 1, ", ".join(fileName2displayName(entry.members)))
self.groupsList.SetItem(editIndex, 2, translateUsableIn(entry.usableIn))
self.groupsList.SetFocus()
entryDialog.Destroy()
@@ -408,6 +414,8 @@ def onOk(self, evt):
class GroupEntryDlg(wx.Dialog):
+ orderPermutations = {}
+
def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
super().__init__(parent, title=title)
mainSizer = wx.BoxSizer(wx.VERTICAL)
@@ -416,7 +424,10 @@ def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
label = _(f"Group members")
self.members = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=listTablesDisplayName(listUncontractedTables()))
self.members.SetSelection(0)
+ self.members.Bind(wx.EVT_CHECKLISTBOX, lambda s: self.refreshOrders())
label = _("Usable in")
+ self.order = sHelper.addLabeledControl(_("Order of the tables"), wx.Choice, choices=[])
+ self.refreshOrders()
choices = [_("input"), _("output")]
self.usableIn = sHelper.addLabeledControl(label, gui.nvdaControls.CustomCheckListBox, choices=choices)
self.usableIn.SetSelection(0)
@@ -427,10 +438,16 @@ def __init__(self, parent=None, title=_("Edit Dictionary Entry")):
self.Bind(wx.EVT_BUTTON, self.onOk, id=wx.ID_OK)
self.name.SetFocus()
+ def refreshOrders(self, evt=None):
+ tables = listUncontractedTables()
+ self.orderPermutations = {e: fileName2displayName(getTablesFilenameByID(e, tables)) for e in permutations(self.members.CheckedItems) if e}
+ self.order.SetItems([", ".join(e) for e in self.orderPermutations.values()])
+ self.order.SetSelection(0)
+
def onOk(self, evt):
name = self.name.Value
- members = getTablesFilenameByID(
- self.members.CheckedItems, listUncontractedTables())
+ if not self.orderPermutations: return
+ members = getTablesFilenameByID(list(self.orderPermutations.keys())[self.order.GetSelection()], listUncontractedTables())
matches = ['i', 'o']
usableIn = ''.join([matches[e] for e in self.usableIn.CheckedItems])
if not name:
From e84e5943af98582ca39aff7f8d4c7631897f9570 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 23 Apr 2020 12:09:52 +0200
Subject: [PATCH 83/87] Fixup: adds louis/tables to resolve tables
---
addon/globalPlugins/brailleExtender/utils.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index b4b58d46..346f5d12 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -180,8 +180,7 @@ def bkToChar(dots, inTable=-1):
if inTable == -1: inTable = config.conf["braille"]["inputTable"]
char = chr(dots | 0x8000)
text = louis.backTranslate(
- [osp.join(r"louis\tables", inTable),
- "braille-patterns.cti"],
+ [osp.join(r"louis\tables", inTable), "braille-patterns.cti"],
char, mode=louis.dotsIO)
chars = text[0]
if len(chars) == 1 and chars.isupper():
@@ -482,11 +481,12 @@ def getCurrentBrailleTables(input_=False, brf=False):
if input_:
mainTable = os.path.join(brailleTables.TABLES_DIR, brailleInput.handler._table.fileName)
group = brailleTablesExt.getGroup(usableIn='i')
- if group: group = group.members
else:
mainTable = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
group = brailleTablesExt.getGroup(usableIn='o')
- if group: group = group.members
+ if group:
+ group = group.members
+ group = [f if '\\' in f else osp.join(r"louis\tables", f) for f in group]
tbl = group or [mainTable]
tables += tbl + [
os.path.join(brailleTables.TABLES_DIR, "braille-patterns.cti")
From ccf57f204a134d6d54d7ef20488462c299fc2adf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 24 Apr 2020 04:17:39 +0200
Subject: [PATCH 84/87] Don't include dictionaries when a group is enabled
(temporary)
---
addon/globalPlugins/brailleExtender/__init__.py | 5 ++---
addon/globalPlugins/brailleExtender/brailleTablesExt.py | 3 +++
addon/globalPlugins/brailleExtender/dictionaries.py | 6 ++++--
addon/globalPlugins/brailleExtender/utils.py | 4 +---
4 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 45d580a4..0fce127b 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -203,7 +203,6 @@ def __init__(self):
self.backup__addTextWithFields = braille.TextInfoRegion._addTextWithFields
self.backup__update = braille.TextInfoRegion.update
self.backup__getTypeformFromFormatField = braille.TextInfoRegion._getTypeformFromFormatField
- self.backup__brailleTableDict = config.conf["braille"]["translationTable"]
braille.TextInfoRegion._addTextWithFields = decorator(braille.TextInfoRegion._addTextWithFields, "addTextWithFields")
braille.TextInfoRegion.update = decorator(braille.TextInfoRegion.update, "update")
braille.TextInfoRegion._getTypeformFromFormatField = decorator(braille.TextInfoRegion._getTypeformFromFormatField, "_getTypeformFromFormatField")
@@ -250,7 +249,6 @@ def event_gainFocus(self, obj, nextHandler):
configBE.curBD = braille.handler.display.name
self.onReload(None, 1)
- if self.backup__brailleTableDict != config.conf["braille"]["translationTable"]: self.reloadBrailleTables()
nextHandler()
return
@@ -307,7 +305,6 @@ def createMenu(self):
self.submenu_item = gui.mainFrame.sysTrayIcon.menu.InsertMenu(2, wx.ID_ANY, "%s (%s)" % (_("&Braille Extender"), addonVersion), self.submenu)
def reloadBrailleTables(self):
- self.backup__brailleTableDict = config.conf["braille"]["translationTable"]
dictionaries.setDictTables()
dictionaries.notifyInvalidTables()
if config.conf["brailleExtender"]["tabSpace"]:
@@ -871,6 +868,7 @@ def script_switchInputBrailleTable(self, gesture):
e=newGroup
)
if not res: raise RuntimeError("error")
+ self.reloadBrailleTables()
utils.refreshBD()
dictionaries.setDictTables()
desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else _("Default"))
@@ -892,6 +890,7 @@ def script_switchOutputBrailleTable(self, gesture):
e=newGroup
)
if not res: raise RuntimeError("error")
+ self.reloadBrailleTables()
utils.refreshBD()
dictionaries.setDictTables()
desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else _("Default"))
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
index 2ee2e0af..54b5154c 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesExt.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -183,6 +183,9 @@ def tablesToGroups(tables, usableIn):
))
return groups
+def groupEnabled():
+ return bool(_groups)
+
_groups = None
_currentGroup = [None, None]
diff --git a/addon/globalPlugins/brailleExtender/dictionaries.py b/addon/globalPlugins/brailleExtender/dictionaries.py
index 6403429d..87a1e30f 100644
--- a/addon/globalPlugins/brailleExtender/dictionaries.py
+++ b/addon/globalPlugins/brailleExtender/dictionaries.py
@@ -18,6 +18,7 @@
from collections import namedtuple
from . import configBE
from .common import *
+from . import brailleTablesExt
from . import huc
from logHandler import log
@@ -64,6 +65,7 @@ def getValidPathsDict():
return [path for path in paths if valid(path)]
def getPathDict(type_):
+ if brailleTablesExt.groupEnabled(): return ''
if type_ == "table": path = os.path.join(configDir, "brailleDicts", config.conf["braille"]["translationTable"])
elif type_ == "tmp": path = os.path.join(configDir, "brailleDicts", "tmp")
else: path = os.path.join(configDir, "brailleDicts", "default")
@@ -294,7 +296,7 @@ def __init__(self, parent=None, title=_("Edit Dictionary Entry"), textPattern=''
if specifyDict:
# Translators: This is a label for an edit field in add dictionary entry dialog.
dictText = _("Dictionary")
- outTable = configBE.tablesTR[configBE.tablesFN.index(config.conf["braille"]["translationTable"])]
+ outTable = brailleTablesExt.fileName2displayName(config.conf["braille"]["translationTable"])
dictChoices = [_("Global"), _("Table")+(" (%s)" % outTable), _("Temporary")]
self.dictRadioBox = sHelper.addItem(wx.RadioBox(self, label=dictText, choices=dictChoices))
self.dictRadioBox.SetSelection(1)
@@ -340,7 +342,7 @@ def __init__(self, parent=None, title=_("Edit Dictionary Entry"), textPattern=''
def onSeeEntriesClick(self, evt):
- outTable = configBE.tablesTR[configBE.tablesFN.index(config.conf["braille"]["translationTable"])]
+ outTable = brailleTablesExt.fileName2displayName(config.conf["braille"]["translationTable"])
label = [_("Global dictionary"), _("Table dictionary")+(" (%s)" % outTable), _("Temporary dictionary")][self.dictRadioBox.GetSelection()]
type_ = self.getType_()
self.Destroy()
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index 346f5d12..a14fad82 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -261,9 +261,7 @@ def getTextInBraille(t=None, table=[]):
if not t: t = getTextSelection()
if not t.strip(): return ''
if not table or "current" in table:
- currentTable = os.path.join(brailleTables.TABLES_DIR, config.conf["braille"]["translationTable"])
- if "current" in table: table[table.index("current")] = currentTable
- else: table.append(currentTable)
+ table = getCurrentBrailleTables()
nt = []
res = ''
t = t.split("\n")
From 98cbce17903326c5833525899e2f40332e44fb14 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Fri, 24 Apr 2020 08:07:20 +0200
Subject: [PATCH 85/87] various fixes and improvements
---
.../globalPlugins/brailleExtender/__init__.py | 20 ++++++---
.../brailleExtender/brailleTablesExt.py | 9 +++-
.../brailleExtender/dictionaries.py | 42 ++++++++++++-------
addon/globalPlugins/brailleExtender/utils.py | 2 +-
4 files changed, 49 insertions(+), 24 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/__init__.py b/addon/globalPlugins/brailleExtender/__init__.py
index 0fce127b..2ad18d39 100644
--- a/addon/globalPlugins/brailleExtender/__init__.py
+++ b/addon/globalPlugins/brailleExtender/__init__.py
@@ -867,11 +867,13 @@ def script_switchInputBrailleTable(self, gesture):
usableIn=usableIn,
e=newGroup
)
+ table = brailleTablesExt.getTable(newGroup.members[0] if newGroup else config.conf["braille"]["inputTable"])
+ if table: brailleInput.handler._table = table
if not res: raise RuntimeError("error")
self.reloadBrailleTables()
utils.refreshBD()
dictionaries.setDictTables()
- desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else _("Default"))
+ desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else _("Default") + " (%s)" % brailleInput.handler.table.displayName)
ui.message(_("Input: %s") % desc)
script_switchInputBrailleTable.__doc__ = _("Switch between your favorite input braille tables including groups")
@@ -893,24 +895,30 @@ def script_switchOutputBrailleTable(self, gesture):
self.reloadBrailleTables()
utils.refreshBD()
dictionaries.setDictTables()
- desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else _("Default"))
+ desc = (newGroup.name + (" (%s)" % _("group") if len(newGroup.members) > 1 else '') if newGroup else (_("Default") + " (%s)" % brailleTablesExt.fileName2displayName([config.conf["braille"]["translationTable"]])[0]))
ui.message(_("Output: %s") % desc)
script_switchOutputBrailleTable.__doc__ = _("Switch between your favorite output braille tables including groups")
def script_currentBrailleTable(self, gesture):
- inTable = brailleInput.handler.table.displayName
- ouTable = brailleTablesExt.listTablesDisplayName()[brailleTablesExt.listTablesFileName().index(config.conf["braille"]["translationTable"])]
+ inTable = None
+ ouTable = None
+ if brailleTablesExt.groupEnabled():
+ i = brailleTablesExt.getGroup(brailleTablesExt.USABLE_INPUT)
+ o = brailleTablesExt.getGroup(brailleTablesExt.USABLE_OUTPUT)
+ if i: inTable = i.name
+ if o: ouTable = o.name
+ if not inTable: inTable = brailleInput.handler.table.displayName
+ if not ouTable: ouTable = brailleTablesExt.listTablesDisplayName()[brailleTablesExt.listTablesFileName().index(config.conf["braille"]["translationTable"])]
if ouTable == inTable:
braille.handler.message(_("I⣿O:{I}").format(I=inTable, O=ouTable))
speech.speakMessage(_("Input and output: {I}.").format(I=inTable, O=ouTable))
else:
braille.handler.message(_("I:{I} ⣿ O: {O}").format(I=inTable, O=ouTable))
speech.speakMessage(_("Input: {I}; Output: {O}").format(I=inTable, O=ouTable))
- return
script_currentBrailleTable.__doc__ = _(
- "Announce the current input and output braille tables")
+ "Announce the current input and output braille tables and/or groups")
def script_brlDescChar(self, gesture):
utils.currentCharDesc()
diff --git a/addon/globalPlugins/brailleExtender/brailleTablesExt.py b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
index 54b5154c..83723cf9 100644
--- a/addon/globalPlugins/brailleExtender/brailleTablesExt.py
+++ b/addon/globalPlugins/brailleExtender/brailleTablesExt.py
@@ -26,8 +26,8 @@
POSITION_NEXT = "n"
POSITIONS = [POSITION_CURRENT, POSITION_PREVIOUS, POSITION_NEXT]
-USABLE_INPUT = "i"
-USABLE_OUTPUT = "o"
+USABLE_INPUT = 'i'
+USABLE_OUTPUT = 'o'
USABLE_LIST = [USABLE_INPUT, USABLE_OUTPUT]
GroupTables = namedtuple("GroupTables", ("name", "members", "usableIn"))
@@ -78,6 +78,11 @@ def getCustomBrailleTables():
def isContractedTable(fileName):
return fileName in listTablesFileName(listContractedTables())
+def getTable(fileName, tables=None):
+ if not tables: tables = listTables()
+ for table in tables:
+ if table.fileName == fileName: return table
+ return None
def getTablesFilenameByID(l: List[int], tables=None) -> List[int]:
tablesFileName = [table.fileName for table in (tables or listTables())]
diff --git a/addon/globalPlugins/brailleExtender/dictionaries.py b/addon/globalPlugins/brailleExtender/dictionaries.py
index 87a1e30f..1156b48a 100644
--- a/addon/globalPlugins/brailleExtender/dictionaries.py
+++ b/addon/globalPlugins/brailleExtender/dictionaries.py
@@ -46,29 +46,40 @@
}
DIRECTION_LABELS_ORDERING = (DIRECTION_BOTH, DIRECTION_FORWARD, DIRECTION_BACKWARD)
-dictTables = []
-invalidDictTables = set()
+inputTables = []
+outputTables = []
+invalidTables = set()
def checkTable(path):
- global invalidDictTables
+ global invalidTables
tablesString = b",".join([x.encode("mbcs") if isinstance(x, str) else bytes(x) for x in [path]])
if not louis.liblouis.lou_checkTable(tablesString):
log.error("Can't compile: tables %s" % path)
- invalidDictTables.add(path)
+ invalidTables.add(path)
return False
return True
-def getValidPathsDict():
+def getValidPathsDict(usableIn):
types = ["tmp", "table", "default"]
- paths = [getPathDict(type_) for type_ in types]
+ paths = [getPathDict(type_, usableIn) for type_ in types]
valid = lambda path: os.path.exists(path) and os.path.isfile(path) and checkTable(path)
return [path for path in paths if valid(path)]
-def getPathDict(type_):
- if brailleTablesExt.groupEnabled(): return ''
- if type_ == "table": path = os.path.join(configDir, "brailleDicts", config.conf["braille"]["translationTable"])
+def getPathDict(type_, usableIn):
+ groupEnabled = brailleTablesExt.groupEnabled()
+ g = brailleTablesExt.getGroup(usableIn=usableIn)
+ table = os.path.join(configDir, "brailleDicts", config.conf["braille"]["inputTable"]) if usableIn == brailleTablesExt.USABLE_INPUT else config.conf["braille"]["translationTable"]
+ if type_ == "table":
+ if groupEnabled and g and g.members:
+ if len(g.members) == 1: path = os.path.join(configDir, "brailleDicts", g.members[0])
+ else: path = ''
+ else: path = os.path.join(configDir, "brailleDicts", table)
elif type_ == "tmp": path = os.path.join(configDir, "brailleDicts", "tmp")
- else: path = os.path.join(configDir, "brailleDicts", "default")
+ else:
+ if groupEnabled and g and g.members:
+ if len(g.members) == 1: path = os.path.join(configDir, "brailleDicts", "default")
+ else: path = ''
+ else: path = os.path.join(configDir, "brailleDicts", "default")
return "%s.cti" % path
def getDictionary(type_):
@@ -99,18 +110,19 @@ def saveDict(type_, dict_):
return True
def setDictTables():
- global dictTables
- dictTables = getValidPathsDict()
- invalidDictTables.clear()
+ global inputTables, outTable
+ inputTables = getValidPathsDict(brailleTablesExt.USABLE_INPUT)
+ outputTables = getValidPathsDict(brailleTablesExt.USABLE_OUTPUT)
+ invalidTables.clear()
def notifyInvalidTables():
- if invalidDictTables:
+ if invalidTables:
dicts = {
getPathDict("default"): "default",
getPathDict("table"): "table",
getPathDict("tmp"): "tmp"
}
- msg = _("One or more errors are present in dictionaries tables. Concerned dictionaries: %s. As a result, these dictionaries are not loaded.") % ", ".join([dicts[path] for path in invalidDictTables if path in dicts])
+ msg = _("One or more errors are present in dictionaries tables. Concerned dictionaries: %s. As a result, these dictionaries are not loaded.") % ", ".join([dicts[path] for path in invalidTables if path in dicts])
wx.CallAfter(gui.messageBox, msg, _("Braille Extender"), wx.OK|wx.ICON_ERROR)
def removeTmpDict():
diff --git a/addon/globalPlugins/brailleExtender/utils.py b/addon/globalPlugins/brailleExtender/utils.py
index a14fad82..ef12de7e 100644
--- a/addon/globalPlugins/brailleExtender/utils.py
+++ b/addon/globalPlugins/brailleExtender/utils.py
@@ -475,7 +475,7 @@ def getCurrentBrailleTables(input_=False, brf=False):
else:
tables = []
app = appModuleHandler.getAppModuleForNVDAObject(api.getNavigatorObject())
- if brailleInput.handler._table.fileName == config.conf["braille"]["translationTable"] and app and app.appName != "nvda": tables += dictionaries.dictTables
+ if brailleInput.handler._table.fileName == config.conf["braille"]["translationTable"] and app and app.appName != "nvda": tables += dictionaries.inputTables if input_ else dictionaries.outputTables
if input_:
mainTable = os.path.join(brailleTables.TABLES_DIR, brailleInput.handler._table.fileName)
group = brailleTablesExt.getGroup(usableIn='i')
From 7b5636ec85ae49683ebdd736eebae763b76b8b10 Mon Sep 17 00:00:00 2001
From: Daniel Gartmann
Date: Sun, 3 May 2020 16:12:26 +0200
Subject: [PATCH 86/87] l10n updates for: da
---
addon/locale/da/LC_MESSAGES/nvda.po | 1362 +++++++++++++++------------
1 file changed, 747 insertions(+), 615 deletions(-)
diff --git a/addon/locale/da/LC_MESSAGES/nvda.po b/addon/locale/da/LC_MESSAGES/nvda.po
index 6b2de2de..6e759295 100644
--- a/addon/locale/da/LC_MESSAGES/nvda.po
+++ b/addon/locale/da/LC_MESSAGES/nvda.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: BrailleExtender 20.02.27:19953a8\n"
"Report-Msgid-Bugs-To: nvda-translations@groups.io\n"
-"POT-Creation-Date: 2020-04-02 01:47+0200\n"
-"PO-Revision-Date: 2020-04-09 17:05+0200\n"
+"POT-Creation-Date: 2020-04-09 21:04+0200\n"
+"PO-Revision-Date: 2020-05-03 13:24+0200\n"
"Last-Translator: Daniel Gartmann \n"
"Language-Team: \n"
"Language: da\n"
@@ -19,175 +19,177 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Bookmarks: -1,-1,-1,-1,398,-1,-1,-1,-1,-1\n"
-#: addon\globalPlugins\brailleExtender\__init__.py:63
+#: addon/globalPlugins/brailleExtender/__init__.py:64
msgid "Default"
msgstr "Standard"
-#: addon\globalPlugins\brailleExtender\__init__.py:64
+#: addon/globalPlugins/brailleExtender/__init__.py:65
msgid "Moving in the text"
msgstr "Flytter i teksten"
-#: addon\globalPlugins\brailleExtender\__init__.py:65
+#: addon/globalPlugins/brailleExtender/__init__.py:66
msgid "Text selection"
msgstr "Tekstvalg"
-#: addon\globalPlugins\brailleExtender\__init__.py:66
+#: addon/globalPlugins/brailleExtender/__init__.py:67
msgid "Objects"
msgstr "Objekter"
-#: addon\globalPlugins\brailleExtender\__init__.py:67
+#: addon/globalPlugins/brailleExtender/__init__.py:68
msgid "Review"
msgstr "Gennemsyn"
-#: addon\globalPlugins\brailleExtender\__init__.py:68
+#: addon/globalPlugins/brailleExtender/__init__.py:69
msgid "Links"
msgstr "Links"
-#: addon\globalPlugins\brailleExtender\__init__.py:69
+#: addon/globalPlugins/brailleExtender/__init__.py:70
msgid "Unvisited links"
msgstr "Ikke-besøgte links"
-#: addon\globalPlugins\brailleExtender\__init__.py:70
+#: addon/globalPlugins/brailleExtender/__init__.py:71
msgid "Visited links"
msgstr "Besøgte links"
-#: addon\globalPlugins\brailleExtender\__init__.py:71
+#: addon/globalPlugins/brailleExtender/__init__.py:72
msgid "Landmarks"
msgstr "Landmærker"
-#: addon\globalPlugins\brailleExtender\__init__.py:72
+#: addon/globalPlugins/brailleExtender/__init__.py:73
msgid "Headings"
msgstr "Overskrifter"
-#: addon\globalPlugins\brailleExtender\__init__.py:73
+#: addon/globalPlugins/brailleExtender/__init__.py:74
msgid "Headings at level 1"
msgstr "Overskrifter på niveau 1"
-#: addon\globalPlugins\brailleExtender\__init__.py:74
+#: addon/globalPlugins/brailleExtender/__init__.py:75
msgid "Headings at level 2"
msgstr "Overskrifter på niveau 2"
-#: addon\globalPlugins\brailleExtender\__init__.py:75
+#: addon/globalPlugins/brailleExtender/__init__.py:76
msgid "Headings at level 3"
msgstr "Overskrifter på niveau 3"
-#: addon\globalPlugins\brailleExtender\__init__.py:76
+#: addon/globalPlugins/brailleExtender/__init__.py:77
msgid "Headings at level 4"
msgstr "Overskrifter på niveau 4"
-#: addon\globalPlugins\brailleExtender\__init__.py:77
+#: addon/globalPlugins/brailleExtender/__init__.py:78
msgid "Headings at level 5"
msgstr "Overskrifter på niveau 5"
-#: addon\globalPlugins\brailleExtender\__init__.py:78
+#: addon/globalPlugins/brailleExtender/__init__.py:79
msgid "Headings at level 6"
msgstr "Overskrifter på niveau 6"
-#: addon\globalPlugins\brailleExtender\__init__.py:79
+#: addon/globalPlugins/brailleExtender/__init__.py:80
msgid "Lists"
msgstr "Lister"
-#: addon\globalPlugins\brailleExtender\__init__.py:80
+#: addon/globalPlugins/brailleExtender/__init__.py:81
msgid "List items"
msgstr "Listeelementer"
-#: addon\globalPlugins\brailleExtender\__init__.py:81
+#: addon/globalPlugins/brailleExtender/__init__.py:82
msgid "Graphics"
msgstr "Grafik"
-#: addon\globalPlugins\brailleExtender\__init__.py:82
+#: addon/globalPlugins/brailleExtender/__init__.py:83
msgid "Block quotes"
msgstr "Blokcitater"
-#: addon\globalPlugins\brailleExtender\__init__.py:83
+#: addon/globalPlugins/brailleExtender/__init__.py:84
msgid "Buttons"
msgstr "Knapper"
-#: addon\globalPlugins\brailleExtender\__init__.py:84
+#: addon/globalPlugins/brailleExtender/__init__.py:85
msgid "Form fields"
msgstr "Formularfelter"
-#: addon\globalPlugins\brailleExtender\__init__.py:85
+#: addon/globalPlugins/brailleExtender/__init__.py:86
msgid "Edit fields"
msgstr "Editfelter"
-#: addon\globalPlugins\brailleExtender\__init__.py:86
+#: addon/globalPlugins/brailleExtender/__init__.py:87
msgid "Radio buttons"
msgstr "Radioknapper"
-#: addon\globalPlugins\brailleExtender\__init__.py:87
+#: addon/globalPlugins/brailleExtender/__init__.py:88
msgid "Combo boxes"
msgstr "Combo boxe"
-#: addon\globalPlugins\brailleExtender\__init__.py:88
+#: addon/globalPlugins/brailleExtender/__init__.py:89
msgid "Check boxes"
msgstr "Check boxe"
-#: addon\globalPlugins\brailleExtender\__init__.py:89
+#: addon/globalPlugins/brailleExtender/__init__.py:90
msgid "Not link blocks"
msgstr "Blokke uden links"
-#: addon\globalPlugins\brailleExtender\__init__.py:90
+#: addon/globalPlugins/brailleExtender/__init__.py:91
msgid "Frames"
msgstr "Rammer"
-#: addon\globalPlugins\brailleExtender\__init__.py:91
+#: addon/globalPlugins/brailleExtender/__init__.py:92
msgid "Separators"
msgstr "Separatorer"
-#: addon\globalPlugins\brailleExtender\__init__.py:92
+#: addon/globalPlugins/brailleExtender/__init__.py:93
msgid "Embedded objects"
msgstr "Indlejrede objekter"
-#: addon\globalPlugins\brailleExtender\__init__.py:93
+#: addon/globalPlugins/brailleExtender/__init__.py:94
msgid "Annotations"
msgstr "Annotationer"
-#: addon\globalPlugins\brailleExtender\__init__.py:94
+#: addon/globalPlugins/brailleExtender/__init__.py:95
msgid "Spelling errors"
msgstr "Stavefejl"
-#: addon\globalPlugins\brailleExtender\__init__.py:95
+#: addon/globalPlugins/brailleExtender/__init__.py:96
msgid "Tables"
msgstr "Tabeller"
-#: addon\globalPlugins\brailleExtender\__init__.py:96
+#: addon/globalPlugins/brailleExtender/__init__.py:97
msgid "Move in table"
msgstr "Flytte i tabel"
-#: addon\globalPlugins\brailleExtender\__init__.py:102
+#: addon/globalPlugins/brailleExtender/__init__.py:103
msgid "If pressed twice, presents the information in browse mode"
msgstr "Ved to tryk vises informationen i gennemsynstilstand"
-#: addon\globalPlugins\brailleExtender\__init__.py:254
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Docu&mentation"
msgstr "Doku&mentation"
-#: addon\globalPlugins\brailleExtender\__init__.py:254
+#: addon/globalPlugins/brailleExtender/__init__.py:257
msgid "Opens the addon's documentation."
msgstr "Åbner tilfføjelsesprogrammets dokumentation."
-#: addon\globalPlugins\brailleExtender\__init__.py:260
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "&Settings"
msgstr "&Indstillinger"
-#: addon\globalPlugins\brailleExtender\__init__.py:260
+#: addon/globalPlugins/brailleExtender/__init__.py:263
msgid "Opens the addons' settings."
msgstr "Åbner tilføjelsesprogrammets indstillinger"
-#: addon\globalPlugins\brailleExtender\__init__.py:267
-msgid "Braille &dictionaries"
-msgstr "Punktskrift&ordbøger"
+#: addon/globalPlugins/brailleExtender/__init__.py:270
+#, fuzzy
+#| msgid "Table dictionary"
+msgid "Table &dictionaries"
+msgstr "Tabel-specifik ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:267
+#: addon/globalPlugins/brailleExtender/__init__.py:270
msgid "'Braille dictionaries' menu"
msgstr "Menuen 'Punktskriftordbøger'"
-#: addon\globalPlugins\brailleExtender\__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid "&Global dictionary"
msgstr "&Global ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:268
+#: addon/globalPlugins/brailleExtender/__init__.py:271
msgid ""
"A dialog where you can set global dictionary by adding dictionary entries to "
"the list."
@@ -195,11 +197,11 @@ msgstr ""
"En dialog til at lave en global ordbog ved at tilføje ordbogselementer til "
"listen."
-#: addon\globalPlugins\brailleExtender\__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid "&Table dictionary"
msgstr "&Tabel-specifik ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:270
+#: addon/globalPlugins/brailleExtender/__init__.py:273
msgid ""
"A dialog where you can set table-specific dictionary by adding dictionary "
"entries to the list."
@@ -207,11 +209,11 @@ msgstr ""
"En dialog, hvor der kan angives en tabel-specifick ordbog ved at tilføje "
"ordbogsemner til listen."
-#: addon\globalPlugins\brailleExtender\__init__.py:272
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid "Te&mporary dictionary"
msgstr "Mi&dlertidig ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:272
+#: addon/globalPlugins/brailleExtender/__init__.py:275
msgid ""
"A dialog where you can set temporary dictionary by adding dictionary entries "
"to the list."
@@ -219,120 +221,132 @@ msgstr ""
"En dialog, hvor der kan angives en midlertidig ordbog ved at tilføje "
"ordbogsemner til listen."
-#: addon\globalPlugins\brailleExtender\__init__.py:275
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+#, fuzzy
+#| msgid "Advanced braille input mode %s"
+msgid "Advanced &input mode dictionary"
+msgstr "Avanceret indtastningstilstand til punktskrift %s"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:278
+#, fuzzy
+#| msgid "Advanced braille input mode %s"
+msgid "Advanced input mode configuration"
+msgstr "Avanceret indtastningstilstand til punktskrift %s"
+
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "&Quick launches"
msgstr "&Hurtigstartere"
-#: addon\globalPlugins\brailleExtender\__init__.py:275
+#: addon/globalPlugins/brailleExtender/__init__.py:284
msgid "Quick launches configuration"
msgstr "Opsætning af Hurtigstartere"
-#: addon\globalPlugins\brailleExtender\__init__.py:281
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "&Profile editor"
msgstr "&Profileditor"
-#: addon\globalPlugins\brailleExtender\__init__.py:281
+#: addon/globalPlugins/brailleExtender/__init__.py:290
msgid "Profile editor"
msgstr "Profileditor"
-#: addon\globalPlugins\brailleExtender\__init__.py:287
+#: addon/globalPlugins/brailleExtender/__init__.py:296
msgid "Overview of the current input braille table"
msgstr "Oversigt over den aktuelle indtastningstabel"
-#: addon\globalPlugins\brailleExtender\__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload add-on"
msgstr "Genindlæs tilføjelsesprogram"
-#: addon\globalPlugins\brailleExtender\__init__.py:289
+#: addon/globalPlugins/brailleExtender/__init__.py:298
msgid "Reload this add-on."
msgstr "Genindlæs dette tilføjelsesprogram."
-#: addon\globalPlugins\brailleExtender\__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "&Check for update"
msgstr "&Søg efter opdateringer"
-#: addon\globalPlugins\brailleExtender\__init__.py:291
+#: addon/globalPlugins/brailleExtender/__init__.py:300
msgid "Checks if update is available"
msgstr "Undersøger, om der er opdateringer"
-#: addon\globalPlugins\brailleExtender\__init__.py:293
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "&Website"
msgstr "&Website"
-#: addon\globalPlugins\brailleExtender\__init__.py:293
+#: addon/globalPlugins/brailleExtender/__init__.py:302
msgid "Open addon's website."
msgstr "Åbn tilføjelsesprogrammets website."
-#: addon\globalPlugins\brailleExtender\__init__.py:295
+#: addon/globalPlugins/brailleExtender/__init__.py:304
msgid "&Braille Extender"
msgstr "&Udvidelse til Punktskrift"
-#: addon\globalPlugins\brailleExtender\__init__.py:310
-#: addon\globalPlugins\brailleExtender\dictionaries.py:343
+#: addon/globalPlugins/brailleExtender/__init__.py:319
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Global dictionary"
msgstr "Global ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:315
-#: addon\globalPlugins\brailleExtender\dictionaries.py:343
+#: addon/globalPlugins/brailleExtender/__init__.py:324
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Table dictionary"
msgstr "Tabel-specifik ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:319
-#: addon\globalPlugins\brailleExtender\dictionaries.py:343
+#: addon/globalPlugins/brailleExtender/__init__.py:328
+#: addon/globalPlugins/brailleExtender/dictionaries.py:344
msgid "Temporary dictionary"
msgstr "Midlertidig ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:429
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/__init__.py:438
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
msgid "Character"
msgstr "Tegn"
-#: addon\globalPlugins\brailleExtender\__init__.py:430
+#: addon/globalPlugins/brailleExtender/__init__.py:439
msgid "Word"
msgstr "Ord"
-#: addon\globalPlugins\brailleExtender\__init__.py:431
+#: addon/globalPlugins/brailleExtender/__init__.py:440
msgid "Line"
msgstr "Linje"
-#: addon\globalPlugins\brailleExtender\__init__.py:432
+#: addon/globalPlugins/brailleExtender/__init__.py:441
msgid "Paragraph"
msgstr "Afsnit"
-#: addon\globalPlugins\brailleExtender\__init__.py:433
+#: addon/globalPlugins/brailleExtender/__init__.py:442
msgid "Page"
msgstr "Side"
-#: addon\globalPlugins\brailleExtender\__init__.py:434
+#: addon/globalPlugins/brailleExtender/__init__.py:443
msgid "Document"
msgstr "Dokument"
-#: addon\globalPlugins\brailleExtender\__init__.py:470
+#: addon/globalPlugins/brailleExtender/__init__.py:479
msgid "Not available here"
msgstr "Ikke tilgængelig her"
-#: addon\globalPlugins\brailleExtender\__init__.py:488
-#: addon\globalPlugins\brailleExtender\__init__.py:510
+#: addon/globalPlugins/brailleExtender/__init__.py:497
+#: addon/globalPlugins/brailleExtender/__init__.py:519
msgid "Not supported here or browse mode not enabled"
msgstr "Understøttes ikke her eller gennemsynstilstand ikke slået til"
-#: addon\globalPlugins\brailleExtender\__init__.py:490
+#: addon/globalPlugins/brailleExtender/__init__.py:499
msgid "Select previous rotor setting"
msgstr "Vælg forrige rotorindstilling"
-#: addon\globalPlugins\brailleExtender\__init__.py:491
+#: addon/globalPlugins/brailleExtender/__init__.py:500
msgid "Select next rotor setting"
msgstr "Vælg næste rotorindstilling"
-#: addon\globalPlugins\brailleExtender\__init__.py:539
+#: addon/globalPlugins/brailleExtender/__init__.py:548
msgid "Move to previous item depending rotor setting"
msgstr "Flytter til forrige element afhængig af rotor-indstilling"
-#: addon\globalPlugins\brailleExtender\__init__.py:540
+#: addon/globalPlugins/brailleExtender/__init__.py:549
msgid "Move to next item depending rotor setting"
msgstr "Flytter til næste element afhængig af rotor-indstilling"
-#: addon\globalPlugins\brailleExtender\__init__.py:548
+#: addon/globalPlugins/brailleExtender/__init__.py:557
msgid ""
"Varies depending on rotor setting. Eg: in object mode, it's similar to NVDA"
"+enter"
@@ -340,115 +354,113 @@ msgstr ""
"Varierer alt efter rotor-indstilling. Fx: I objekt-tilstand svarer det til "
"NVDA+enter"
-#: addon\globalPlugins\brailleExtender\__init__.py:551
+#: addon/globalPlugins/brailleExtender/__init__.py:560
msgid "Move to previous item using rotor setting"
msgstr "Flytter til forrige element alt efter rotor-indstilling"
-#: addon\globalPlugins\brailleExtender\__init__.py:552
+#: addon/globalPlugins/brailleExtender/__init__.py:561
msgid "Move to next item using rotor setting"
msgstr "Flytter til næste element alt efter rotor-indstilling"
-#: addon\globalPlugins\brailleExtender\__init__.py:556
+#: addon/globalPlugins/brailleExtender/__init__.py:565
#, python-format
msgid "Braille keyboard %s"
msgstr "Punktskrifttastatur %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:556
-#: addon\globalPlugins\brailleExtender\__init__.py:579
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "locked"
msgstr "låst"
-#: addon\globalPlugins\brailleExtender\__init__.py:556
-#: addon\globalPlugins\brailleExtender\__init__.py:579
+#: addon/globalPlugins/brailleExtender/__init__.py:565
+#: addon/globalPlugins/brailleExtender/__init__.py:588
msgid "unlocked"
msgstr "låst op"
-#: addon\globalPlugins\brailleExtender\__init__.py:557
+#: addon/globalPlugins/brailleExtender/__init__.py:566
msgid "Lock/unlock braille keyboard"
msgstr "Lås/lås op for punktskrifttastatur"
-#: addon\globalPlugins\brailleExtender\__init__.py:561
-#: addon\globalPlugins\brailleExtender\__init__.py:567
-#: addon\globalPlugins\brailleExtender\__init__.py:574
-#: addon\globalPlugins\brailleExtender\__init__.py:585
-#: addon\globalPlugins\brailleExtender\__init__.py:653
-#: addon\globalPlugins\brailleExtender\__init__.py:659
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
msgid "enabled"
msgstr "slået til"
-#: addon\globalPlugins\brailleExtender\__init__.py:561
-#: addon\globalPlugins\brailleExtender\__init__.py:567
-#: addon\globalPlugins\brailleExtender\__init__.py:574
-#: addon\globalPlugins\brailleExtender\__init__.py:585
-#: addon\globalPlugins\brailleExtender\__init__.py:653
-#: addon\globalPlugins\brailleExtender\__init__.py:659
+#: addon/globalPlugins/brailleExtender/__init__.py:570
+#: addon/globalPlugins/brailleExtender/__init__.py:576
+#: addon/globalPlugins/brailleExtender/__init__.py:583
+#: addon/globalPlugins/brailleExtender/__init__.py:594
+#: addon/globalPlugins/brailleExtender/__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:668
msgid "disabled"
msgstr "slået fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:562
+#: addon/globalPlugins/brailleExtender/__init__.py:571
#, python-format
msgid "One hand mode %s"
msgstr "Enhåndstilstand %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:563
-#, fuzzy
-#| msgid "Enable/disable BRF mode"
+#: addon/globalPlugins/brailleExtender/__init__.py:572
msgid "Enable/disable one hand mode feature"
-msgstr "Slå BRF-tilstand til/fra"
+msgstr "Slå Enhåndstilstand til/fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:567
+#: addon/globalPlugins/brailleExtender/__init__.py:576
#, python-format
msgid "Dots 7 and 8: %s"
-msgstr "Punkterne 7 og 8: %s"
+msgstr "Prikkerne 7 og 8: %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:569
+#: addon/globalPlugins/brailleExtender/__init__.py:578
msgid "Hide/show dots 7 and 8"
-msgstr "Skjul/vis punkt 7 og 8"
+msgstr "Skjul/vis prik 7 og 8"
-#: addon\globalPlugins\brailleExtender\__init__.py:574
+#: addon/globalPlugins/brailleExtender/__init__.py:583
#, python-format
msgid "BRF mode: %s"
msgstr "BRF-tilstand: %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:575
+#: addon/globalPlugins/brailleExtender/__init__.py:584
msgid "Enable/disable BRF mode"
msgstr "Slå BRF-tilstand til/fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:579
+#: addon/globalPlugins/brailleExtender/__init__.py:588
#, python-format
msgid "Modifier keys %s"
msgstr "Modifikationstaster %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:580
+#: addon/globalPlugins/brailleExtender/__init__.py:589
msgid "Lock/unlock modifiers keys"
msgstr "Tryk/slip modifikationstaster"
-#: addon\globalPlugins\brailleExtender\__init__.py:586
+#: addon/globalPlugins/brailleExtender/__init__.py:595
msgid "Enable/disable Attribra"
msgstr "Slå Attribra til/fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:596
+#: addon/globalPlugins/brailleExtender/__init__.py:605
msgid "Quick access to the \"say current line while scrolling in\" option"
msgstr "Hurtig adgang til indstillingen \"sig aktuel linje under rul i\""
-#: addon\globalPlugins\brailleExtender\__init__.py:601
+#: addon/globalPlugins/brailleExtender/__init__.py:610
msgid "Speech on"
msgstr "Tale til"
-#: addon\globalPlugins\brailleExtender\__init__.py:604
+#: addon/globalPlugins/brailleExtender/__init__.py:613
msgid "Speech off"
msgstr "Tale fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:606
+#: addon/globalPlugins/brailleExtender/__init__.py:615
msgid "Toggle speech on or off"
msgstr "Slår tale til eller fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:614
+#: addon/globalPlugins/brailleExtender/__init__.py:623
msgid "No extra info for this element"
msgstr "Ingen yderligere oplysninger om dette emne"
#. Translators: Input help mode message for report extra infos command.
-#: addon\globalPlugins\brailleExtender\__init__.py:618
+#: addon/globalPlugins/brailleExtender/__init__.py:627
msgid ""
"Reports some extra infos for the current element. For example, the URL on a "
"link"
@@ -456,35 +468,35 @@ msgstr ""
"Giver yderligere oplysninger om det aktuelle element. Det kan fx være "
"adressen på et link"
-#: addon\globalPlugins\brailleExtender\__init__.py:623
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid " Input table"
msgstr "Indtastningstabel"
-#: addon\globalPlugins\brailleExtender\__init__.py:623
+#: addon/globalPlugins/brailleExtender/__init__.py:632
msgid "Output table"
msgstr "Visningstabel"
-#: addon\globalPlugins\brailleExtender\__init__.py:625
+#: addon/globalPlugins/brailleExtender/__init__.py:634
#, python-format
msgid "Table overview (%s)"
msgstr "Tabelvisning (%s)"
-#: addon\globalPlugins\brailleExtender\__init__.py:626
+#: addon/globalPlugins/brailleExtender/__init__.py:635
msgid "Display an overview of current input braille table"
msgstr ""
"Viser en oversigt over den aktuelt valgte punktskrifttabel til indtastning"
-#: addon\globalPlugins\brailleExtender\__init__.py:631
-#: addon\globalPlugins\brailleExtender\__init__.py:639
-#: addon\globalPlugins\brailleExtender\__init__.py:646
+#: addon/globalPlugins/brailleExtender/__init__.py:640
+#: addon/globalPlugins/brailleExtender/__init__.py:648
+#: addon/globalPlugins/brailleExtender/__init__.py:655
msgid "No text selection"
msgstr "Ingen tekst valgt"
-#: addon\globalPlugins\brailleExtender\__init__.py:632
+#: addon/globalPlugins/brailleExtender/__init__.py:641
msgid "Unicode Braille conversion"
msgstr "Unicode punktskriftkonvertering"
-#: addon\globalPlugins\brailleExtender\__init__.py:633
+#: addon/globalPlugins/brailleExtender/__init__.py:642
msgid ""
"Convert the text selection in unicode braille and display it in a browseable "
"message"
@@ -492,11 +504,11 @@ msgstr ""
"Konvertér den valgte tekst til unicode punktskrift og vis teksten i en "
"navigérbar meddelelse"
-#: addon\globalPlugins\brailleExtender\__init__.py:640
+#: addon/globalPlugins/brailleExtender/__init__.py:649
msgid "Braille Unicode to cell descriptions"
msgstr "Punktskrift Unicode til beskrivelser af punktcelle"
-#: addon\globalPlugins\brailleExtender\__init__.py:641
+#: addon/globalPlugins/brailleExtender/__init__.py:650
msgid ""
"Convert text selection in braille cell descriptions and display it in a "
"browseable message"
@@ -504,11 +516,11 @@ msgstr ""
"Konvertér valgte tekst til beskrivelse af punktceller og viser den i en "
"navigérbar meddelelse"
-#: addon\globalPlugins\brailleExtender\__init__.py:648
+#: addon/globalPlugins/brailleExtender/__init__.py:657
msgid "Cell descriptions to braille Unicode"
msgstr "Beskrivelse af punktceller til punktskrift Unicode"
-#: addon\globalPlugins\brailleExtender\__init__.py:649
+#: addon/globalPlugins/brailleExtender/__init__.py:658
msgid ""
"Braille cell description to Unicode Braille. E.g.: in a edit field type "
"'125-24-0-1-123-123'. Then select this text and execute this command"
@@ -516,101 +528,99 @@ msgstr ""
"Beskrivelse af punktcelle til Unicode punktskrift. I et editfelt kan du fx "
"skrive '125-24-0-1-123-123'. Vælg derefter teksten og udfør denne kommando"
-#: addon\globalPlugins\brailleExtender\__init__.py:654
+#: addon/globalPlugins/brailleExtender/__init__.py:663
#, python-format
msgid "Advanced braille input mode %s"
msgstr "Avanceret indtastningstilstand til punktskrift %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:655
-#, fuzzy
-#| msgid "Enable/disable BRF mode"
+#: addon/globalPlugins/brailleExtender/__init__.py:664
msgid "Enable/disable the advanced input mode"
-msgstr "Slå BRF-tilstand til/fra"
+msgstr "Slå avanceret indtastningstilstand til/fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:660
+#: addon/globalPlugins/brailleExtender/__init__.py:669
#, python-format
msgid "Description of undefined characters %s"
msgstr "Beskrivelse af ikke-defineredd tegn %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:662
+#: addon/globalPlugins/brailleExtender/__init__.py:671
msgid "Enable/disable description of undefined characters"
msgstr "Slå beskrivelse af ikke-definerede tegn til og fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:666
+#: addon/globalPlugins/brailleExtender/__init__.py:675
msgid "Get the cursor position of text"
msgstr "Oplys markørens placering i teksten"
-#: addon\globalPlugins\brailleExtender\__init__.py:692
+#: addon/globalPlugins/brailleExtender/__init__.py:701
msgid "Hour and date with autorefresh"
msgstr "Tid og dato med automatisk opdatering"
-#: addon\globalPlugins\brailleExtender\__init__.py:705
+#: addon/globalPlugins/brailleExtender/__init__.py:714
msgid "Autoscroll stopped"
msgstr "Autorul stoppet"
-#: addon\globalPlugins\brailleExtender\__init__.py:712
+#: addon/globalPlugins/brailleExtender/__init__.py:721
msgid "Unable to start autoscroll. More info in NVDA log"
msgstr "Autorul kunne ikke starte. Yderligere oplysninger i NVDA loggen"
-#: addon\globalPlugins\brailleExtender\__init__.py:717
+#: addon/globalPlugins/brailleExtender/__init__.py:726
msgid "Enable/disable autoscroll"
msgstr "Slå autorul til/fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:732
+#: addon/globalPlugins/brailleExtender/__init__.py:741
msgid "Increase the master volume"
msgstr "Skru op for systemlydstyrke"
-#: addon\globalPlugins\brailleExtender\__init__.py:749
+#: addon/globalPlugins/brailleExtender/__init__.py:758
msgid "Decrease the master volume"
msgstr "Skru ned for systemlydstyrke"
-#: addon\globalPlugins\brailleExtender\__init__.py:755
+#: addon/globalPlugins/brailleExtender/__init__.py:764
msgid "Muted sound"
msgstr "Lyd slået fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:757
+#: addon/globalPlugins/brailleExtender/__init__.py:766
#, python-format
msgid "Unmuted sound (%3d%%)"
msgstr "Lyd slået til (%3d%%)"
-#: addon\globalPlugins\brailleExtender\__init__.py:763
+#: addon/globalPlugins/brailleExtender/__init__.py:772
msgid "Mute or unmute sound"
msgstr "Slå lyd til eller fra"
-#: addon\globalPlugins\brailleExtender\__init__.py:768
+#: addon/globalPlugins/brailleExtender/__init__.py:777
#, python-format
msgid "Show the %s documentation"
msgstr "Vis %s dokumentationen"
-#: addon\globalPlugins\brailleExtender\__init__.py:806
+#: addon/globalPlugins/brailleExtender/__init__.py:815
msgid "No such file or directory"
msgstr "Denne fil eller mappe findes ikke"
-#: addon\globalPlugins\brailleExtender\__init__.py:808
+#: addon/globalPlugins/brailleExtender/__init__.py:817
msgid "Opens a custom program/file. Go to settings to define them"
msgstr "Åbner valgfrigt program/fil. Angiv dem i indstillinger"
-#: addon\globalPlugins\brailleExtender\__init__.py:815
+#: addon/globalPlugins/brailleExtender/__init__.py:824
#, python-format
msgid "Check for %s updates, and starts the download if there is one"
msgstr ""
"Søger efter %s opdateringer og påbegynder hentningen, hvis der findes én"
-#: addon\globalPlugins\brailleExtender\__init__.py:845
+#: addon/globalPlugins/brailleExtender/__init__.py:854
msgid "Increase autoscroll delay"
msgstr "Sæt forsinkelse ved autorul op"
-#: addon\globalPlugins\brailleExtender\__init__.py:846
+#: addon/globalPlugins/brailleExtender/__init__.py:855
msgid "Decrease autoscroll delay"
msgstr "Sæt forsinkelse ved autorul ned"
-#: addon\globalPlugins\brailleExtender\__init__.py:850
-#: addon\globalPlugins\brailleExtender\__init__.py:868
+#: addon/globalPlugins/brailleExtender/__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:877
msgid "Please use NVDA 2017.3 minimum for this feature"
msgstr "Brug venligst som minimum NVDA 2017.3 til denne funktion "
-#: addon\globalPlugins\brailleExtender\__init__.py:852
-#: addon\globalPlugins\brailleExtender\__init__.py:870
+#: addon/globalPlugins/brailleExtender/__init__.py:861
+#: addon/globalPlugins/brailleExtender/__init__.py:879
msgid ""
"You must choose at least two tables for this feature. Please fill in the "
"settings"
@@ -618,49 +628,49 @@ msgstr ""
"Du skal vælge mindst to tabeller til denne funktion. Udfyld venligst "
"indstillingerne"
-#: addon\globalPlugins\brailleExtender\__init__.py:859
+#: addon/globalPlugins/brailleExtender/__init__.py:868
#, python-format
msgid "Input: %s"
msgstr "Indtastning: %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:863
+#: addon/globalPlugins/brailleExtender/__init__.py:872
msgid "Switch between his favorite input braille tables"
msgstr "Skift imellem foretrukne indtastningstabeller"
-#: addon\globalPlugins\brailleExtender\__init__.py:879
+#: addon/globalPlugins/brailleExtender/__init__.py:888
#, python-format
msgid "Output: %s"
msgstr "Visning: %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:882
+#: addon/globalPlugins/brailleExtender/__init__.py:891
msgid "Switch between his favorite output braille tables"
msgstr "Skift imellem foretrukne oversættelsestabeller"
-#: addon\globalPlugins\brailleExtender\__init__.py:888
+#: addon/globalPlugins/brailleExtender/__init__.py:897
#, python-brace-format
msgid "I⣿O:{I}"
msgstr "I⣿O:{I}"
-#: addon\globalPlugins\brailleExtender\__init__.py:889
+#: addon/globalPlugins/brailleExtender/__init__.py:898
#, python-brace-format
msgid "Input and output: {I}."
msgstr "Indtastning og oversættelse: {I}."
-#: addon\globalPlugins\brailleExtender\__init__.py:891
+#: addon/globalPlugins/brailleExtender/__init__.py:900
#, python-brace-format
msgid "I:{I} ⣿ O: {O}"
msgstr "I:{I} ⣿ O: {O}"
-#: addon\globalPlugins\brailleExtender\__init__.py:892
+#: addon/globalPlugins/brailleExtender/__init__.py:901
#, python-brace-format
msgid "Input: {I}; Output: {O}"
msgstr "Indtastning: {I}; Oversættelse: {O}"
-#: addon\globalPlugins\brailleExtender\__init__.py:896
+#: addon/globalPlugins/brailleExtender/__init__.py:905
msgid "Announce the current input and output braille tables"
msgstr "Oplyser aktuelt valgte punkttabeller til indskrivning og visning "
-#: addon\globalPlugins\brailleExtender\__init__.py:901
+#: addon/globalPlugins/brailleExtender/__init__.py:910
msgid ""
"Gives the Unicode value of the character where the cursor is located and the "
"decimal, binary and octal equivalent."
@@ -668,7 +678,7 @@ msgstr ""
"Oplyser Unicode-værdien for tegnet hvor cursoren er placeret samt den samme "
"værdi i decimal, binær og oktal."
-#: addon\globalPlugins\brailleExtender\__init__.py:909
+#: addon/globalPlugins/brailleExtender/__init__.py:918
msgid ""
"Show the output speech for selected text in braille. Useful for emojis for "
"example"
@@ -676,110 +686,110 @@ msgstr ""
"Vis taleoutput for den valgte tekst på punkt. Nyttigt for eksempel ved "
"emojier"
-#: addon\globalPlugins\brailleExtender\__init__.py:913
+#: addon/globalPlugins/brailleExtender/__init__.py:922
msgid "No shortcut performed from a braille display"
msgstr "Ingen genvej udført fra punktdisplay"
-#: addon\globalPlugins\brailleExtender\__init__.py:917
+#: addon/globalPlugins/brailleExtender/__init__.py:926
msgid "Repeat the last shortcut performed from a braille display"
msgstr "Udfør seneste genvej fra punktdisplay igen"
-#: addon\globalPlugins\brailleExtender\__init__.py:931
+#: addon/globalPlugins/brailleExtender/__init__.py:940
#, python-format
msgid "%s reloaded"
msgstr "%s genindlæst"
-#: addon\globalPlugins\brailleExtender\__init__.py:943
+#: addon/globalPlugins/brailleExtender/__init__.py:952
#, python-format
msgid "Reload %s"
msgstr "Genindlæs %s"
-#: addon\globalPlugins\brailleExtender\__init__.py:946
+#: addon/globalPlugins/brailleExtender/__init__.py:955
msgid "Reload the first braille display defined in settings"
msgstr "Genindlæs det første punktdisplay angivet i indstillinger"
-#: addon\globalPlugins\brailleExtender\__init__.py:949
+#: addon/globalPlugins/brailleExtender/__init__.py:958
msgid "Reload the second braille display defined in settings"
msgstr "Genindlæs det andet punktdisplay angivet i indstillinger"
-#: addon\globalPlugins\brailleExtender\__init__.py:955
+#: addon/globalPlugins/brailleExtender/__init__.py:964
msgid "No braille display specified. No reload to do"
msgstr "Ingen punktdisplay angivet. Ingen renindlæsning gennemført"
-#: addon\globalPlugins\brailleExtender\__init__.py:992
+#: addon/globalPlugins/brailleExtender/__init__.py:1001
msgid "WIN"
msgstr "WIN"
-#: addon\globalPlugins\brailleExtender\__init__.py:993
+#: addon/globalPlugins/brailleExtender/__init__.py:1002
msgid "CTRL"
msgstr "CTRL"
-#: addon\globalPlugins\brailleExtender\__init__.py:994
+#: addon/globalPlugins/brailleExtender/__init__.py:1003
msgid "SHIFT"
msgstr "SHIFT"
-#: addon\globalPlugins\brailleExtender\__init__.py:995
+#: addon/globalPlugins/brailleExtender/__init__.py:1004
msgid "ALT"
msgstr "ALT"
-#: addon\globalPlugins\brailleExtender\__init__.py:1097
+#: addon/globalPlugins/brailleExtender/__init__.py:1106
msgid "Keyboard shortcut cancelled"
msgstr "Tastaturgenvej annulleret"
#. /* docstrings for modifier keys */
-#: addon\globalPlugins\brailleExtender\__init__.py:1105
+#: addon/globalPlugins/brailleExtender/__init__.py:1114
msgid "Emulate pressing down "
msgstr "Svarer til at trykke "
-#: addon\globalPlugins\brailleExtender\__init__.py:1106
+#: addon/globalPlugins/brailleExtender/__init__.py:1115
msgid " on the system keyboard"
msgstr " på systemets tastatur"
-#: addon\globalPlugins\brailleExtender\__init__.py:1162
+#: addon/globalPlugins/brailleExtender/__init__.py:1171
msgid "Current braille view saved"
msgstr "Det viste på punktdisplayet er blevet gemt"
-#: addon\globalPlugins\brailleExtender\__init__.py:1165
+#: addon/globalPlugins/brailleExtender/__init__.py:1174
msgid "Buffer cleaned"
msgstr "Buffer renset"
-#: addon\globalPlugins\brailleExtender\__init__.py:1166
+#: addon/globalPlugins/brailleExtender/__init__.py:1175
msgid "Save the current braille view. Press twice quickly to clean the buffer"
msgstr ""
"Gem det, der vises på punktdisplayet. Tryk 2 gange hurtigt for at tømme "
"bufferen"
-#: addon\globalPlugins\brailleExtender\__init__.py:1171
+#: addon/globalPlugins/brailleExtender/__init__.py:1180
msgid "View saved"
msgstr "Vis gemte"
-#: addon\globalPlugins\brailleExtender\__init__.py:1172
+#: addon/globalPlugins/brailleExtender/__init__.py:1181
msgid "Buffer empty"
msgstr "Buffer er tom"
-#: addon\globalPlugins\brailleExtender\__init__.py:1173
+#: addon/globalPlugins/brailleExtender/__init__.py:1182
msgid "Show the saved braille view through a flash message"
msgstr "Vis det gemte punktdisplay-billede ved hjælp af en flashmeddelelse"
-#: addon\globalPlugins\brailleExtender\__init__.py:1207
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Pause"
msgstr "Pause"
-#: addon\globalPlugins\brailleExtender\__init__.py:1207
+#: addon/globalPlugins/brailleExtender/__init__.py:1216
msgid "Resume"
msgstr "Genoptag"
-#: addon\globalPlugins\brailleExtender\__init__.py:1249
-#: addon\globalPlugins\brailleExtender\__init__.py:1256
+#: addon/globalPlugins/brailleExtender/__init__.py:1258
+#: addon/globalPlugins/brailleExtender/__init__.py:1265
#, python-format
msgid "Auto test type %d"
msgstr "Autotest type %d"
-#: addon\globalPlugins\brailleExtender\__init__.py:1266
+#: addon/globalPlugins/brailleExtender/__init__.py:1275
msgid "Auto test stopped"
msgstr "Autotest stoppet"
-#: addon\globalPlugins\brailleExtender\__init__.py:1276
+#: addon/globalPlugins/brailleExtender/__init__.py:1285
msgid ""
"Auto test started. Use the up and down arrow keys to change speed. Use the "
"left and right arrow keys to change test type. Use space key to pause or "
@@ -790,138 +800,164 @@ msgstr ""
"Mellemrumstasten til at sætte testen på pause eller genoptage den. Brug "
"Escape til at afbryde"
-#: addon\globalPlugins\brailleExtender\__init__.py:1278
+#: addon/globalPlugins/brailleExtender/__init__.py:1287
msgid "Auto test"
msgstr "Autotest"
-#: addon\globalPlugins\brailleExtender\__init__.py:1283
+#: addon/globalPlugins/brailleExtender/__init__.py:1292
msgid "Add dictionary entry or see a dictionary"
msgstr "Tilføj et ordbogselement eller se en ordbog"
-#: addon\globalPlugins\brailleExtender\__init__.py:1284
+#: addon/globalPlugins/brailleExtender/__init__.py:1293
msgid "Add a entry in braille dictionary"
msgstr "Føj element til punktskriftordbog"
#. Add-on summary, usually the user visible name of the addon.
#. Translators: Summary for this add-on to be shown on installation and add-on information.
-#: addon\globalPlugins\brailleExtender\__init__.py:1334
-#: addon\globalPlugins\brailleExtender\dictionaries.py:112
-#: addon\globalPlugins\brailleExtender\dictionaries.py:368
-#: addon\globalPlugins\brailleExtender\dictionaries.py:375
-#: addon\globalPlugins\brailleExtender\dictionaries.py:379
-#: addon\globalPlugins\brailleExtender\dictionaries.py:383
-#: addon\globalPlugins\brailleExtender\settings.py:33
-#: addon\globalPlugins\brailleExtender\settings.py:411 buildVars.py:24
+#: addon/globalPlugins/brailleExtender/__init__.py:1344
+#: addon/globalPlugins/brailleExtender/dictionaries.py:112
+#: addon/globalPlugins/brailleExtender/dictionaries.py:369
+#: addon/globalPlugins/brailleExtender/dictionaries.py:376
+#: addon/globalPlugins/brailleExtender/dictionaries.py:380
+#: addon/globalPlugins/brailleExtender/dictionaries.py:384
+#: addon/globalPlugins/brailleExtender/settings.py:35
+#: addon/globalPlugins/brailleExtender/settings.py:388 buildVars.py:24
msgid "Braille Extender"
msgstr "Udvidelse til Punktskrift"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
msgid "HUC8"
msgstr "HUC8"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
-#: addon\globalPlugins\brailleExtender\configBE.py:65
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:64
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:258
msgid "Hexadecimal"
msgstr "Hexadecimal"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
-#: addon\globalPlugins\brailleExtender\configBE.py:66
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:65
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:259
msgid "Decimal"
msgstr "Decimal"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
-#: addon\globalPlugins\brailleExtender\configBE.py:67
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:66
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:260
msgid "Octal"
msgstr "Octal"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:35
-#: addon\globalPlugins\brailleExtender\configBE.py:68
-#| msgid "Dictionary"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:35
+#: addon/globalPlugins/brailleExtender/configBE.py:67
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:261
msgid "Binary"
msgstr "Binær"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:46
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/addonDoc.py:46
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:239
msgid "Representation of undefined characters"
msgstr "Repræsentation af ikke-defineredd tegn"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:48
+#: addon/globalPlugins/brailleExtender/addonDoc.py:48
msgid ""
"The extension allows you to customize how an undefined character should be "
"represented within a braille table. To do so, go to the braille table "
"settings. You can choose between the following representations:"
msgstr ""
+"Udvidelsen giver mulighed for at indstille, hvordan et ikke-defineret tegn "
+"skal gengives i en punktskrifttabel. Det gøres ved at åbne indstillingerne "
+"for punkttabel. Der kan vælges imellem følgende gengivelser:"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:52
+#: addon/globalPlugins/brailleExtender/addonDoc.py:52
msgid ""
"You can also combine this option with the “describe the character if "
"possible” setting."
msgstr ""
+"Denne indstilling kan også kombineres med indstillinge “beskriv tegnet hvis "
+"muligt”."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:54
+#: addon/globalPlugins/brailleExtender/addonDoc.py:54
msgid "Notes:"
msgstr "Bemærkninger:"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:56
+#: addon/globalPlugins/brailleExtender/addonDoc.py:56
msgid ""
"To distinguish the undefined set of characters while maximizing space, the "
"best combination is the usage of the HUC8 representation without checking "
"the “describe character if possible” option."
msgstr ""
+"For at adskille de ikke-definerede grupper af tegn og udnytte pladsen, er "
+"den bedste kombination at bruge HUC8-repræsentationen og ikke afkrydse "
+"indstillingen “beskriv tegn hvis muligt ”."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:57
+#: addon/globalPlugins/brailleExtender/addonDoc.py:57
#, python-brace-format
msgid "To learn more about the HUC representation, see {url}"
-msgstr ""
+msgstr "Lær mere om HUC-repræsentationen på {url}"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:58
+#: addon/globalPlugins/brailleExtender/addonDoc.py:58
msgid ""
"Keep in mind that definitions in tables and those in your table dictionaries "
"take precedence over character descriptions, which also take precedence over "
"the chosen representation for undefined characters."
msgstr ""
+"Husk på, at definitioner i tabeller og dem i dine tabelordbøger har forrang "
+"i forhold til tegnbeskrivelser, som selv har forrang i forhold til den "
+"valgte gengivelse af ikke-definerede tegn."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:61
+#: addon/globalPlugins/brailleExtender/addonDoc.py:61
msgid "Getting Current Character Info"
msgstr "Finder info for aktuelle tegn"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:63
+#: addon/globalPlugins/brailleExtender/addonDoc.py:63
msgid ""
"This feature allows you to obtain various information regarding the "
"character under the cursor using the current input braille table, such as:"
msgstr ""
+"Denne funktion gør det muligt at få forskellige oplysninger om tegnet under "
+"markøren ved hjælp af den aktuelt valgte indtastningstabel såsom:"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:65
+#: addon/globalPlugins/brailleExtender/addonDoc.py:65
msgid ""
"the HUC8 and HUC6 representations; the hexadecimal, decimal, octal or binary "
"values; A description of the character if possible; - The Unicode Braille "
"representation and the Braille dot pattern."
msgstr ""
+"Gengivelserne i HUC8 og HUC6; værdierne i hexadecimal, decimal, octal eller "
+"binær; en beskrivelse af tegnet hvis muligt; - Unicode "
+"punktskriftrepræsentationen og punktskriftmønsteret."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:67
+#: addon/globalPlugins/brailleExtender/addonDoc.py:67
msgid ""
"Pressing the defined gesture associated to this function once shows you the "
"information in a flash message and a double-press displays the same "
"information in a virtual NVDA buffer."
msgstr ""
+"Hvis du udfører den indstillede inputbevægelse til denne funktion én gang, "
+"vises informationen i en flash-meddelelse, og udføres inputbevægelsen to "
+"gange, vises de samme informationer i en NVDA buffer."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:69
+#: addon/globalPlugins/brailleExtender/addonDoc.py:69
msgid ""
"On supported displays the defined gesture is ⡉+space. No system gestures are "
"defined by default."
msgstr ""
+"På understøttede displays er den definerede inputbevægelse ⡉+mellemrum. Der "
+"er som standard ikke angivet nogen system-inputbevægelse."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:71
+#: addon/globalPlugins/brailleExtender/addonDoc.py:71
#, python-brace-format
msgid ""
"For example, for the '{chosenChar}' character, we will get the following "
"information:"
-msgstr ""
+msgstr "For tegnet '{chosenChar}' får vi fx følgende oplysninger:"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:74
+#: addon/globalPlugins/brailleExtender/addonDoc.py:74
msgid "Advanced Braille Input"
msgstr "Avanceret indtastning i punktskrift"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:76
+#: addon/globalPlugins/brailleExtender/addonDoc.py:76
msgid ""
"This feature allows you to enter any character from its HUC8 representation "
"or its hexadecimal/decimal/octal/binary value. Moreover, it allows you to "
@@ -931,56 +967,64 @@ msgid ""
"Alternatively, an option allows you to automatically exit this mode after "
"entering a single pattern. "
msgstr ""
+"Denne funktion gør det muligt at indtaste et hvilket som helst tegn ud fra "
+"HUC8-repræsentationen eller via hexadecimal/decimal/octal/binær værdien. Den "
+"giver desuden mulighed for at opbygge egne forkortelser. Gå til den "
+"avancerede indtastningstilstand for at få adgang til denne funktion og "
+"indtast det ønskede mønster. Standard inputbevægelser: NVDA+Windows+i eller ⡊"
+"+mellemrum (på understøttede displays). Brug samme inputbevægelse til at "
+"forlade denne tilstand. Alternativt giver en indstilling mulighed for at "
+"forlade denne tilstand efter indtastning af et enkelt mønster. "
-#: addon\globalPlugins\brailleExtender\addonDoc.py:80
+#: addon/globalPlugins/brailleExtender/addonDoc.py:80
msgid "Specify the basis as follows"
-msgstr ""
+msgstr "Angiv basen som følger"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "⠭ or ⠓"
-msgstr ""
+msgstr "⠭ eller ⠓"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:82
+#: addon/globalPlugins/brailleExtender/addonDoc.py:82
msgid "for a hexadecimal value"
-msgstr ""
+msgstr "for en hexadecimal værdi"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:83
+#: addon/globalPlugins/brailleExtender/addonDoc.py:83
msgid "for a decimal value"
-msgstr ""
+msgstr "for en decimal værdi"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:84
+#: addon/globalPlugins/brailleExtender/addonDoc.py:84
msgid "for an octal value"
-msgstr ""
+msgstr "for en octal værdi"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:87
+#: addon/globalPlugins/brailleExtender/addonDoc.py:87
msgid ""
"Enter the value of the character according to the previously selected basis."
-msgstr ""
+msgstr "Angiv tegnets værdi svarende til den base, der tidligere er valgt."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:88
+#: addon/globalPlugins/brailleExtender/addonDoc.py:88
msgid "Press Space to validate."
-msgstr ""
+msgstr "Tryk Mellemrum for at godkende."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:91
+#: addon/globalPlugins/brailleExtender/addonDoc.py:91
msgid ""
"For abbreviations, you must first add them in the dialog box - Advanced mode "
"dictionaries -. Then, you just have to enter your abbreviation and press "
"space to expand it. For example, you can associate — ⠎⠺ — with — sandwich —."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:93
+#: addon/globalPlugins/brailleExtender/addonDoc.py:93
msgid "Here are some examples of sequences to be entered for given characters:"
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:97
+#: addon/globalPlugins/brailleExtender/addonDoc.py:97
msgid "Note: the HUC6 input is currently not supported."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:100
+#: addon/globalPlugins/brailleExtender/addonDoc.py:100
msgid "One-hand mode"
msgstr "Enhåndstilstand"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:102
+#: addon/globalPlugins/brailleExtender/addonDoc.py:102
msgid ""
"This feature allows you to compose a cell in several steps. This can be "
"activated in the general settings of the extension's preferences or on the "
@@ -988,39 +1032,39 @@ msgid ""
"Three input methods are available."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:103
+#: addon/globalPlugins/brailleExtender/addonDoc.py:103
msgid "Method #1: fill a cell in 2 stages on both sides"
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:105
+#: addon/globalPlugins/brailleExtender/addonDoc.py:105
msgid ""
"With this method, type the left side dots, then the right side dots. If one "
"side is empty, type the dots correspondig to the opposite side twice, or "
"type the dots corresponding to the non-empty side in 2 steps."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:106
-#: addon\globalPlugins\brailleExtender\addonDoc.py:115
+#: addon/globalPlugins/brailleExtender/addonDoc.py:106
+#: addon/globalPlugins/brailleExtender/addonDoc.py:115
msgid "For example:"
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:108
+#: addon/globalPlugins/brailleExtender/addonDoc.py:108
msgid "For ⠛: press dots 1-2 then dots 4-5."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:109
+#: addon/globalPlugins/brailleExtender/addonDoc.py:109
msgid "For ⠃: press dots 1-2 then dots 1-2, or dot 1 then dot 2."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:110
+#: addon/globalPlugins/brailleExtender/addonDoc.py:110
msgid "For ⠘: press 4-5 then 4-5, or dot 4 then dot 5."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:112
+#: addon/globalPlugins/brailleExtender/addonDoc.py:112
msgid "Method #2: fill a cell in two stages on one side (Space = empty side)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:114
+#: addon/globalPlugins/brailleExtender/addonDoc.py:114
msgid ""
"Using this method, you can compose a cell with one hand, regardless of which "
"side of the Braille keyboard you choose. The first step allows you to enter "
@@ -1028,114 +1072,112 @@ msgid ""
"An empty cell will be obtained by pressing the space key twice."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:117
+#: addon/globalPlugins/brailleExtender/addonDoc.py:117
msgid "For ⠛: press dots 1-2 then dots 1-2, or dots 4-5 then dots 4-5."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:118
+#: addon/globalPlugins/brailleExtender/addonDoc.py:118
msgid "For ⠃: press dots 1-2 then space, or 4-5 then space."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:119
+#: addon/globalPlugins/brailleExtender/addonDoc.py:119
msgid "For ⠘: press space then 1-2, or space then dots 4-5."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:121
+#: addon/globalPlugins/brailleExtender/addonDoc.py:121
msgid ""
"Method #3: fill a cell dots by dots (each dot is a toggle, press Space to "
"validate the character)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:126
+#: addon/globalPlugins/brailleExtender/addonDoc.py:126
msgid "Dots 1-2, then dots 4-5, then space."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:127
+#: addon/globalPlugins/brailleExtender/addonDoc.py:127
msgid "Dots 1-2-3, then dot 3 (to correct), then dots 4-5, then space."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:128
+#: addon/globalPlugins/brailleExtender/addonDoc.py:128
msgid "Dot 1, then dots 2-4-5, then space."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:129
+#: addon/globalPlugins/brailleExtender/addonDoc.py:129
msgid "Dots 1-2-4, then dot 5, then space."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:130
+#: addon/globalPlugins/brailleExtender/addonDoc.py:130
msgid "Dot 2, then dot 1, then dot 5, then dot 4, and then space."
msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:131
+#: addon/globalPlugins/brailleExtender/addonDoc.py:131
msgid "Etc."
msgstr "Etc."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:150
-#, fuzzy
-#| msgid "Docu&mentation"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:150
msgid "Documentation"
-msgstr "Doku&mentation"
+msgstr "Dokumentation"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:160
+#: addon/globalPlugins/brailleExtender/addonDoc.py:160
msgid "Driver loaded"
msgstr "Driver indlæst"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:161
+#: addon/globalPlugins/brailleExtender/addonDoc.py:161
msgid "Profile"
msgstr "Profil"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:175
+#: addon/globalPlugins/brailleExtender/addonDoc.py:175
msgid "Simple keys"
msgstr "Enkle taster"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:177
+#: addon/globalPlugins/brailleExtender/addonDoc.py:177
msgid "Usual shortcuts"
msgstr "Almindelige genveje"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:179
+#: addon/globalPlugins/brailleExtender/addonDoc.py:179
msgid "Standard NVDA commands"
msgstr "Standard NVDA-kommandoer"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:182
-#: addon\globalPlugins\brailleExtender\settings.py:828
+#: addon/globalPlugins/brailleExtender/addonDoc.py:182
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Modifier keys"
msgstr "Modifikationstaster"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:185
+#: addon/globalPlugins/brailleExtender/addonDoc.py:185
msgid "Quick navigation keys"
msgstr "Lyntaster til navigering"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:189
+#: addon/globalPlugins/brailleExtender/addonDoc.py:189
msgid "Rotor feature"
msgstr "Rotorfunktion"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:197
+#: addon/globalPlugins/brailleExtender/addonDoc.py:197
msgid "Gadget commands"
msgstr "Værktøjskommandoer"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:210
+#: addon/globalPlugins/brailleExtender/addonDoc.py:210
msgid "Shortcuts defined outside add-on"
msgstr "Genveje defineret uden for tilføjelsesprogrammet"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:238
+#: addon/globalPlugins/brailleExtender/addonDoc.py:238
msgid "Keyboard configurations provided"
msgstr "Tastaturkonfigurationer angivet"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:241
+#: addon/globalPlugins/brailleExtender/addonDoc.py:241
msgid "Keyboard configurations are"
msgstr "Tastaturkonfigurationer er"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:250
+#: addon/globalPlugins/brailleExtender/addonDoc.py:250
msgid "Warning:"
msgstr "Advarsel:"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:252
+#: addon/globalPlugins/brailleExtender/addonDoc.py:252
msgid "BrailleExtender has no gesture map yet for your braille display."
msgstr ""
"Udvidelse til Punktskrift har endnu intet sæt af bevægelser til dit "
"punktdisplay."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:255
+#: addon/globalPlugins/brailleExtender/addonDoc.py:255
msgid ""
"However, you can still assign your own gestures in the \"Input Gestures\" "
"dialog (under Preferences menu)."
@@ -1143,228 +1185,345 @@ msgstr ""
"Du kan imidlertid tildele dine egne bevægelser i dialogen \"Inputbevægelser"
"\" (under menuen Opsætning)."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:259
+#: addon/globalPlugins/brailleExtender/addonDoc.py:259
msgid "Add-on gestures on the system keyboard"
msgstr "Tilføjelsens bevægelser på systemtastaturet"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:282
+#: addon/globalPlugins/brailleExtender/addonDoc.py:282
msgid "Arabic"
msgstr "Arabisk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:283
+#: addon/globalPlugins/brailleExtender/addonDoc.py:283
msgid "Croatian"
msgstr "Kroatisk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:284
+#: addon/globalPlugins/brailleExtender/addonDoc.py:284
msgid "Danish"
msgstr "Dansk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:285
-msgid "French"
-msgstr "Fransk"
+#: addon/globalPlugins/brailleExtender/addonDoc.py:285
+msgid "English and French"
+msgstr ""
-#: addon\globalPlugins\brailleExtender\addonDoc.py:286
+#: addon/globalPlugins/brailleExtender/addonDoc.py:286
msgid "German"
msgstr "Tysk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:287
+#: addon/globalPlugins/brailleExtender/addonDoc.py:287
msgid "Hebrew"
msgstr "Hebraisk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:288
+#: addon/globalPlugins/brailleExtender/addonDoc.py:288
msgid "Persian"
msgstr "Persisk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:289
+#: addon/globalPlugins/brailleExtender/addonDoc.py:289
msgid "Polish"
msgstr "Polsk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:290
+#: addon/globalPlugins/brailleExtender/addonDoc.py:290
msgid "Russian"
msgstr "Russisk"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:293
+#: addon/globalPlugins/brailleExtender/addonDoc.py:293
msgid "Copyrights and acknowledgements"
msgstr "Copyright og anerkendelser"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:299
+#: addon/globalPlugins/brailleExtender/addonDoc.py:299
msgid "and other contributors"
msgstr "og andre bidragydere"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:303
+#: addon/globalPlugins/brailleExtender/addonDoc.py:303
msgid "Translators"
msgstr "Oversættere"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:313
+#: addon/globalPlugins/brailleExtender/addonDoc.py:313
msgid "Code contributions and other"
msgstr "Bidrag til koden og andre"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:315
+#: addon/globalPlugins/brailleExtender/addonDoc.py:315
msgid "Additional third party copyrighted code is included:"
msgstr "Yderliere ophavsretligt beskyttet kode fra tredjeparter er inkluderet:"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:321
+#: addon/globalPlugins/brailleExtender/addonDoc.py:321
msgid "Thanks also to"
msgstr "Også tak til"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:323
+#: addon/globalPlugins/brailleExtender/addonDoc.py:323
msgid "And thank you very much for all your feedback and comments."
msgstr "Og mange tak for alle tilbagemeldinger og kommentarer."
-#: addon\globalPlugins\brailleExtender\addonDoc.py:327
+#: addon/globalPlugins/brailleExtender/addonDoc.py:327
#, python-format
msgid "%s's documentation"
msgstr "%s's dokumentation"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:346
+#: addon/globalPlugins/brailleExtender/addonDoc.py:346
#, python-format
msgid "Emulates pressing %s on the system keyboard"
msgstr "Svarer til at trykke %s på systemets tastatur"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:357
+#: addon/globalPlugins/brailleExtender/addonDoc.py:357
msgid "description currently unavailable for this shortcut"
msgstr "Beskrivelse i øjeblikket ikke tilgængelig for denne genvej"
-#: addon\globalPlugins\brailleExtender\addonDoc.py:377
+#: addon/globalPlugins/brailleExtender/addonDoc.py:377
msgid "caps lock"
msgstr "caps lock"
-#: addon\globalPlugins\brailleExtender\configBE.py:55
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:105
+msgid "all tables"
+msgstr "alle tabeller"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:116
+#, fuzzy
+#| msgid "Advanced braille input mode %s"
+msgid "Advanced input mode dictionary"
+msgstr "Avanceret indtastningstilstand til punktskrift %s"
+
+#. Translators: The label for the combo box of dictionary entries in advanced input mode dictionary dialog.
+#. Translators: The label for the combo box of dictionary entries in table dictionary dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:123
+#: addon/globalPlugins/brailleExtender/dictionaries.py:132
+msgid "Dictionary &entries"
+msgstr "Ordbogs&elementer"
+
+#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:131
+msgid "Abbreviation"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:132
+msgid "Replace by"
+msgstr "Erstat med"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:133
+#, fuzzy
+#| msgid " Input table"
+msgid "Input table"
+msgstr "Indtastningstabel"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to add new entries.
+#. Translators: The label for a button in table dictionaries dialog to add new entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:139
+#: addon/globalPlugins/brailleExtender/dictionaries.py:149
+msgid "&Add"
+msgstr "&Tilføj"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to edit existing entries.
+#. Translators: The label for a button in table dictionaries dialog to edit existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:145
+#: addon/globalPlugins/brailleExtender/dictionaries.py:155
+msgid "&Edit"
+msgstr "&Redigér"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to remove existing entries.
+#. Translators: The label for a button in table dictionaries dialog to remove existing entries.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:151
+#: addon/globalPlugins/brailleExtender/dictionaries.py:161
+msgid "Re&move"
+msgstr "Fj&ern"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:159
+#, fuzzy
+#| msgid "&Open the current dictionary file in an editor"
+msgid "&Open the dictionary file in an editor"
+msgstr "&Åbn aktuelle ordbogsfil i en editor"
+
+#. Translators: The label for a button in advanced input mode dictionariy dialog to reload dictionary.
+#. Translators: The label for a button in table dictionaries dialog to reload dictionary.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:164
+#: addon/globalPlugins/brailleExtender/dictionaries.py:174
+msgid "&Reload the dictionary"
+msgstr "&Genindlæs ordbogen"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:177
+#: addon/globalPlugins/brailleExtender/dictionaries.py:218
+msgid "Add Dictionary Entry"
+msgstr "Tilføj ordbogselement"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:221
+msgid "File doesn't exist yet"
+msgstr ""
+
+#. Translators: This is the label for the edit dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:242
+#: addon/globalPlugins/brailleExtender/dictionaries.py:290
+msgid "Edit Dictionary Entry"
+msgstr "Redigér ordbogselement"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:247
+msgid "&Abreviation"
+msgstr "&Forkortelse"
+
+#. Translators: This is a label for an edit field in add dictionary entry dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:252
+#| msgid "Replace"
+msgid "&Replace by"
+msgstr "&Erstat med"
+
+#. Translators: title of a dialog.
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:276
+#, fuzzy
+#| msgid "Advanced braille input mode %s"
+msgid "Advanced input mode"
+msgstr "Avanceret indtastningstilstand til punktskrift %s"
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:284
+msgid "E&xit the advanced input mode after typing one pattern"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/advancedInputMode.py:291
+msgid "Escape sign for Unicode values"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/configBE.py:54
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:248
#, fuzzy
#| msgid "Custom braille tables"
msgid "Use braille table behavior"
msgstr "Tilpassede punkttabeller"
-#: addon\globalPlugins\brailleExtender\configBE.py:56
+#: addon/globalPlugins/brailleExtender/configBE.py:55
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:249
msgid "Dots 1-8 (⣿)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:57
+#: addon/globalPlugins/brailleExtender/configBE.py:56
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:250
msgid "Dots 1-6 (⠿)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:58
+#: addon/globalPlugins/brailleExtender/configBE.py:57
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:251
msgid "Empty cell (⠀)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:59
+#: addon/globalPlugins/brailleExtender/configBE.py:58
msgid "Other dot pattern (e.g.: 6-123456)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:60
+#: addon/globalPlugins/brailleExtender/configBE.py:59
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:253
msgid "Question mark (depending output table)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:61
+#: addon/globalPlugins/brailleExtender/configBE.py:60
msgid "Other sign/pattern (e.g.: \\, ??)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:62
+#: addon/globalPlugins/brailleExtender/configBE.py:61
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:255
msgid "Hexadecimal, Liblouis style"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:63
+#: addon/globalPlugins/brailleExtender/configBE.py:62
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:256
msgid "Hexadecimal, HUC8"
msgstr "Hexadecimal, HUC8"
-#: addon\globalPlugins\brailleExtender\configBE.py:64
+#: addon/globalPlugins/brailleExtender/configBE.py:63
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:257
msgid "Hexadecimal, HUC6"
msgstr "Hexadecimal, HUC6"
-#: addon\globalPlugins\brailleExtender\configBE.py:71
-#: addon\globalPlugins\brailleExtender\configBE.py:78
-#: addon\globalPlugins\brailleExtender\configBE.py:92
-#: addon\globalPlugins\brailleExtender\settings.py:449
+#: addon/globalPlugins/brailleExtender/configBE.py:70
+#: addon/globalPlugins/brailleExtender/configBE.py:77
+#: addon/globalPlugins/brailleExtender/configBE.py:91
+#: addon/globalPlugins/brailleExtender/settings.py:426
msgid "none"
msgstr "ingen"
-#: addon\globalPlugins\brailleExtender\configBE.py:72
+#: addon/globalPlugins/brailleExtender/configBE.py:71
msgid "braille only"
msgstr "kun punkt"
-#: addon\globalPlugins\brailleExtender\configBE.py:73
+#: addon/globalPlugins/brailleExtender/configBE.py:72
msgid "speech only"
msgstr "kun tale"
-#: addon\globalPlugins\brailleExtender\configBE.py:74
-#: addon\globalPlugins\brailleExtender\configBE.py:95
+#: addon/globalPlugins/brailleExtender/configBE.py:73
+#: addon/globalPlugins/brailleExtender/configBE.py:94
msgid "both"
msgstr "begge"
-#: addon\globalPlugins\brailleExtender\configBE.py:79
+#: addon/globalPlugins/brailleExtender/configBE.py:78
msgid "dots 7 and 8"
-msgstr "Punkterne 7 og 8"
+msgstr "Prikkerne 7 og 8"
-#: addon\globalPlugins\brailleExtender\configBE.py:80
+#: addon/globalPlugins/brailleExtender/configBE.py:79
msgid "dot 7"
-msgstr "punkt 7"
+msgstr "prik 7"
-#: addon\globalPlugins\brailleExtender\configBE.py:81
+#: addon/globalPlugins/brailleExtender/configBE.py:80
msgid "dot 8"
-msgstr "punkt 8"
+msgstr "prik 8"
-#: addon\globalPlugins\brailleExtender\configBE.py:87
+#: addon/globalPlugins/brailleExtender/configBE.py:86
msgid "stable"
msgstr "stabil"
-#: addon\globalPlugins\brailleExtender\configBE.py:88
+#: addon/globalPlugins/brailleExtender/configBE.py:87
msgid "development"
msgstr "udvikling"
-#: addon\globalPlugins\brailleExtender\configBE.py:93
+#: addon/globalPlugins/brailleExtender/configBE.py:92
msgid "focus mode"
msgstr "fokustilstand"
-#: addon\globalPlugins\brailleExtender\configBE.py:94
+#: addon/globalPlugins/brailleExtender/configBE.py:93
msgid "review mode"
msgstr "gennemsynstilstand"
-#: addon\globalPlugins\brailleExtender\configBE.py:103
+#: addon/globalPlugins/brailleExtender/configBE.py:102
msgid "Fill a cell in two stages on both sides"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:104
+#: addon/globalPlugins/brailleExtender/configBE.py:103
msgid "Fill a cell in two stages on one side (space = empty side)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:105
+#: addon/globalPlugins/brailleExtender/configBE.py:104
msgid ""
"Fill a cell dots by dots (each dot is a toggle, press space to validate the "
"character)"
msgstr ""
-#: addon\globalPlugins\brailleExtender\configBE.py:132
+#: addon/globalPlugins/brailleExtender/configBE.py:131
msgid "last known"
msgstr "sidst kendte"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:30
+#: addon/globalPlugins/brailleExtender/dictionaries.py:30
msgid "Sign"
msgstr "Tegn"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:32
+#: addon/globalPlugins/brailleExtender/dictionaries.py:32
msgid "Math"
msgstr "Matematik"
#. Translators: This is a label for an Entry Type radio button in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:34
+#: addon/globalPlugins/brailleExtender/dictionaries.py:34
msgid "Replace"
msgstr "Erstat"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:42
+#: addon/globalPlugins/brailleExtender/dictionaries.py:42
msgid "Both (input and output)"
msgstr "Både (indtastning og visning)"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:43
+#: addon/globalPlugins/brailleExtender/dictionaries.py:43
msgid "Backward (input only)"
msgstr "Bagud (kun indtastning)"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:44
+#: addon/globalPlugins/brailleExtender/dictionaries.py:44
msgid "Forward (output only)"
msgstr "Fremad (kun visning)"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:111
+#: addon/globalPlugins/brailleExtender/dictionaries.py:111
#, python-format
msgid ""
"One or more errors are present in dictionaries tables. Concerned "
@@ -1373,121 +1532,87 @@ msgstr ""
"Der er én eller flere fejl i ordbogstabellerne. Berørte ordbøger: %s. Det "
"betyder, at disse ordbøger ikke blev indlæst."
-#. Translators: The label for the combo box of dictionary entries in speech dictionary dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:132
-msgid "Dictionary &entries"
-msgstr "Ordbogs&elementer"
-
#. Translators: The label for a column in dictionary entries list used to identify comments for the entry.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:135
+#: addon/globalPlugins/brailleExtender/dictionaries.py:135
msgid "Comment"
msgstr "Kommentar"
#. Translators: The label for a column in dictionary entries list used to identify original character.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:137
+#: addon/globalPlugins/brailleExtender/dictionaries.py:137
msgid "Pattern"
msgstr "Mønster"
#. Translators: The label for a column in dictionary entries list and in a list of symbols from symbol pronunciation dialog used to identify replacement for a pattern or a symbol
-#: addon\globalPlugins\brailleExtender\dictionaries.py:139
+#: addon/globalPlugins/brailleExtender/dictionaries.py:139
msgid "Representation"
msgstr "Repræsentation"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon\globalPlugins\brailleExtender\dictionaries.py:141
+#: addon/globalPlugins/brailleExtender/dictionaries.py:141
msgid "Opcode"
msgstr "Opcode"
#. Translators: The label for a column in dictionary entries list used to identify whether the entry is a sign, math, replace
-#: addon\globalPlugins\brailleExtender\dictionaries.py:143
+#: addon/globalPlugins/brailleExtender/dictionaries.py:143
msgid "Direction"
msgstr "Retning"
-#. Translators: The label for a button in speech dictionaries dialog to add new entries.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:149
-msgid "&Add"
-msgstr "&Tilføj"
-
-#. Translators: The label for a button in speech dictionaries dialog to edit existing entries.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:155
-msgid "&Edit"
-msgstr "&Redigér"
-
-#. Translators: The label for a button in speech dictionaries dialog to remove existing entries.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:161
-msgid "Re&move"
-msgstr "Fj&ern"
-
-#. Translators: The label for a button in speech dictionaries dialog to open dictionary file in an editor.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:169
+#. Translators: The label for a button in table dictionaries dialog to open dictionary file in an editor.
+#: addon/globalPlugins/brailleExtender/dictionaries.py:169
msgid "&Open the current dictionary file in an editor"
msgstr "&Åbn aktuelle ordbogsfil i en editor"
-#. Translators: The label for a button in speech dictionaries dialog to reload dictionary.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:174
-msgid "&Reload the dictionary"
-msgstr "&Genindlæs ordbogen"
-
-#: addon\globalPlugins\brailleExtender\dictionaries.py:217
-msgid "Add Dictionary Entry"
-msgstr "Tilføj ordbogselement"
-
-#. Translators: This is the label for the edit dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:289
-msgid "Edit Dictionary Entry"
-msgstr "Redigér ordbogselement"
-
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:295
+#: addon/globalPlugins/brailleExtender/dictionaries.py:296
msgid "Dictionary"
msgstr "Ordbog"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:297
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Global"
msgstr "Global"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:297
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Table"
msgstr "Tabel"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:297
+#: addon/globalPlugins/brailleExtender/dictionaries.py:298
msgid "Temporary"
msgstr "Midlertidig"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:303
+#: addon/globalPlugins/brailleExtender/dictionaries.py:304
msgid "See &entries"
msgstr "Se &elementer"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:308
+#: addon/globalPlugins/brailleExtender/dictionaries.py:309
msgid "&Text pattern/sign"
msgstr "&Tekstmønster/tegn"
#. Translators: This is a label for an edit field in add dictionary entry dialog and in punctuation/symbol pronunciation dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:313
+#: addon/globalPlugins/brailleExtender/dictionaries.py:314
msgid "&Braille representation"
msgstr "&Punktskriftrepræsentation"
#. Translators: This is a label for an edit field in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:317
+#: addon/globalPlugins/brailleExtender/dictionaries.py:318
msgid "&Comment"
msgstr "&Kommentar"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:321
+#: addon/globalPlugins/brailleExtender/dictionaries.py:322
msgid "&Opcode"
msgstr "&Opcode"
#. Translators: This is a label for a set of radio buttons in add dictionary entry dialog.
-#: addon\globalPlugins\brailleExtender\dictionaries.py:326
+#: addon/globalPlugins/brailleExtender/dictionaries.py:327
msgid "&Direction"
msgstr "&Retning"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:367
+#: addon/globalPlugins/brailleExtender/dictionaries.py:368
msgid "Text pattern/sign field is empty."
msgstr "Feltet til Tekstmønster/tegn er tomt."
-#: addon\globalPlugins\brailleExtender\dictionaries.py:374
+#: addon/globalPlugins/brailleExtender/dictionaries.py:375
#, python-format
msgid ""
"Invalid value for 'text pattern/sign' field. You must specify a character "
@@ -1496,7 +1621,7 @@ msgstr ""
"Ugyldig værdi i feltet 'tekstmønster/tegn'. Der skal angives et tegn med "
"denne opcode. Fx: %s"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:378
+#: addon/globalPlugins/brailleExtender/dictionaries.py:379
#, python-format
msgid ""
"'Braille representation' field is empty, you must specify something with "
@@ -1505,7 +1630,7 @@ msgstr ""
"Feltet 'Punktskriftrepræsentation' er tomt, angiv venligst noget med denne "
"opcode fx: %s"
-#: addon\globalPlugins\brailleExtender\dictionaries.py:382
+#: addon/globalPlugins/brailleExtender/dictionaries.py:383
#, python-format
msgid ""
"Invalid value for 'braille representation' field. You must enter dot "
@@ -1515,209 +1640,204 @@ msgstr ""
"punktmønstre med denne opcode fx: %s"
#. Translators: Reported when translation didn't succeed due to unsupported input.
-#: addon\globalPlugins\brailleExtender\patchs.py:480
+#: addon/globalPlugins/brailleExtender/patchs.py:376
msgid "Unsupported input"
msgstr ""
-#: addon\globalPlugins\brailleExtender\patchs.py:539
+#: addon/globalPlugins/brailleExtender/patchs.py:435
msgid "Unsupported input method"
msgstr ""
-#: addon\globalPlugins\brailleExtender\settings.py:32
+#: addon/globalPlugins/brailleExtender/settings.py:34
msgid "The feature implementation is in progress. Thanks for your patience."
msgstr "Denne funktion er under udvikling. Tak for tålmodigheden."
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:38
-#: addon\globalPlugins\brailleExtender\settings.py:215
+#: addon/globalPlugins/brailleExtender/settings.py:40
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "General"
msgstr "Generel"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:45
+#: addon/globalPlugins/brailleExtender/settings.py:47
msgid "Check for &updates automatically"
msgstr "Søg automatisk efter &Opdateringer"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:49
+#: addon/globalPlugins/brailleExtender/settings.py:51
msgid "Add-on update channel"
msgstr "Opdateringskanal for tilføjelsesprogram"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:56
+#: addon/globalPlugins/brailleExtender/settings.py:58
msgid "Say current line while scrolling in"
msgstr "Sig aktuel linje under rulning i"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:60
+#: addon/globalPlugins/brailleExtender/settings.py:62
msgid "Speech interrupt when scrolling on same line"
msgstr "Afbryd tale ved rulning på samme linje"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:64
+#: addon/globalPlugins/brailleExtender/settings.py:66
msgid "Speech interrupt for unknown gestures"
msgstr "Afbryd tale ved ukendte bevægelser"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:68
+#: addon/globalPlugins/brailleExtender/settings.py:70
msgid "Announce the character while moving with routing buttons"
msgstr "Oplæs tegnet under flytning med markørsammenføringstaster"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:72
+#: addon/globalPlugins/brailleExtender/settings.py:74
msgid "Use cursor keys to route cursor in review mode"
msgstr "Brug markørtaster til at flytte markøren i gennemsynstilstand"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:76
+#: addon/globalPlugins/brailleExtender/settings.py:78
msgid "Display time and date infinitely"
msgstr "Bliv ved med at vise tid og dato"
-#: addon\globalPlugins\brailleExtender\settings.py:78
+#: addon/globalPlugins/brailleExtender/settings.py:80
msgid "Automatic review mode for apps with terminal"
msgstr "Automatisk gennemsynstilstand for programmer med terminal"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:82
+#: addon/globalPlugins/brailleExtender/settings.py:84
msgid "Feedback for volume change in"
msgstr "Tilbagemelding om ændring i lydstyrke i"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:90
+#: addon/globalPlugins/brailleExtender/settings.py:92
msgid "Feedback for modifier keys in"
msgstr "Tilbagemelding om modifikatortaster i"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:96
+#: addon/globalPlugins/brailleExtender/settings.py:98
msgid "Play beeps for modifier keys"
msgstr "Afspil bip ved modifikatortaster"
-#: addon\globalPlugins\brailleExtender\settings.py:101
+#: addon/globalPlugins/brailleExtender/settings.py:103
msgid "Right margin on cells"
msgstr "Højre margen på celler"
-#: addon\globalPlugins\brailleExtender\settings.py:101
-#: addon\globalPlugins\brailleExtender\settings.py:117
-#: addon\globalPlugins\brailleExtender\settings.py:369
+#: addon/globalPlugins/brailleExtender/settings.py:103
+#: addon/globalPlugins/brailleExtender/settings.py:115
+#: addon/globalPlugins/brailleExtender/settings.py:366
msgid "for the currrent braille display"
msgstr "for det aktuelle punktdisplay"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:105
+#: addon/globalPlugins/brailleExtender/settings.py:107
msgid "Braille keyboard configuration"
msgstr "Konfiguration af punkttastatur"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:109
+#: addon/globalPlugins/brailleExtender/settings.py:111
msgid "Reverse forward scroll and back scroll buttons"
msgstr "Vend knapperne til at rulle fremad og bagud"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:113
-msgid "Reading from right to left"
-msgstr ""
-
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:117
+#: addon/globalPlugins/brailleExtender/settings.py:115
msgid "Autoscroll delay (ms)"
msgstr "Autorul forsinkelse (ms)"
-#: addon\globalPlugins\brailleExtender\settings.py:118
+#: addon/globalPlugins/brailleExtender/settings.py:116
msgid "First braille display preferred"
msgstr "Første foretrukne punktdisplay"
-#: addon\globalPlugins\brailleExtender\settings.py:120
+#: addon/globalPlugins/brailleExtender/settings.py:118
msgid "Second braille display preferred"
msgstr "Andet foretrukne punktdisplay"
-#: addon\globalPlugins\brailleExtender\settings.py:122
+#: addon/globalPlugins/brailleExtender/settings.py:120
msgid "One-handed mode"
msgstr "Enhåndstilstand"
-#: addon\globalPlugins\brailleExtender\settings.py:126
+#: addon/globalPlugins/brailleExtender/settings.py:124
msgid "One hand mode method"
msgstr "Metode til enhåndstilstand"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:162
+#: addon/globalPlugins/brailleExtender/settings.py:159
msgid "Text attributes"
msgstr "Tekstattributter"
-#: addon\globalPlugins\brailleExtender\settings.py:166
-#: addon\globalPlugins\brailleExtender\settings.py:213
+#: addon/globalPlugins/brailleExtender/settings.py:163
+#: addon/globalPlugins/brailleExtender/settings.py:210
msgid "Enable this feature"
msgstr "Slå denne funktion til"
-#: addon\globalPlugins\brailleExtender\settings.py:168
+#: addon/globalPlugins/brailleExtender/settings.py:165
msgid "Show spelling errors with"
msgstr "Vis stavefejl med"
-#: addon\globalPlugins\brailleExtender\settings.py:170
+#: addon/globalPlugins/brailleExtender/settings.py:167
msgid "Show bold with"
msgstr "Vis fed med"
-#: addon\globalPlugins\brailleExtender\settings.py:172
+#: addon/globalPlugins/brailleExtender/settings.py:169
msgid "Show italic with"
msgstr "Vis kursiv med"
-#: addon\globalPlugins\brailleExtender\settings.py:174
+#: addon/globalPlugins/brailleExtender/settings.py:171
msgid "Show underline with"
msgstr "Vis understregning med"
-#: addon\globalPlugins\brailleExtender\settings.py:176
+#: addon/globalPlugins/brailleExtender/settings.py:173
msgid "Show strikethrough with"
msgstr "Vis gennemstreget med"
-#: addon\globalPlugins\brailleExtender\settings.py:178
+#: addon/globalPlugins/brailleExtender/settings.py:175
msgid "Show subscript with"
msgstr "Vis sænket skrift med"
-#: addon\globalPlugins\brailleExtender\settings.py:180
+#: addon/globalPlugins/brailleExtender/settings.py:177
msgid "Show superscript with"
msgstr "Vis hævet skrift med"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:206
+#: addon/globalPlugins/brailleExtender/settings.py:203
msgid "Role labels"
msgstr "Rolleetiketter"
-#: addon\globalPlugins\brailleExtender\settings.py:215
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Role category"
msgstr "Rollekategorier"
-#: addon\globalPlugins\brailleExtender\settings.py:215
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Landmark"
msgstr "Landmærke"
-#: addon\globalPlugins\brailleExtender\settings.py:215
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Positive state"
msgstr "Positiv tilstand"
-#: addon\globalPlugins\brailleExtender\settings.py:215
+#: addon/globalPlugins/brailleExtender/settings.py:212
msgid "Negative state"
msgstr "Negativ tilstand"
-#: addon\globalPlugins\brailleExtender\settings.py:219
+#: addon/globalPlugins/brailleExtender/settings.py:216
msgid "Role"
msgstr "Rolle"
-#: addon\globalPlugins\brailleExtender\settings.py:221
+#: addon/globalPlugins/brailleExtender/settings.py:218
msgid "Actual or new label"
msgstr "Aktuel eller ny etiket"
-#: addon\globalPlugins\brailleExtender\settings.py:225
+#: addon/globalPlugins/brailleExtender/settings.py:222
msgid "&Reset this role label"
msgstr "&Gendan denne rolleetiket"
-#: addon\globalPlugins\brailleExtender\settings.py:227
+#: addon/globalPlugins/brailleExtender/settings.py:224
msgid "Reset all role labels"
msgstr "Gendan alle rolleetiketter"
-#: addon\globalPlugins\brailleExtender\settings.py:292
+#: addon/globalPlugins/brailleExtender/settings.py:289
msgid "You have no customized label."
msgstr "Du har ingen tilpassede etiketter."
-#: addon\globalPlugins\brailleExtender\settings.py:295
+#: addon/globalPlugins/brailleExtender/settings.py:292
#, python-format
msgid ""
"Do you want really reset all labels? Currently, you have %d customized "
@@ -1726,106 +1846,92 @@ msgstr ""
"Ønsker du at gendanne alle etiketter? Du har i øjeblikket %d tilpassede "
"etiketter."
-#: addon\globalPlugins\brailleExtender\settings.py:296
-#: addon\globalPlugins\brailleExtender\settings.py:734
+#: addon/globalPlugins/brailleExtender/settings.py:293
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Confirmation"
msgstr "Bekræftelse"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:338
+#: addon/globalPlugins/brailleExtender/settings.py:335
msgid "Braille tables"
msgstr "Punkttabeller"
-#: addon\globalPlugins\brailleExtender\settings.py:343
+#: addon/globalPlugins/brailleExtender/settings.py:340
msgid "Use the current input table"
msgstr "Brug den aktuelle indskrivningstabel"
-#: addon\globalPlugins\brailleExtender\settings.py:352
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "Prefered braille tables"
msgstr "Foretrukne punkttabeller"
-#: addon\globalPlugins\brailleExtender\settings.py:352
+#: addon/globalPlugins/brailleExtender/settings.py:349
msgid "press F1 for help"
msgstr "tryk F1 for hjælp"
-#: addon\globalPlugins\brailleExtender\settings.py:356
+#: addon/globalPlugins/brailleExtender/settings.py:353
msgid "Input braille table for keyboard shortcut keys"
msgstr "Punkttabel for indskrivning til tastaturgenveje"
-#: addon\globalPlugins\brailleExtender\settings.py:358
+#: addon/globalPlugins/brailleExtender/settings.py:355
msgid "None"
msgstr "Ingen"
-#: addon\globalPlugins\brailleExtender\settings.py:361
+#: addon/globalPlugins/brailleExtender/settings.py:358
msgid "Secondary output table to use"
msgstr "Anden tabel til visning"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:365
+#: addon/globalPlugins/brailleExtender/settings.py:362
msgid "Display &tab signs as spaces"
msgstr "Vis &tabulatortegn som mellemrum"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:369
+#: addon/globalPlugins/brailleExtender/settings.py:366
msgid "Number of &space for a tab sign"
msgstr "Antal &mellemrum for et tabulatortegn "
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:371
-msgid "Representation of &undefined characters"
-msgstr ""
-
-#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:377
-msgid "Specify another pattern"
-msgstr ""
-
-#: addon\globalPlugins\brailleExtender\settings.py:379
-msgid "&Description of undefined characters"
-msgstr ""
-
-#: addon\globalPlugins\brailleExtender\settings.py:382
+#: addon/globalPlugins/brailleExtender/settings.py:367
msgid "Alternative and &custom braille tables"
msgstr "Alternative og &tilpassede punkttabeller"
-#: addon\globalPlugins\brailleExtender\settings.py:410
+#: addon/globalPlugins/brailleExtender/settings.py:387
msgid ""
"NVDA must be restarted for some new options to take effect. Do you want "
"restart now?"
msgstr ""
-#: addon\globalPlugins\brailleExtender\settings.py:448
+#: addon/globalPlugins/brailleExtender/settings.py:425
msgid "input and output"
msgstr "indtastning og visning"
-#: addon\globalPlugins\brailleExtender\settings.py:450
+#: addon/globalPlugins/brailleExtender/settings.py:427
msgid "input only"
msgstr "kun indskrivning"
-#: addon\globalPlugins\brailleExtender\settings.py:451
+#: addon/globalPlugins/brailleExtender/settings.py:428
msgid "output only"
msgstr "kun visning"
-#: addon\globalPlugins\brailleExtender\settings.py:491
+#: addon/globalPlugins/brailleExtender/settings.py:459
#, python-format
msgid "Table name: %s"
msgstr "Tabelnavn: %s"
-#: addon\globalPlugins\brailleExtender\settings.py:492
+#: addon/globalPlugins/brailleExtender/settings.py:460
#, python-format
msgid "File name: %s"
msgstr "Filnavn: %s"
-#: addon\globalPlugins\brailleExtender\settings.py:493
+#: addon/globalPlugins/brailleExtender/settings.py:461
#, python-format
msgid "In switches: %s"
msgstr "Ind ændrer: %s"
-#: addon\globalPlugins\brailleExtender\settings.py:494
+#: addon/globalPlugins/brailleExtender/settings.py:462
msgid "About this table"
msgstr "Om denne tabel"
-#: addon\globalPlugins\brailleExtender\settings.py:497
+#: addon/globalPlugins/brailleExtender/settings.py:465
msgid ""
"In this combo box, all tables are present. Press space bar, left or right "
"arrow keys to include (or not) the selected table in switches"
@@ -1833,7 +1939,7 @@ msgstr ""
"I denne combobox findes alle tabeller. Tryk Mellemrum, venstre eller højre "
"piletaster for at inkludere (eller ej) den valgte tabel i kontakter"
-#: addon\globalPlugins\brailleExtender\settings.py:498
+#: addon/globalPlugins/brailleExtender/settings.py:466
msgid ""
"You can also press 'comma' key to get the file name of the selected table "
"and 'semicolon' key to view miscellaneous infos on the selected table"
@@ -1842,156 +1948,125 @@ msgstr ""
"tabel og 'semikolon'-tasten for at se forskellige oplysninger om den valgte "
"tabel"
-#: addon\globalPlugins\brailleExtender\settings.py:499
+#: addon/globalPlugins/brailleExtender/settings.py:467
msgid "Contextual help"
msgstr "Konteksthjælp"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:515
-msgid "Description of undefined characters"
-msgstr ""
-
-#: addon\globalPlugins\brailleExtender\settings.py:519
-msgid "Describe undefined characters if possible"
-msgstr ""
-
-#: addon\globalPlugins\brailleExtender\settings.py:521
-msgid "Start tag"
-msgstr "Start tag"
-
-#: addon\globalPlugins\brailleExtender\settings.py:522
-msgid "End tag"
-msgstr "Afslut tag"
-
-#: addon\globalPlugins\brailleExtender\settings.py:528
-msgid "Language"
-msgstr ""
-
-#: addon\globalPlugins\brailleExtender\settings.py:530
-#, fuzzy
-#| msgid "Use the current input table"
-msgid "Use the current output table"
-msgstr "Brug den aktuelle indskrivningstabel"
-
-#: addon\globalPlugins\brailleExtender\settings.py:535
-msgid "Braille table"
-msgstr "Punkttabel"
-
-#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:555
+#: addon/globalPlugins/brailleExtender/settings.py:483
msgid "Custom braille tables"
msgstr "Tilpassede punkttabeller"
-#: addon\globalPlugins\brailleExtender\settings.py:565
+#: addon/globalPlugins/brailleExtender/settings.py:493
msgid "Use a custom table as input table"
msgstr "Brug en tilpasset tabel som indskrivningstabel"
-#: addon\globalPlugins\brailleExtender\settings.py:566
+#: addon/globalPlugins/brailleExtender/settings.py:494
msgid "Use a custom table as output table"
msgstr "Brug en tilpasset tabel som visningstabel"
-#: addon\globalPlugins\brailleExtender\settings.py:567
+#: addon/globalPlugins/brailleExtender/settings.py:495
msgid "&Add a braille table"
msgstr "&Tilføj en punkttabel"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:591
+#: addon/globalPlugins/brailleExtender/settings.py:519
msgid "Add a braille table"
msgstr "Tilføj en punkttabel"
-#: addon\globalPlugins\brailleExtender\settings.py:597
+#: addon/globalPlugins/brailleExtender/settings.py:525
msgid "Display name"
msgstr "Vist navn"
-#: addon\globalPlugins\brailleExtender\settings.py:598
+#: addon/globalPlugins/brailleExtender/settings.py:526
msgid "Description"
msgstr "Beskrivelse"
-#: addon\globalPlugins\brailleExtender\settings.py:599
+#: addon/globalPlugins/brailleExtender/settings.py:527
msgid "Path"
msgstr "Sti"
-#: addon\globalPlugins\brailleExtender\settings.py:600
-#: addon\globalPlugins\brailleExtender\settings.py:671
+#: addon/globalPlugins/brailleExtender/settings.py:528
+#: addon/globalPlugins/brailleExtender/settings.py:599
msgid "&Browse"
msgstr "&Gennemse"
-#: addon\globalPlugins\brailleExtender\settings.py:603
+#: addon/globalPlugins/brailleExtender/settings.py:531
msgid "Contracted (grade 2) braille table"
msgstr "Forkortet (niveau 2) punkttabel"
#. Translators: label of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:605
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Available for"
msgstr "Tilgængelig for"
-#: addon\globalPlugins\brailleExtender\settings.py:605
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input and output"
msgstr "Indskrivning og visning"
-#: addon\globalPlugins\brailleExtender\settings.py:605
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Input only"
msgstr "Kun indskrivning"
-#: addon\globalPlugins\brailleExtender\settings.py:605
+#: addon/globalPlugins/brailleExtender/settings.py:533
msgid "Output only"
msgstr "Kun visning"
-#: addon\globalPlugins\brailleExtender\settings.py:611
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Choose a table file"
msgstr "Vælg en tabelfil"
-#: addon\globalPlugins\brailleExtender\settings.py:611
+#: addon/globalPlugins/brailleExtender/settings.py:539
msgid "Liblouis table files"
msgstr "Liblouis tabelfiler"
-#: addon\globalPlugins\brailleExtender\settings.py:623
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Please specify a display name."
msgstr "Angiv venligst et vist navn."
-#: addon\globalPlugins\brailleExtender\settings.py:623
+#: addon/globalPlugins/brailleExtender/settings.py:551
msgid "Invalid display name"
msgstr "Ugyldigt vist navn"
-#: addon\globalPlugins\brailleExtender\settings.py:627
+#: addon/globalPlugins/brailleExtender/settings.py:555
#, python-format
msgid "The specified path is not valid (%s)."
msgstr "Den angivne sti er ikke gyldig (%s)."
-#: addon\globalPlugins\brailleExtender\settings.py:627
+#: addon/globalPlugins/brailleExtender/settings.py:555
msgid "Invalid path"
msgstr "Ugyldig sti"
#. Translators: title of a dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:655
+#: addon/globalPlugins/brailleExtender/settings.py:583
msgid "Quick launches"
msgstr "Hurtigstartere"
-#: addon\globalPlugins\brailleExtender\settings.py:666
+#: addon/globalPlugins/brailleExtender/settings.py:594
msgid "&Gestures"
msgstr "&Bevægelser"
-#: addon\globalPlugins\brailleExtender\settings.py:669
+#: addon/globalPlugins/brailleExtender/settings.py:597
msgid "Location (file path, URL or command)"
msgstr "Placering (fil, sti, URL eller kommando)"
-#: addon\globalPlugins\brailleExtender\settings.py:672
+#: addon/globalPlugins/brailleExtender/settings.py:600
msgid "&Remove this gesture"
msgstr "&Fjern denne bevægelse"
-#: addon\globalPlugins\brailleExtender\settings.py:673
+#: addon/globalPlugins/brailleExtender/settings.py:601
msgid "&Add a quick launch"
msgstr "&Tilføj en hurtigstarter"
-#: addon\globalPlugins\brailleExtender\settings.py:702
+#: addon/globalPlugins/brailleExtender/settings.py:630
msgid "Unable to associate this gesture. Please enter another, now"
msgstr "Kan ikke tildele denne bevægelse."
-#: addon\globalPlugins\brailleExtender\settings.py:707
+#: addon/globalPlugins/brailleExtender/settings.py:635
msgid "Out of capture"
msgstr "Uden for optagelse"
-#: addon\globalPlugins\brailleExtender\settings.py:709
+#: addon/globalPlugins/brailleExtender/settings.py:637
#, python-brace-format
msgid ""
"Please enter a gesture from your {NAME_BRAILLE_DISPLAY} braille display. "
@@ -2000,21 +2075,21 @@ msgstr ""
"Angiv venligst en kommando fra dit {NAME_BRAILLE_DISPLAY} punktdisplay. "
"Press space to cancel."
-#: addon\globalPlugins\brailleExtender\settings.py:717
+#: addon/globalPlugins/brailleExtender/settings.py:645
#, python-format
msgid "OK. The gesture captured is %s"
msgstr "OK. Den registrerede bevægelse er %s"
-#: addon\globalPlugins\brailleExtender\settings.py:734
+#: addon/globalPlugins/brailleExtender/settings.py:662
msgid "Are you sure to want to delete this shorcut?"
msgstr "Ønsker du virkelig at slette denne genvej?"
-#: addon\globalPlugins\brailleExtender\settings.py:743
+#: addon/globalPlugins/brailleExtender/settings.py:671
#, python-brace-format
msgid "{BRAILLEGESTURE} removed"
msgstr "{BRAILLEGESTURE} fjernet"
-#: addon\globalPlugins\brailleExtender\settings.py:754
+#: addon/globalPlugins/brailleExtender/settings.py:682
msgid ""
"Please enter the desired gesture for the new quick launch. Press \"space bar"
"\" to cancel"
@@ -2022,120 +2097,171 @@ msgstr ""
"Angiv venligst den ønskede bevægelse til den nye hurtigstarter. Tryk "
"\"Mellemrum\" for at annullere"
-#: addon\globalPlugins\brailleExtender\settings.py:757
+#: addon/globalPlugins/brailleExtender/settings.py:685
msgid "Don't add a quick launch"
msgstr "Tilføj ikke en hurtigstarter"
-#: addon\globalPlugins\brailleExtender\settings.py:783
+#: addon/globalPlugins/brailleExtender/settings.py:711
#, python-brace-format
msgid "Choose a file for {0}"
msgstr "Vælg en fil for {0}"
-#: addon\globalPlugins\brailleExtender\settings.py:796
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Please create or select a quick launch first"
msgstr "Venligst opret eller vælg en hurtigstarter først"
-#: addon\globalPlugins\brailleExtender\settings.py:796
+#: addon/globalPlugins/brailleExtender/settings.py:724
msgid "Error"
msgstr "Fejl"
-#: addon\globalPlugins\brailleExtender\settings.py:800
+#: addon/globalPlugins/brailleExtender/settings.py:728
msgid "Profiles editor"
msgstr "Profileditor"
-#: addon\globalPlugins\brailleExtender\settings.py:811
+#: addon/globalPlugins/brailleExtender/settings.py:739
msgid "You must have a braille display to editing a profile"
msgstr "Der kræves et punktdisplay for at kunne redigere en profil"
-#: addon\globalPlugins\brailleExtender\settings.py:815
+#: addon/globalPlugins/brailleExtender/settings.py:743
msgid ""
"Profiles directory is not present or accessible. Unable to edit profiles"
msgstr ""
"Mappen med profiler findes ikke eller er utilgængelig. Kan ikke redigere "
"profiler"
-#: addon\globalPlugins\brailleExtender\settings.py:821
+#: addon/globalPlugins/brailleExtender/settings.py:749
msgid "Profile to edit"
msgstr "Profil der skal redigeres"
-#: addon\globalPlugins\brailleExtender\settings.py:827
+#: addon/globalPlugins/brailleExtender/settings.py:755
msgid "Gestures category"
msgstr "Kategorien Bevægelser "
-#: addon\globalPlugins\brailleExtender\settings.py:828
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Single keys"
msgstr "Enkelttaster"
-#: addon\globalPlugins\brailleExtender\settings.py:828
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Practical shortcuts"
msgstr "Praktiske genveje"
-#: addon\globalPlugins\brailleExtender\settings.py:828
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "NVDA commands"
msgstr "NVDA-kommandoer"
-#: addon\globalPlugins\brailleExtender\settings.py:828
+#: addon/globalPlugins/brailleExtender/settings.py:756
msgid "Addon features"
msgstr "Tilføjelsesfunktioner"
-#: addon\globalPlugins\brailleExtender\settings.py:832
+#: addon/globalPlugins/brailleExtender/settings.py:760
msgid "Gestures list"
msgstr "Liste med bevægelser"
-#: addon\globalPlugins\brailleExtender\settings.py:841
+#: addon/globalPlugins/brailleExtender/settings.py:769
msgid "Add gesture"
msgstr "Tilføj bevægelse"
-#: addon\globalPlugins\brailleExtender\settings.py:843
+#: addon/globalPlugins/brailleExtender/settings.py:771
msgid "Remove this gesture"
msgstr "Fjern denne bevægelse"
-#: addon\globalPlugins\brailleExtender\settings.py:846
+#: addon/globalPlugins/brailleExtender/settings.py:774
msgid "Assign a braille gesture"
msgstr "Tildel en punktskriftbevægelse"
-#: addon\globalPlugins\brailleExtender\settings.py:853
+#: addon/globalPlugins/brailleExtender/settings.py:781
msgid "Remove this profile"
msgstr "Fjern denne profil"
-#: addon\globalPlugins\brailleExtender\settings.py:856
+#: addon/globalPlugins/brailleExtender/settings.py:784
msgid "Add a profile"
msgstr "Tilføj en profil"
-#: addon\globalPlugins\brailleExtender\settings.py:862
+#: addon/globalPlugins/brailleExtender/settings.py:790
msgid "Name for the new profile"
msgstr "Navn på den nye profil"
-#: addon\globalPlugins\brailleExtender\settings.py:868
+#: addon/globalPlugins/brailleExtender/settings.py:796
msgid "Create"
msgstr "Opret"
-#: addon\globalPlugins\brailleExtender\settings.py:931
+#: addon/globalPlugins/brailleExtender/settings.py:859
msgid "Unable to load this profile. Malformed or inaccessible file"
msgstr ""
"Denne profil kan ikke indlæses. Filen har enten den forkerte form eller er "
"utilgængelig"
-#: addon\globalPlugins\brailleExtender\settings.py:950
+#: addon/globalPlugins/brailleExtender/settings.py:878
msgid "Undefined"
msgstr "Udefineret"
#. Translators: title of add-on parameters dialog.
-#: addon\globalPlugins\brailleExtender\settings.py:979
+#: addon/globalPlugins/brailleExtender/settings.py:909
msgid "Settings"
msgstr "Indstillinger"
-#: addon\globalPlugins\brailleExtender\updateCheck.py:61
+#. Translators: label of a dialog.
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:244
+#, fuzzy
+#| msgid "Representation"
+msgid "Representation &method"
+msgstr "Repræsentation"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:252
+#, python-brace-format
+msgid "Other dot pattern (e.g.: {dotPatternSample})"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:254
+#, python-brace-format
+msgid "Other sign/pattern (e.g.: {signPatternSample})"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:272
+msgid "Specify another pattern"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:276
+msgid "Describe undefined characters if possible"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:284
+msgid "Also describe extended characters (e.g.: country flags)"
+msgstr ""
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:291
+msgid "Start tag"
+msgstr "Start tag"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:296
+msgid "End tag"
+msgstr "Afslut tag"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:307
+msgid "Language"
+msgstr "Sprog"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:310
+#, fuzzy
+#| msgid "Use the current input table"
+msgid "Use the current output table"
+msgstr "Brug den aktuelle indskrivningstabel"
+
+#: addon/globalPlugins/brailleExtender/undefinedChars.py:323
+msgid "Braille table"
+msgstr "Punkttabel"
+
+#: addon/globalPlugins/brailleExtender/updateCheck.py:61
#, python-format
msgid "New version available, version %s. Do you want to download it now?"
msgstr "Ny version tilgængelig, version %s. Ønsker du at hente den nu?"
-#: addon\globalPlugins\brailleExtender\updateCheck.py:72
+#: addon/globalPlugins/brailleExtender/updateCheck.py:72
#, python-format
msgid "You are up-to-date. %s is the latest version."
msgstr "Du er up-to-date. %s er den seneste version."
-#: addon\globalPlugins\brailleExtender\updateCheck.py:81
+#: addon/globalPlugins/brailleExtender/updateCheck.py:81
#, python-format
msgid ""
"Oops! There was a problem downloading for update. Please retry later or "
@@ -2146,78 +2272,78 @@ msgstr ""
"igen senere eller hent og installér nanuelt via %s. Ønsker du at åbne denne "
"URL i din browser nu?"
-#: addon\globalPlugins\brailleExtender\updateCheck.py:115
+#: addon/globalPlugins/brailleExtender/updateCheck.py:115
msgid "An update check dialog is already running!"
msgstr "Der kører allerede en opdateringsdialog!"
-#: addon\globalPlugins\brailleExtender\updateCheck.py:116
+#: addon/globalPlugins/brailleExtender/updateCheck.py:116
#, python-brace-format
msgid "{addonName}'s update"
msgstr "{addonName}'s opdatering"
-#: addon\globalPlugins\brailleExtender\utils.py:191
+#: addon/globalPlugins/brailleExtender/utils.py:194
msgid "Reload successful"
msgstr "Genindlæsning fuldført"
-#: addon\globalPlugins\brailleExtender\utils.py:194
+#: addon/globalPlugins/brailleExtender/utils.py:197
msgid "Reload failed"
msgstr "Genindlæsning fejlede"
-#: addon\globalPlugins\brailleExtender\utils.py:200
-#: addon\globalPlugins\brailleExtender\utils.py:215
+#: addon/globalPlugins/brailleExtender/utils.py:203
+#: addon/globalPlugins/brailleExtender/utils.py:218
msgid "Not a character"
msgstr "Ikke et tegn"
-#: addon\globalPlugins\brailleExtender\utils.py:205
+#: addon/globalPlugins/brailleExtender/utils.py:208
msgid "N/A"
msgstr "N/A"
-#: addon\globalPlugins\brailleExtender\utils.py:309
+#: addon/globalPlugins/brailleExtender/utils.py:312
msgid "Available combinations"
msgstr "Tilgængelige kombinationer"
-#: addon\globalPlugins\brailleExtender\utils.py:311
+#: addon/globalPlugins/brailleExtender/utils.py:314
msgid "One combination available"
msgstr "Der findes én kombination"
-#: addon\globalPlugins\brailleExtender\utils.py:322
+#: addon/globalPlugins/brailleExtender/utils.py:325
msgid "space"
msgstr "mellemrum"
-#: addon\globalPlugins\brailleExtender\utils.py:323
+#: addon/globalPlugins/brailleExtender/utils.py:326
msgid "left SHIFT"
msgstr "venstre SHIFT"
-#: addon\globalPlugins\brailleExtender\utils.py:324
+#: addon/globalPlugins/brailleExtender/utils.py:327
msgid "right SHIFT"
msgstr "højre SHIFT"
-#: addon\globalPlugins\brailleExtender\utils.py:325
+#: addon/globalPlugins/brailleExtender/utils.py:328
msgid "left selector"
msgstr "venstre vælger"
-#: addon\globalPlugins\brailleExtender\utils.py:326
+#: addon/globalPlugins/brailleExtender/utils.py:329
msgid "right selector"
msgstr "højre vælger"
-#: addon\globalPlugins\brailleExtender\utils.py:327
+#: addon/globalPlugins/brailleExtender/utils.py:330
msgid "dot"
msgstr "prik"
-#: addon\globalPlugins\brailleExtender\utils.py:342
+#: addon/globalPlugins/brailleExtender/utils.py:345
#, python-brace-format
msgid "{gesture} on {brailleDisplay}"
msgstr "{gesture} på {brailleDisplay}"
-#: addon\globalPlugins\brailleExtender\utils.py:419
+#: addon/globalPlugins/brailleExtender/utils.py:422
msgid "No text"
msgstr "Ingen tekst"
-#: addon\globalPlugins\brailleExtender\utils.py:428
+#: addon/globalPlugins/brailleExtender/utils.py:431
msgid "Not text"
msgstr "Ikke tekst"
-#: addon\globalPlugins\brailleExtender\utils.py:448
+#: addon/globalPlugins/brailleExtender/utils.py:451
msgid "No text selected"
msgstr "Ingen tekst valgt"
@@ -2332,6 +2458,12 @@ msgstr ""
msgid "actions and quick navigation through a rotor"
msgstr "handlinger og hurtig navigering via en rotor"
+#~ msgid "Braille &dictionaries"
+#~ msgstr "Punktskrift&ordbøger"
+
+#~ msgid "French"
+#~ msgstr "Fransk"
+
#, python-format
#~ msgid "%s braille display"
#~ msgstr "%s punktdisplay"
From 8c82a2f5b67b73a48ce8b3a30d2e93662bb14a27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9-Abush=20Clause?=
Date: Thu, 7 May 2020 15:43:14 +0200
Subject: [PATCH 87/87] Try to fix #54
---
addon/globalPlugins/brailleExtender/patchs.py | 2 +-
.../brailleExtender/undefinedChars.py | 110 ++++++++++--------
2 files changed, 62 insertions(+), 50 deletions(-)
diff --git a/addon/globalPlugins/brailleExtender/patchs.py b/addon/globalPlugins/brailleExtender/patchs.py
index a39bb6e7..131ad035 100644
--- a/addon/globalPlugins/brailleExtender/patchs.py
+++ b/addon/globalPlugins/brailleExtender/patchs.py
@@ -120,7 +120,7 @@ def update(self):
mode=mode,
cursorPos=self.cursorPos
)
- if config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [configBE.CHOICE_liblouis, configBE.CHOICE_HUC8, configBE.CHOICE_HUC6, configBE.CHOICE_hex, configBE.CHOICE_dec, configBE.CHOICE_oct, configBE.CHOICE_bin]:
+ if config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] != configBE.CHOICE_tableBehaviour:
undefinedChars.undefinedCharProcess(self)
if self.selectionStart is not None and self.selectionEnd is not None:
try:
diff --git a/addon/globalPlugins/brailleExtender/undefinedChars.py b/addon/globalPlugins/brailleExtender/undefinedChars.py
index 28edaa47..3f6f8522 100644
--- a/addon/globalPlugins/brailleExtender/undefinedChars.py
+++ b/addon/globalPlugins/brailleExtender/undefinedChars.py
@@ -43,30 +43,9 @@ def getHardValue():
def setUndefinedChar(t=None):
- if not t or t > CHOICE_HUC6 or t < 0:
- t = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
- if t == 0:
- return
- c = [
- "default",
- "12345678",
- "123456",
- "0",
- config.conf["brailleExtender"]["undefinedCharsRepr"]["hardDotPatternValue"],
- "questionMark",
- "sign",
- ] + [HUCDotPattern] * 7
- v = c[t]
- if v in ["questionMark", "sign"]:
- if v == "questionMark":
- s = "?"
- else:
- s = getHardValue()
- v = huc.unicodeBrailleToDescription(
- getTextInBraille(s, getCurrentBrailleTables())
- )
- louis.compileString(getCurrentBrailleTables(),
- bytes("undefined %s" % v, "ASCII"))
+ if not t or t > CHOICE_HUC6 or t < 0: t = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
+ if t == 0: return
+ louis.compileString(getCurrentBrailleTables(), bytes(f"undefined {HUCDotPattern}", "ASCII"))
def getExtendedSymbolsForString(s: str) -> dict:
@@ -78,13 +57,14 @@ def getExtendedSymbolsForString(s: str) -> dict:
def getDescChar(c, lang="Windows", start="", end=""):
+ method = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
if lang == "Windows":
lang = languageHandler.getLanguage()
desc = characterProcessing.processSpeechSymbols(
lang, c, characterProcessing.SYMLVL_CHAR
).replace(' ', '').strip()
if not desc or desc == c:
- if config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
+ if method in [
configBE.CHOICE_HUC6,
configBE.CHOICE_HUC8,
]:
@@ -93,8 +73,15 @@ def getDescChar(c, lang="Windows", start="", end=""):
== configBE.CHOICE_HUC6
)
return huc.translate(c, HUC6=HUC6)
- else:
+ elif method in [
+ configBE.CHOICE_bin,
+ configBE.CHOICE_oct,
+ configBE.CHOICE_dec,
+ configBE.CHOICE_hex
+ ]:
return getTextInBraille("".join(getUnicodeNotation(c)))
+ else:
+ return getUndefinedCharSign(method)
return f"{start}{desc}{end}"
@@ -122,7 +109,17 @@ def getUnicodeNotation(s, notation=None):
return s
+def getUndefinedCharSign(method):
+ if method == configBE.CHOICE_allDots8: return '⣿'
+ elif method == configBE.CHOICE_allDots6: return '⠿'
+ elif method == configBE.CHOICE_otherDots: return huc.cellDescriptionsToUnicodeBraille(config.conf["brailleExtender"]["undefinedCharsRepr"]["hardDotPatternValue"])
+ elif method == configBE.CHOICE_questionMark: return getTextInBraille('?')
+ elif method == configBE.CHOICE_otherSign: return getTextInBraille(config.conf["brailleExtender"]["undefinedCharsRepr"]["hardSignPatternValue"])
+ else: return '⠀'
+
+
def undefinedCharProcess(self):
+ method = config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
extendedSymbolsRawText = {}
if config.conf["brailleExtender"]["undefinedCharsRepr"]["extendedDesc"]:
extendedSymbolsRawText = getExtendedSymbolsForString(self.rawText)
@@ -175,32 +172,37 @@ def undefinedCharProcess(self):
start=start,
end=end,
),
- table=[config.conf["brailleExtender"]
- ["undefinedCharsRepr"]["table"]],
+ table=[config.conf["brailleExtender"]["undefinedCharsRepr"]["table"]],
)
for braillePos in allBraillePos
}
- elif config.conf["brailleExtender"]["undefinedCharsRepr"]["method"] in [
- configBE.CHOICE_HUC6,
- configBE.CHOICE_HUC8,
+ elif method in [
+ configBE.CHOICE_HUC6,
+ configBE.CHOICE_HUC8,
]:
- HUC6 = (
- config.conf["brailleExtender"]["undefinedCharsRepr"]["method"]
- == configBE.CHOICE_HUC6
- )
+ HUC6 = method == configBE.CHOICE_HUC6
replacements = {
- braillePos: huc.translate(
- self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6
- )
+ braillePos: huc.translate(self.rawText[self.brailleToRawPos[braillePos]], HUC6=HUC6)
for braillePos in allBraillePos
}
- else:
+ elif method in [
+ configBE.CHOICE_bin,
+ configBE.CHOICE_oct,
+ configBE.CHOICE_dec,
+ configBE.CHOICE_hex,
+ ]:
replacements = {
braillePos: getUnicodeNotation(
- self.rawText[self.brailleToRawPos[braillePos]]
+ self.rawText[self.brailleToRawPos[braillePos]],
+ method
)
for braillePos in allBraillePos
}
+ else:
+ replacements = {
+ braillePos: getUndefinedCharSign(method)
+ for braillePos in allBraillePos
+ }
newBrailleCells = []
newBrailleToRawPos = []
newRawToBraillePos = []
@@ -209,13 +211,11 @@ def undefinedCharProcess(self):
i = 0
for iBrailleCells, brailleCells in enumerate(self.brailleCells):
brailleToRawPos = self.brailleToRawPos[iBrailleCells]
- if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(
- undefinedCharPattern[0]
- ):
+ if iBrailleCells in replacements and not replacements[iBrailleCells].startswith(undefinedCharPattern):
toAdd = [ord(c) - 10240 for c in replacements[iBrailleCells]]
newBrailleCells += toAdd
newBrailleToRawPos += [i] * len(toAdd)
- alreadyDone += list(range(iBrailleCells, iBrailleCells + 3))
+ alreadyDone += list(range(iBrailleCells, iBrailleCells + len(undefinedCharPattern)))
i += 1
else:
if iBrailleCells in alreadyDone:
@@ -223,19 +223,31 @@ def undefinedCharProcess(self):
newBrailleCells.append(self.brailleCells[iBrailleCells])
newBrailleToRawPos += [i]
if (iBrailleCells + 1) < lenBrailleToRawPos and self.brailleToRawPos[
- iBrailleCells + 1
+ iBrailleCells + 1
] != brailleToRawPos:
i += 1
- pos = -42
+ lastPos = -42
for i, brailleToRawPos in enumerate(newBrailleToRawPos):
- if brailleToRawPos != pos:
- pos = brailleToRawPos
+ if brailleToRawPos != lastPos:
+ lastPos = brailleToRawPos
newRawToBraillePos.append(i)
self.brailleCells = newBrailleCells
self.brailleToRawPos = newBrailleToRawPos
self.rawToBraillePos = newRawToBraillePos
if self.cursorPos:
- self.brailleCursorPos = self.rawToBraillePos[self.cursorPos]
+ if len(self.rawToBraillePos) > self.cursorPos:
+ self.brailleCursorPos = self.rawToBraillePos[self.cursorPos]
+ else:
+ log.error(("error during adding undefined char descriptions:\n"
+ f"cursorPos: {self.cursorPos}\n"
+ f"brailleCursorPos: {self.brailleCursorPos}\n"
+ f"brailleCells: {self.brailleCells}\n"
+ f"=> {''.join([chr(c+10240) for c in self.brailleCells])}\n"
+ f"==> {len(self.brailleCells)}\n"
+ f"brailleToRawPos: {self.brailleToRawPos}\n"
+ f"rawToBraillePos: {self.rawToBraillePos}\n"
+ f"rawText: {self.rawText}"
+ ))
class SettingsDlg(gui.settingsDialogs.SettingsPanel):