Provides a wizard that assists the user in loading a word list from a picture or scan of a real-world word list. (E.g. out of a book). The actual logic is in the ocrWordListLoader module, although some work around that (making the image ready) is done by this module.
Type: | ocrGui |
Uses (at least one of): |
TranslatorModule >
|
Requires (at least one of): |
GuiModule >
OcrWordListLoaderModule > ButtonRegisterModule > WordListStringComposerModule > JSWordListStringComposerModule > LoaderGuiModule > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 | #! /usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2013, Marten de Vries
#
# This file is part of OpenTeacher.
#
# OpenTeacher is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenTeacher is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenTeacher. If not, see <http://www.gnu.org/licenses/>.
import os
import tempfile
import contextlib
def installQtClasses():
global OcrWizard
class ImageView(QtWidgets.QGraphicsView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setScene(QtWidgets.QGraphicsScene())
self._rect = self.scene().addRect(0.0, 0.0, 0.0, 0.0)
self._rect.setZValue(1)
self._imageItem = None
def wheelEvent(self, event):
factor = 1.1
if event.angleDelta().y() < 0:
factor = 1.0 / factor
self.scale(factor, factor)
def updateImage(self, path):
if self._imageItem:
self.scene().removeItem(self._imageItem)
self._imageItem = self.scene().addPixmap(QtGui.QPixmap(path))
def getExcision(self):
size = self._rect.rect().size().toSize()
if size.isEmpty():
raise ValueError("Empty selection")
img = QtGui.QImage(size, QtGui.QImage.Format_ARGB32_Premultiplied)
painter = QtGui.QPainter(img)
self.scene().render(painter, QtCore.QRectF(), self._rect.rect())
return img
def updateRotation(self, value):
if self._imageItem:
self._imageItem.setRotation(value)
def mousePressEvent(self, event):
self._startPos = self.mapToScene(event.pos())
def mouseReleaseEvent(self, event):
newRect = QtCore.QRectF(
self._startPos,
self.mapToScene(QtCore.QPoint(event.pos()))
).normalized()
self._rect.setRect(newRect)
mouseMoveEvent = mouseReleaseEvent
class StartPage(QtWidgets.QWizardPage):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._label = QtWidgets.QLabel()
self._label.setWordWrap(True)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self._label)
self.setLayout(vbox)
def retranslate(self):
self.setTitle(_("Introduction"))
self._label.setText(_("This wizard will guide you through the process of creating a word list from a scan or picture of a physical word list. Click 'Next' to start."))
class SignalLabel(QtWidgets.QLabel):
textChanged = QtCore.pyqtSignal()
def setText(self, *args, **kwargs):
result = super().setText(*args, **kwargs)
self.textChanged.emit()
return result
class ImageChoicePage(QtWidgets.QWizardPage):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._label = QtWidgets.QLabel()
self._label.setWordWrap(True)
self._chooseLocationButton = QtWidgets.QPushButton()
self._chooseLocationButton.clicked.connect(self._chooseLocationClicked)
self._locationLabelLabel = QtWidgets.QLabel()
self._locationLabel = SignalLabel()
self.registerField("path", self._locationLabel, "text", self._locationLabel.textChanged)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self._label)
vbox.addWidget(self._chooseLocationButton)
vbox.addWidget(self._locationLabelLabel)
vbox.addWidget(self._locationLabel)
self.setLayout(vbox)
def retranslate(self):
self.setTitle(_("Choose an image"))
self._label.setText(_("Please choose the location of the scan or picture of the physical word list on your system below."))
self._chooseLocationButton.setText(_("Click here to choose a location"))
self._locationLabelLabel.setText(_("Location:"))
def _chooseLocationClicked(self):
extsList = map(str, QtGui.QImageReader.supportedImageFormats())
exts = "*." + " *.".join(extsList)
filter = _("Images ({extensions})".format(extensions=exts))
path = QtWidgets.QFileDialog.getOpenFileName(self, filter=filter)[0]
if path:
self._locationLabel.setText(path)
self.completeChanged.emit()
def isComplete(self):
path = self._locationLabel.text()
return os.path.exists(path)
class ImageEditPage(QtWidgets.QWizardPage):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._label1 = QtWidgets.QLabel()
self._label2 = QtWidgets.QLabel()
self._label1.setWordWrap(True)
self._label2.setWordWrap(True)
self._view = ImageView()
self._rotationSlider = QtWidgets.QSlider()
self._rotationSlider.setOrientation(QtCore.Qt.Horizontal)
self._rotationSlider.setMinimum(-180)
self._rotationSlider.setMaximum(180)
self._rotationSlider.valueChanged.connect(self._view.updateRotation)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self._label1)
vbox.addWidget(self._rotationSlider)
vbox.addWidget(self._label2)
vbox.addWidget(self._view)
self.setLayout(vbox)
def initializePage(self):
path = self.field("path")
self._view.updateImage(path)
def retranslate(self):
self.setTitle(_("Make image ready"))
self._label1.setText(_("Please make sure the image is rotated completely upright with the rotation slider under this text:"))
self._label2.setText(_("When the image is completely upright, make a selection on the image with the mouse with in the left top the first question to include and in the right bottom the last answer to include. Click 'Next' when done."))
def getExcision(self):
return self._view.getExcision()
class OcrThread(QtCore.QThread):
def __init__(self, loadWordList, img, *args, **kwargs):
super().__init__(*args, **kwargs)
self._loadWordList = loadWordList
self._img = img
def run(self):
fd, imgPath = tempfile.mkstemp(".png")
os.close(fd)
self._img.save(imgPath)
self.lesson = self._loadWordList(imgPath)
os.remove(imgPath)
class PreviewPage(QtWidgets.QWizardPage):
def __init__(self, loadWordList, composeList, *args, **kwargs):
super().__init__(*args, **kwargs)
self._loadWordList = loadWordList
self._composeList = composeList
self._label = QtWidgets.QLabel()
self._label.setWordWrap(True)
self._previewTextEdit = QtWidgets.QTextEdit()
self._previewTextEdit.setReadOnly(True)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self._label)
vbox.addWidget(self._previewTextEdit)
self.setLayout(vbox)
def initializePage(self):
try:
image = self.wizard().getExcision()
except ValueError:
QtWidgets.QMessageBox.critical(self, _("No selection was made"), _("No selection was made. Please try again."))
#next event loop iteration, otherwise Qt messes up
#completely (combining multiple pages).
QtCore.QTimer.singleShot(0, self.wizard().back)
return
self._thread = OcrThread(self._loadWordList, image)
self._thread.finished.connect(self._showPreview)
self._thread.start()
self._dialog = QtWidgets.QProgressDialog(self, QtCore.Qt.CustomizeWindowHint | QtCore.Qt.WindowTitleHint)
self._dialog.setWindowTitle(_("Recognizing word list..."))
self._dialog.setLabelText(_("Recognizing word list..."))
self._dialog.setCancelButton(None)
self._dialog.setRange(0, 0)
self._dialog.setModal(True)
self._dialog.show()
def _showPreview(self):
self._dialog.hide()
self.lesson = self._thread.lesson
text = self._composeList(self.lesson)
self._previewTextEdit.setText(text)
def retranslate(self):
self._label.setText(_("Down here, you can see a preview of the result. There will probably be some wrongly recognized words in there, but the structure of the word list should be recognizable. If not, click 'Back' and try again. Otherwise, click 'Finish'."))
self.setTitle(_("Result preview"))
class OcrWizard(QtWidgets.QWizard):
def __init__(self, loadWordList, composeList, *args, **kwargs):
super().__init__(*args, **kwargs)
self._imageEditPage = ImageEditPage()
self._previewPage = PreviewPage(loadWordList, composeList)
self._pages = [
StartPage(),
ImageChoicePage(),
self._imageEditPage,
self._previewPage,
]
for page in self._pages:
self.addPage(page)
self.setWizardStyle(QtWidgets.QWizard.ClassicStyle)
def getExcision(self):
return self._imageEditPage.getExcision()
def getLesson(self):
return self._previewPage.lesson
def retranslate(self):
for page in self._pages:
page.retranslate()
class OcrGuiModule:
"""Provides a wizard that assists the user in loading a word list
from a picture or scan of a real-world word list. (E.g. out of a
book). The actual logic is in the ocrWordListLoader module,
although some work around that (making the image ready) is done
by this module.
"""
def __init__(self, moduleManager, *args, **kwargs):
super().__init__(*args, **kwargs)
self._mm = moduleManager
self.type = "ocrGui"
self.requires = (
self._mm.mods(type="ui"),
self._mm.mods(type="ocrWordListLoader"),
self._mm.mods(type="buttonRegister"),
self._mm.mods(type="wordListStringComposer"),
self._mm.mods(type="loaderGui"),
)
self.uses = (
self._mm.mods(type="translator"),
)
self.priorities = {
"all": 975,
}
self.filesWithTranslations = ("ocrGui.py",)
def enable(self):
global QtCore, QtGui, QtWidgets
try:
from PyQt5 import QtCore, QtGui, QtWidgets
except ImportError:
return
installQtClasses()
self._modules = next(iter(self._mm.mods(type="modules")))
self._button = self._modules.default("active", type="buttonRegister").registerButton("create")
self._button.clicked.handle(self._startWizard)
self._button.changePriority.send(self.priorities["all"])
self._button.changeSize.send("small")
try:
translator = self._modules.default("active", type="translator")
except IndexError:
pass
else:
translator.languageChanged.handle(self._retranslate)
self._retranslate()
self.active = True
_uiModule = property(lambda self: self._modules.default("active", type="ui"))
_loadWordList = property(lambda self: self._modules.default("active", type="ocrWordListLoader").loadWordList)
_composeList = property(lambda self: self._modules.default("active", type="wordListStringComposer").composeList)
_loadFromLesson = property(lambda self: self._modules.default("active", type="loaderGui").loadFromLesson)
def _startWizard(self):
self._wizard = OcrWizard(self._loadWordList, self._composeList)
tab = self._uiModule.addCustomTab(self._wizard)
tab.closeRequested.handle(self._wizard.reject)
self._wizard.tab = tab
self._retranslate()
self._wizard.finished.connect(tab.close)
self._wizard.accepted.connect(self._loadResultiveLesson)
def _loadResultiveLesson(self):
lesson = self._wizard.getLesson()
with contextlib.suppress(NotImplementedError):
self._loadFromLesson("words", lesson)
def _retranslate(self):
global _, ngettext
try:
translator = self._modules.default("active", type="translator")
except IndexError:
_, ngettext = str, lambda a, b, n: a if n == 1 else b
else:
_, ngettext = translator.gettextFunctions(
self._mm.resourcePath("translations")
)
self._button.changeText.send(_("Create words lesson from a scan or picture"))
if hasattr(self, "_wizard"):
self._wizard.retranslate()
self._wizard.setWindowTitle(_("Words lesson from picture"))
self._wizard.tab.title = self._wizard.windowTitle()
def disable(self):
self.active = False
del self._modules
del self._button
if hasattr(self, "_wizard"):
del self._pages
def init(moduleManager):
return OcrGuiModule(moduleManager)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | # English (United Kingdom) translation for openteacher
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openteacher package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openteacher\n"
"Report-Msgid-Bugs-To: openteachermaintainers@lists.launchpad.net\n"
"POT-Creation-Date: 2017-04-22 15:54+0200\n"
"PO-Revision-Date: 2013-10-30 21:50+0000\n"
"Last-Translator: Andi Chandler <Unknown>\n"
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-12 06:32+0000\n"
"X-Generator: Launchpad (build 18343)\n"
#: ocrGui.py:86
msgid "Introduction"
msgstr "Introduction"
#: ocrGui.py:87
msgid ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
msgstr ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
#: ocrGui.py:119
msgid "Choose an image"
msgstr "Choose an image"
#: ocrGui.py:121
msgid ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
msgstr ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
#: ocrGui.py:122
msgid "Click here to choose a location"
msgstr "Click here to choose a location"
#: ocrGui.py:123
msgid "Location:"
msgstr "Location:"
#: ocrGui.py:128
#, python-brace-format
msgid "Images ({extensions})"
msgstr "Images ({extensions})"
#: ocrGui.py:166
msgid "Make image ready"
msgstr "Make image ready"
#: ocrGui.py:167
msgid ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
msgstr ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
#: ocrGui.py:168
msgid ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
msgstr ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
#: ocrGui.py:210
msgid "No selection was made"
msgstr "No selection was made"
#: ocrGui.py:210
msgid "No selection was made. Please try again."
msgstr "No selection was made. Please try again."
#: ocrGui.py:221 ocrGui.py:222
msgid "Recognizing word list..."
msgstr "Recognising word list..."
#: ocrGui.py:235
msgid ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognized words in there, but the structure of the word list should "
"be recognizable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
msgstr ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognised words in there, but the structure of the word list should "
"be recognisable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
#: ocrGui.py:236
msgid "Result preview"
msgstr "Result preview"
#: ocrGui.py:351
msgid "Create words lesson from a scan or picture"
msgstr "Create words lesson from a scan or picture"
#: ocrGui.py:354
msgid "Words lesson from picture"
msgstr "Words lesson from picture"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # Dutch translation for openteacher
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openteacher package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openteacher\n"
"Report-Msgid-Bugs-To: openteachermaintainers@lists.launchpad.net\n"
"POT-Creation-Date: 2017-04-22 15:54+0200\n"
"PO-Revision-Date: 2013-04-02 17:28+0000\n"
"Last-Translator: Marten de Vries <m@rtendevri.es>\n"
"Language-Team: Dutch <nl@li.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-12 06:32+0000\n"
"X-Generator: Launchpad (build 18343)\n"
#: ocrGui.py:86
msgid "Introduction"
msgstr "Introductie"
#: ocrGui.py:87
msgid ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
msgstr ""
"Deze assistent zal je door het proces van het maken van een woordjeslijst "
"van een scan of een foto van een fysieke woordjeslijst voeren. Klik "
"'Volgende' om te beginnen."
#: ocrGui.py:119
msgid "Choose an image"
msgstr "Selecteer een afbeelding"
#: ocrGui.py:121
msgid ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
msgstr ""
"Kies alstublieft hieronder de locatie van de scan of foto van de fysieke "
"woordjeslijst op uw systeem."
#: ocrGui.py:122
msgid "Click here to choose a location"
msgstr "Klik hier om een locatie te kiezen"
#: ocrGui.py:123
msgid "Location:"
msgstr "Locatie:"
#: ocrGui.py:128
#, python-brace-format
msgid "Images ({extensions})"
msgstr "Afbeeldingen ({extensions})"
#: ocrGui.py:166
msgid "Make image ready"
msgstr "Afbeelding voorbereiden"
#: ocrGui.py:167
msgid ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
msgstr ""
"Zorg er alstublieft voor dat de afbeelding precies rechtop gedraaid is met "
"de rotatieschuifregelaar onder deze tekst:"
#: ocrGui.py:168
msgid ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
msgstr ""
"Maak een selectie met de muis wanneer de afbeelding precies rechtop staat, "
"met in de linker bovenhoek de eerste vraag en in de rechter onderhoek het "
"laatste antwoord om in te lezen."
#: ocrGui.py:210
msgid "No selection was made"
msgstr "Geen selectie gemaakt"
#: ocrGui.py:210
msgid "No selection was made. Please try again."
msgstr "Er is geen selectie gemaakt. Probeer het alstublieft opnieuw."
#: ocrGui.py:221 ocrGui.py:222
msgid "Recognizing word list..."
msgstr "Woordjeslijst herkennen..."
#: ocrGui.py:235
msgid ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognized words in there, but the structure of the word list should "
"be recognizable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
msgstr ""
"Hieronder hoort u een voorproefje van het resultaat te zien. Er zullen "
"waarschijnlijk wat verkeerd herkende woorden in zijn, maar de structuur van "
"de woordenlijst zou herkenbaar moeten zijn. Indien dat niet het geval is, "
"klik dan op 'Vorige' en probeer het opnieuw. Druk anders of 'Voltooien'."
#: ocrGui.py:236
msgid "Result preview"
msgstr "Voorproefje van het resultaat"
#: ocrGui.py:351
msgid "Create words lesson from a scan or picture"
msgstr "Maak een woordjesles van een scan of foto"
#: ocrGui.py:354
msgid "Words lesson from picture"
msgstr "Woordjesles van afbeelding"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | # Polish translation for openteacher
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openteacher package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openteacher\n"
"Report-Msgid-Bugs-To: openteachermaintainers@lists.launchpad.net\n"
"POT-Creation-Date: 2017-04-22 15:54+0200\n"
"PO-Revision-Date: 2013-04-26 00:43+0000\n"
"Last-Translator: pp/bs <Unknown>\n"
"Language-Team: Polish <pl@li.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-12 06:32+0000\n"
"X-Generator: Launchpad (build 18343)\n"
#: ocrGui.py:86
msgid "Introduction"
msgstr "Wprowadzenie"
#: ocrGui.py:87
msgid ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
msgstr ""
"Ten kreator poprowadzi cię przez proces tworzenia listy słów z obrazu "
"przedstawiającego takiego listę (np. z zeskanowanej kartki ze słowami). "
"Kliknij 'Dalej', aby rozpocząć."
#: ocrGui.py:119
msgid "Choose an image"
msgstr "Wybierz obraz"
#: ocrGui.py:121
msgid ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
msgstr "Wybierz lokalizację obrazu zawierającego listę słów."
#: ocrGui.py:122
msgid "Click here to choose a location"
msgstr "Kliknij tutaj, aby wybrać lokalizację"
#: ocrGui.py:123
msgid "Location:"
msgstr "Lokalizacja:"
#: ocrGui.py:128
#, python-brace-format
msgid "Images ({extensions})"
msgstr "Obrazy ({rozszerzenia})"
#: ocrGui.py:166
msgid "Make image ready"
msgstr "Przygotuj obraz"
#: ocrGui.py:167
msgid ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
msgstr ""
"Upewnij się, że obraz jest obrócony całkowicie do pionu, używając poniższego "
"suwaka do obracania obrazu:"
#: ocrGui.py:168
msgid ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
msgstr ""
"Po obróceniu obrazu całkowicie do pionu zaznacz za pomocą myszy odpowiednią "
"część obrazu, tak aby w lewym górnym rogu znalazło się pierwsze pytanie do "
"uwzględnienia, a w prawym dolnym rogu ostatnie pytanie do uwzględnienia. Po "
"zaznaczeniu odpowiedniego fragmentu obrazu kliknij 'Dalej'."
#: ocrGui.py:210
msgid "No selection was made"
msgstr "Niczego nie zaznaczono"
#: ocrGui.py:210
msgid "No selection was made. Please try again."
msgstr "Niczego nie zaznaczono. Spróbuj ponownie."
#: ocrGui.py:221 ocrGui.py:222
msgid "Recognizing word list..."
msgstr "Rozpoznawanie listy słów..."
#: ocrGui.py:235
msgid ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognized words in there, but the structure of the word list should "
"be recognizable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
msgstr ""
"Tutaj, w dolnej części możesz zobaczyć podgląd. Prawdopodobnie niektóre "
"słowa będą rozpoznane błędnie, ale struktura listy słów powinna zostać "
"zachowana. Jeśli tak nie jest, kliknij 'Wstecz' i spróbuj ponownie. W "
"przeciwnym razie kliknij 'Zakończ'."
#: ocrGui.py:236
msgid "Result preview"
msgstr "Podgląd wyników"
#: ocrGui.py:351
msgid "Create words lesson from a scan or picture"
msgstr "Utwórz lekcję słów z obrazu (np. zeskanowanej kartki)"
#: ocrGui.py:354
msgid "Words lesson from picture"
msgstr "Lekcja słów z obrazu"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | # Brazilian Portuguese translation for openteacher
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openteacher package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openteacher\n"
"Report-Msgid-Bugs-To: openteachermaintainers@lists.launchpad.net\n"
"POT-Creation-Date: 2017-04-22 15:54+0200\n"
"PO-Revision-Date: 2013-10-26 22:17+0000\n"
"Last-Translator: Adriano Steffler <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-12 06:32+0000\n"
"X-Generator: Launchpad (build 18343)\n"
#: ocrGui.py:86
msgid "Introduction"
msgstr "Introdução"
#: ocrGui.py:87
msgid ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
msgstr ""
"Este assistente guiá-lo-á através do processo de criação de uma lista de "
"palavras a partir de uma varredura ou de uma imagem de uma lista de palavras "
"física. Clique em 'Next' para começar."
#: ocrGui.py:119
msgid "Choose an image"
msgstr "Escolha uma imagem"
#: ocrGui.py:121
msgid ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
msgstr ""
"Por favor, escolha o local do arquivo escaneado ou da imagem da lista de "
"palavras física no seu sistema abaixo."
#: ocrGui.py:122
msgid "Click here to choose a location"
msgstr "Clique aqui para escolher um local"
#: ocrGui.py:123
msgid "Location:"
msgstr "Local:"
#: ocrGui.py:128
#, python-brace-format
msgid "Images ({extensions})"
msgstr "Imagens ({extensões})"
#: ocrGui.py:166
msgid "Make image ready"
msgstr "Criar a imagem"
#: ocrGui.py:167
msgid ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
msgstr ""
"Por favor, certifique-se de que a imagem esteja virada na posição vertical "
"com a barra de rotação sob este texto:"
#: ocrGui.py:168
msgid ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
msgstr ""
"Quando a imagem estivar totalmente na posição vertical, faça uma seleção na "
"imagem com o mause, com a primeira questão a incluir no canto superior "
"direito e a última questão a incluir canto inferior direito. Clique em "
"\"Próximo\" quando estiver pronto."
#: ocrGui.py:210
msgid "No selection was made"
msgstr "Nenhuma seleção foi feita."
#: ocrGui.py:210
msgid "No selection was made. Please try again."
msgstr "Nenhuma seleção foi feita. Por favor, tente novamente."
#: ocrGui.py:221 ocrGui.py:222
msgid "Recognizing word list..."
msgstr "Reconhecendo lista de palavras..."
#: ocrGui.py:235
msgid ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognized words in there, but the structure of the word list should "
"be recognizable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
msgstr ""
"Aqui você pode ver uma previsão do resultado. Provavelmente haverá algumas "
"palavras incorretamente reconhecidas aqui, mas a estrutura da lista de "
"palavras será reconhecível. Se não, clique \"Voltar\" e tente novamente. "
"Caso contrário, clique em \"Concluir\"."
#: ocrGui.py:236
msgid "Result preview"
msgstr "Visualização do resultado"
#: ocrGui.py:351
msgid "Create words lesson from a scan or picture"
msgstr ""
"Criar uma lição de palavras a partir de um arquivo escaneado ou de uma imagem"
#: ocrGui.py:354
msgid "Words lesson from picture"
msgstr "Lição de palavras de uma imagem"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # Russian translation for openteacher
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openteacher package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openteacher\n"
"Report-Msgid-Bugs-To: openteachermaintainers@lists.launchpad.net\n"
"POT-Creation-Date: 2017-04-22 15:54+0200\n"
"PO-Revision-Date: 2013-12-18 17:52+0000\n"
"Last-Translator: Pasha. P. Komar <Unknown>\n"
"Language-Team: Russian <ru@li.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-12 06:32+0000\n"
"X-Generator: Launchpad (build 18343)\n"
#: ocrGui.py:86
msgid "Introduction"
msgstr "Введение"
#: ocrGui.py:87
msgid ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
msgstr ""
"Мастер настройки будет подсказывать Вам в процессе создания списка слов из "
"картинки или отсканированного изображения. Чтобы начать, нажмите 'Далее'."
#: ocrGui.py:119
msgid "Choose an image"
msgstr "Выберите изображение"
#: ocrGui.py:121
msgid ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
msgstr ""
"Выберите ниже расположение картинки или отсканированного изображения списка "
"слов."
#: ocrGui.py:122
msgid "Click here to choose a location"
msgstr "Выбрать расположение"
#: ocrGui.py:123
msgid "Location:"
msgstr "Расположение:"
#: ocrGui.py:128
#, python-brace-format
msgid "Images ({extensions})"
msgstr "Изображения ({extensions})"
#: ocrGui.py:166
msgid "Make image ready"
msgstr "Подготовка изображения"
#: ocrGui.py:167
msgid ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
msgstr ""
"Убедитесь, что изображение развернуто вертикально. Для вращения используйте "
"ползунок по этим текстом:"
#: ocrGui.py:168
msgid ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
msgstr ""
"Когда изображение стало вертикальным, выделите необходимую на нем область с "
"вопросами. Для этого, зажмите клавишу мыши в левом верхнем углу "
"предполагаемого списка вопросов и протяните до правого нижнего угла. Когда "
"закончите, нажмите 'Далее'."
#: ocrGui.py:210
msgid "No selection was made"
msgstr "Вы ничего не выбрали"
#: ocrGui.py:210
msgid "No selection was made. Please try again."
msgstr "Вы ничего не выбрали. Повторите выбор."
#: ocrGui.py:221 ocrGui.py:222
msgid "Recognizing word list..."
msgstr "Распознавание списка слов..."
#: ocrGui.py:235
msgid ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognized words in there, but the structure of the word list should "
"be recognizable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
msgstr ""
"Здесь Вы можете увидеть предварительный результат. Возможно наличие "
"некоторых неправильно распознанных слов, но структура списка слов должна "
"быть узнаваема. Если нет, нажмите 'Назад' и попробуйте снова. Если всё "
"нормально, нажмите 'Завершить'."
#: ocrGui.py:236
msgid "Result preview"
msgstr "Предварительный просмотр"
#: ocrGui.py:351
msgid "Create words lesson from a scan or picture"
msgstr "Создать список слов из картинки или отсканированного изображения"
#: ocrGui.py:354
msgid "Words lesson from picture"
msgstr "Список слов из изображения"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | # Turkish translation for openteacher
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openteacher package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openteacher\n"
"Report-Msgid-Bugs-To: openteachermaintainers@lists.launchpad.net\n"
"POT-Creation-Date: 2017-04-22 15:54+0200\n"
"PO-Revision-Date: 2013-04-29 12:23+0000\n"
"Last-Translator: kodadiirem <Unknown>\n"
"Language-Team: Turkish <tr@li.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-12 06:32+0000\n"
"X-Generator: Launchpad (build 18343)\n"
#: ocrGui.py:86
msgid "Introduction"
msgstr "Giriş"
#: ocrGui.py:87
msgid ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
msgstr ""
"Bu sihirbaz size bir resminden ya da taranmış halinden kelime listesini "
"nasıl oluşturacağınıza rehberlik edecek. Başlamak için 'İleri'yi tıklayın."
#: ocrGui.py:119
msgid "Choose an image"
msgstr "Bir resim seçin"
#: ocrGui.py:121
msgid ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
msgstr ""
"Lütfen aşağıdan kelime listenizin taranmış ya da resim halinin "
"sisteminizdeki konumunu seçiniz."
#: ocrGui.py:122
msgid "Click here to choose a location"
msgstr "Konum seçmek için buraya tıklayınız."
#: ocrGui.py:123
msgid "Location:"
msgstr "Konum:"
#: ocrGui.py:128
#, python-brace-format
msgid "Images ({extensions})"
msgstr "Resimler ({extensions})"
#: ocrGui.py:166
msgid "Make image ready"
msgstr "Resimi hazır hale getir"
#: ocrGui.py:167
msgid ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
msgstr ""
"Bu metinin altındaki yönlendirme çubuğu ile resmin yönlendirmesinin yukarıya "
"doğru olduğundan emin olunuz."
#: ocrGui.py:168
msgid ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
msgstr ""
#: ocrGui.py:210
msgid "No selection was made"
msgstr "Seçim yapılmadı"
#: ocrGui.py:210
msgid "No selection was made. Please try again."
msgstr "Seçim yapılmadı. Lütfen tekrar deneyin."
#: ocrGui.py:221 ocrGui.py:222
msgid "Recognizing word list..."
msgstr "Kelime listesi tanımlanıyor..."
#: ocrGui.py:235
msgid ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognized words in there, but the structure of the word list should "
"be recognizable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
msgstr ""
#: ocrGui.py:236
msgid "Result preview"
msgstr "Sonuç ön izlemesi"
#: ocrGui.py:351
msgid "Create words lesson from a scan or picture"
msgstr "Normal ya da taranmış resimden kelimeler dersi oluştur"
#: ocrGui.py:354
msgid "Words lesson from picture"
msgstr "Resimden kelimeler dersi"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | # Chinese (Traditional) translation for openteacher
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openteacher package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openteacher\n"
"Report-Msgid-Bugs-To: openteachermaintainers@lists.launchpad.net\n"
"POT-Creation-Date: 2017-04-22 15:54+0200\n"
"PO-Revision-Date: 2013-07-21 10:00+0000\n"
"Last-Translator: Louie Chen <louie23@gmail.com>\n"
"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-12 06:32+0000\n"
"X-Generator: Launchpad (build 18343)\n"
#: ocrGui.py:86
msgid "Introduction"
msgstr "介紹"
#: ocrGui.py:87
msgid ""
"This wizard will guide you through the process of creating a word list from "
"a scan or picture of a physical word list. Click 'Next' to start."
msgstr ""
"精靈將會引導您從掃描或拍攝實體的單字列表來完成建立單字列表的過程。點擊 "
"'Next' 開始。"
#: ocrGui.py:119
msgid "Choose an image"
msgstr "選擇一個影像"
#: ocrGui.py:121
msgid ""
"Please choose the location of the scan or picture of the physical word list "
"on your system below."
msgstr "請由下方選擇掃描或拍攝的實體單字列表的位置。"
#: ocrGui.py:122
msgid "Click here to choose a location"
msgstr "在這裡點擊以選擇一個地點"
#: ocrGui.py:123
msgid "Location:"
msgstr "地點:"
#: ocrGui.py:128
#, python-brace-format
msgid "Images ({extensions})"
msgstr "圖像({extensions})"
#: ocrGui.py:166
msgid "Make image ready"
msgstr "讓圖像準備好"
#: ocrGui.py:167
msgid ""
"Please make sure the image is rotated completely upright with the rotation "
"slider under this text:"
msgstr "請確定圖像已用文字下方的轉動器旋轉至完全筆直的:"
#: ocrGui.py:168
msgid ""
"When the image is completely upright, make a selection on the image with the "
"mouse with in the left top the first question to include and in the right "
"bottom the last answer to include. Click 'Next' when done."
msgstr ""
"當圖像完全筆直,用滑鼠在圖像上做個選擇將左上角第一題包括進來及右下角最後一題"
"也包括進來。完成時點擊 \"Next\"。"
#: ocrGui.py:210
msgid "No selection was made"
msgstr "尚未選取任何東西"
#: ocrGui.py:210
msgid "No selection was made. Please try again."
msgstr "尚未選取任何東西。請再試一次。"
#: ocrGui.py:221 ocrGui.py:222
msgid "Recognizing word list..."
msgstr "辨識單字列表..."
#: ocrGui.py:235
msgid ""
"Down here, you can see a preview of the result. There will probably be some "
"wrongly recognized words in there, but the structure of the word list should "
"be recognizable. If not, click 'Back' and try again. Otherwise, click "
"'Finish'."
msgstr ""
"到這,你可以看到預覽的結果。可能會有一些辨識錯誤的字,但是單字列表的結構應該"
"可分辨。假如不是,點擊‘Back' 並重試一次。否則,點擊 'Finish'。"
#: ocrGui.py:236
msgid "Result preview"
msgstr "預覽結果"
#: ocrGui.py:351
msgid "Create words lesson from a scan or picture"
msgstr "從掃描或拍攝來建立單字課程"
#: ocrGui.py:354
msgid "Words lesson from picture"
msgstr "單字課程從拍攝"
|